- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我有一组分散在多个服务器上的 dockerized 应用程序,并尝试使用 ELK 设置生产级集中日志记录。我对 ELK 部分本身没意见,但我对如何将日志转发到我的日志存储区有点困惑。我正在尝试使用 Filebeat,因为它具有负载平衡功能。我还想避免将 Filebeat(或其他任何东西)打包到我所有的 docker 中,并保持分开,不管是否 docker 化。
我该如何继续?
我一直在尝试以下方法。我的 Docker 登录标准输出,因此我使用配置为从标准输入读取的非 dockerized Filebeat:
docker logs -f mycontainer | ./filebeat -e -c filebeat.yml
这似乎在一开始就有效。第一个日志被转发到我的logstash。我猜是缓存的。但在某些时候它会卡住并继续发送相同的事件
这只是一个错误还是我走错了方向?你设置了什么解决方案?
最佳答案
这是将 docker 日志
转发到 ELK 堆栈的一种方法(gelf 日志驱动程序需要 docker >= 1.8):
使用 gelf input plugin 启动 Logstash 容器从 gelf 读取并输出到 Elasticsearch 主机 (ES_HOST:port):
docker run --rm -p 12201:12201/udp logstash \
logstash -e 'input { gelf { } } output { elasticsearch { hosts => ["ES_HOST:PORT"] } }'
现在启动一个 Docker 容器并使用 gelf Docker logging driver .这是一个愚蠢的例子:
docker run --log-driver=gelf --log-opt gelf-address=udp://localhost:12201 busybox \
/bin/sh -c 'while true; do echo "Hello $(date)"; sleep 1; done'
加载 Kibana,本应登陆 docker logs
的内容现在可见。 gelf source code显示为您生成了一些方便的字段(帽子提示:Christophe Labouisse):_container_id
、_container_name
、_image_id
、_image_name
、_command
、_tag
、_created
。
如果您使用 docker-compose(确保使用 docker-compose >= 1.5)并在启动 logstash 容器后在 docker-compose.yml
中添加适当的设置:
log_driver: "gelf"
log_opt:
gelf-address: "udp://localhost:12201"
关于使用 Filebeat 和 Logstash 记录 Docker 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33432983/
Filebeat 简介 Filebeat用于转发和集中日志数据的轻量级传送程序。作为服务器上的代理安装,Filebeat监视指定的位置文件或位置,收集日志事件,并将他们转发到Elasticsear
我的 filebeat(来自 docker.elastic.co/beats/filebeat:6.1.2 的容器)收割机正在被 close_inactive 关闭,我不希望它们被关闭。来自 here
我是ELK的新手。我先安装了没有 Logstash 的 Elasticsearch 和 Filebeat,我想将数据从 Filebeat 发送到 Elasticsearch。在我安装了 Filebea
我正面临 logstash 的延迟问题。 事实上,我有一个这样构建的 ELK 堆栈: 我在 AWS 自动缩放组中有多个 AWS EC2 网络前端 我在每个前端都安装了 filebeat filebea
我的目标 我正在尝试提交对 Filebeat documentation 的修复,写于asciidoc 。 来源 Currently it is not possible to recursively
我的目标 我正在尝试提交对 Filebeat documentation 的修复,写于asciidoc 。 来源 Currently it is not possible to recursively
我正在尝试使用 filebeat test ouput -e -c filebeat.yml 测试我的配置,我只看到带有命令列表的帮助消息。 我其实是想输出数据文件来验证。虽然我已经测试了 fileb
是否可以将文件节拍设置为从远程目录读取(因为我无法在那台机器上安装进程) 我在beats yml上是这样设置的: filebeat: # List of prospectors to fetch
我目前正在使用 ELK 5.5。现在看来 document_type 在 Filebeats 中已被弃用,但我现在在任何地方都找不到任何关于如何实现相同的示例。 这是我在日志中得到的: WARN DE
我在 filebeat 方面遇到了一些奇怪的问题 我正在使用云形成来运行我的堆栈,并且我正在安装和运行 filebeat 来进行日志聚合, 我将/etc/filebeat/filebeat.yml注入
因此,我正在使用Filebeat读取几种不同的文件类型。我为要收获的每种文件设置document_type。我的问题是我想将大多数这些文件类型发送到Logstash,但是我希望将某些类型的文件直接发送
我正在尝试从 filebeat 读取文件并将它们推送到 logstash。在推送它们之前,我正在尝试合并包含 java 堆栈跟踪的事件。我试过这个过滤器,但它不起作用。 filebeat.prospe
paths: - /var/log/*.log 我使用它作为filebeat中运输日志的路径。 输出为elasticsearch。 output: elasticsearch:
我有一个读取多种不同日志格式的文件节拍。 一种工作得很好的格式是单个衬里,它作为单个事件发送到 Logstash。 现在,我有另一种格式,即多线。我想将其作为单个事件读取并将其发送到 Logstash
我们正在通过filebeat将数据摄取到Elasticsearch并遇到配置问题。 我正在尝试为特定字段指定日期格式(标准@timestamp字段保留索引时间,我们需要实际的事件时间)。到目前为止,我
我正在使用 Filebeat > logstash > elasticsearch > kibana 运行一个基本的 elk 堆栈设置——全部在 5.2 版上 当我删除 Filebeat 并将 log
我想要一个filebeat实例可以将数据发送到不同的logstash管道的功能。 这可能吗? 我已经配置了一个logtash服务,它具有两个管道 管道给出了单独的端口。 假设管道1(端口5044),管
首先我为我的英语道歉。 我是一家公司的实习生,我用 Filebeat 提出了一个解决方案 ELK 来发送日志。 问题是一旦恢复 syslog_pri 总是显示 Notice 和 severity_co
问题: TCP 输入是否管理收割机(即,您是否将文件路径发送到 TCP 输入,然后收割机开始摄取该文件)? TCP 输入能否接受结构化数据(例如 log 输入上的 json 配置选项)? TCP 输入
我正在使用 Filebeat 将日志数据从我的本地 txt 文件发送到 Elasticsearch,并且我想将 message 行中的一些字段添加到事件中——比如时间戳和日志级别。例如,这是我的日志行
我是一名优秀的程序员,十分优秀!