使用Docker Compose尝试使用Fluentd
首先
在上一篇文章中,我使用Tftpd64来查看树莓派的syslog。
Tftpd64虽然使用起来方便,可以用于简单测试,但如果监控对象变多,就会变得难以控制(这一点显而易见)。终究,我想以更加图形化的方式查看树莓派的syslog。
为了作为进一步发展的基础,本次我们构建了EFK日志平台,首先测试是否可以记录HTTP访问日志。
EFK日志基础设施是什么?
这是一个由多个开源软件组成的团队,可以使从多个来源收集的数据变得易于阅读。由于它是开源软件,当然可以免费试用。
我尝试向Edge的侧边栏上的AI聊天提问。
EFK日志基础设施是将Elasticsearch、Fluentd和Kibana这三个开源软件组合在一起的日志收集和分析基础设施。Elasticsearch是用于搜索和分析日志数据的搜索引擎,Fluentd是用于收集日志数据的数据收集代理,Kibana是用于可视化收集的日志数据的仪表板工具。¹²¹:通过Elasticsearch + Fluentd + Kibana构建日志基础设施 – Qiita ²:EFK日志基础设施是什么? | さくらのナレッジ
来源:与Bing的对话 2023/6/11(1) 使用Fluentd+Elasticsearch+Kibana搭建日志基础设施的概述和构建方法。https://atmarkit.itmedia.co.jp/ait/articles/1704/06/news013.html 访问日期:2023/6/11。
(2) OpenShift的EFK日志基础设施-赤帽工程师博客。https://rheb.hatenablog.com/entry/openshift-20181211 访问日期:2023/6/11。
(3) 使用EFK(Elasticsearch, Fluentd, Kibana)轻松搭建Docker日志基础设施…. https://qiita.com/foursue/items/9add0ec18efacb2fc2d2 访问日期:2023/6/11。
使用Docker Compose建立环境
在Fluentd 1.0的官方网站上,有Docker Compose的示例。
按照步骤创建docker-compose.yml文件和配置文件, 即使进行docker compose up时会出现错误 (截至2023年6月10日)。
<错误信息>
在中文中进行本地化重述如下,只需要一种选项:
在 `/usr/local/lib/ruby/2.6.0/rubygems/core_ext/kernel_require.rb` 的第54行调用 ‘require’ 方法时出错:无法加载文件 – elasticsearch/transport/transport/connections/selector (LoadError)。
参考GitHub上报同一错误的问题来修复。
目前为止,网络容器仍然无法启动…
似乎时间会解决问题。
在尝试启动Web容器时发生的错误内容。
<网页1错误内容>
守护进程错误响应:无法初始化日志驱动程序:拨号TCP [::1]: 24224:连接拒绝。
目前还无法访问本地主机的24224端口。
我做了一些调查,但最终发现只需要等待大约1分钟,就能站起来。
Fluentd的错误 (Fluentd de
在fluentd没有启动的情况下,错误内容如下所示。
<fluentd-1错误> (Natively in Chinese: “Fluentd-1错误”)
意外错误 error_class=Elastic::Transport::Transport::Error error=”连接被拒绝 – connect(2) 到 172.25.0.2:9200 (Errno::ECONNREFUSED)”
使用docker-compose.yml添加depends on并未解决此问题。
安装Kibana
请访问http://localhost:5601/app/management/kibana/indexPatterns,然后创建一个名为fluentd-*的数据视图。
访问本地主机的 HTTP 日志时,端口为 80。
公式手册中写着要使用curl命令,但httpd镜像默认没有安装curl。
因此,可以从浏览器中访问localhost:80,大约重复10次。
有一个时间段的日志集中在一起,仍然有连续的HTTP-GET日志。
最后
使用Fluentd官方网站上的Docker Compose示例,可以将HTTP访问日志以图形化方式显示。
我希望利用这个方法,将syslog和其他日志进行类似的可视化。
请用中文给我提供一个选项。
追加物
Dockerfile的中文释义是:Docker文件。
使用的版本是5.2.4。
# fluentd/Dockerfile
FROM fluent/fluentd:v1.12.0-debian-1.0
USER root
RUN ["gem", "install", "fluent-plugin-elasticsearch", "--no-document", "--version", "5.2.4"]
USER fluent
docker-compose.yml的中文翻译:
使用的Kibana和Elasticsearch版本是8.1.2。
此外,我还在Elasticsearch环境中添加了一个宽松的安全设置。
version: "3"
services:
web:
image: httpd
ports:
- "80:80"
links:
- fluentd
logging:
driver: "fluentd"
options:
fluentd-address: localhost:24224
tag: httpd.access
fluentd:
build: ./fluentd
volumes:
- ./fluentd/conf:/fluentd/etc
links:
- "elasticsearch"
ports:
- "24224:24224"
- "24224:24224/udp"
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:8.1.2
container_name: elasticsearch
environment:
- "discovery.type=single-node"
- xpack.security.enabled=false
expose:
- "9200"
ports:
- "9200:9200"
kibana:
image: docker.elastic.co/kibana/kibana:8.1.2
links:
- "elasticsearch"
ports:
- "5601:5601"