使用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分钟,就能站起来。

image.png

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-*的数据视图。

image.png

访问本地主机的 HTTP 日志时,端口为 80。

公式手册中写着要使用curl命令,但httpd镜像默认没有安装curl。
因此,可以从浏览器中访问localhost:80,大约重复10次。

image.png

有一个时间段的日志集中在一起,仍然有连续的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"

冬天来了!

广告
将在 10 秒后关闭
bannerAds