fluentd收集容器日志信息到es配置注意

本文介绍了如何使用fluentd代替filebeat直接收集容器日志,避免日志持久化到本地,节省磁盘空间。通过配置docker日志driver为fluentd,安装fluent-plugin-elasticsearch插件,将日志发送到ES。同时,文章讨论了如何通过优化fluentd配置,添加特定标签以区分不同应用日志,简化日志查询和管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

fluentd是常用容器日志收集工具,与filebeat不同,fluentd可以将容器日志在不落到本地以文件形式存在的情况下,将日志收集并吐到对应的存储中。
例如,通常情况下,容器app的日志需要通过挂在,把容器日志目录挂在到本地,然后日志输出到log文件,以此来持久化。在通过filebeat等日志收集共工具将持久化的log文件吐到相应的日志存储(es或者kafka)中。
通过fluentd,容器不必将日志持久化到本地,fluentd可以直接收集docker logs <container_id>打印的日志,并吐到相应的日志存储中。这样可以节省磁盘空间。
要实现这样的功能需要如下配置:

1.配置docker日志driver为fluentd

在启动容器时,添加参数–log-drive=fluentd。
例如: docker run --log-driver fluentd nginx:latest这样将使容器以fluentd作为日志driver。

2.配置fluentd

fluentd有许多插件,输出到es需要安装fluent-plugin-elasticsearch插件,安装过程可以查看fluentd官方文档。

<match **>
  @type elasticsearch
  host localhost
  port 9200
  logstash_format true
</match>
host:es服务器地址
port:es服务端口

此为一个简单fluentd配置文件。fluentd配置有许多功能,例如新增label或者替换label,以及根据label进行过滤。
当我们配置完成后,通过kibana查看日志,会看到类似下面这样的日志:

  • 配置Kibana index pattern
    es以index来分别存储收集到的日志,fluentd默认吐到es中的日志的index为logstash,因此在kibana中,创建logstash-*的index patter,这样kibana将展示所有以“logstash-”头的日志。
    在这里插入图片描述
  • 查询日志
    配置好后,可以在kibana中查询到类似如下日志。
    初始收集到的日志
    可以看出,上面一条日志除了container_name能够勉强识别出该条日志来自于thrall这个app应用,其余信息都不能够明显显示出该条日志来自哪个应用。另外,由于所有app日志默认index为logstash,当我们需要查看某项app是否有错误日志时,查询将变得异常麻烦。
    为了解决以上痛点,我们接下来对fluentd进行一些优化配置。

3.优化配置fluentd

在开始运行docker容器时,我们添加了参数--log-driver fluentd来指定容器日志输出到fluentd进行转发,但收集到的日志没有明显能够说明该条日志来自于哪个app的标签。这样的需求可以通过在启动容器时添加--log-opt tag=thrall参数使得该容器输出的日志都带上tag=thrall的标签。这样我们就可以知道该条日志来源于哪个app。

<match *thrall*>
  @type elasticsearch
  host localhost
  port 9200
  include_tag_key true
  tag_key log_name
  logstash_format true
  logstash_prefix thrall
</match>
<match *thrall*>:匹配tag中包含thrall的日志。
include_tag_key:会输出所有tag到每一条日志记录中。
tag_key log_name:重命名--log-opt tag=thrall中tag在日志中显示的名称。
logstash_prefix thrall:该参数会使日志的index为thrall-*,在kibana创建index pattern时,就可以通过thrall-*找到所有thrall应用的日志。

完成以上配置,我们来看看日志在kibana中的显示。

  • 首先配置index pattern
    在这里插入图片描述
    在create index pattern界面中输入logstash_prefix thrall配置的thrall-*如果有日志,create按钮会可点击状态,这样,thrall的所有日志可以在该index pattern下找到。
  • 查看日志内容
    在这里插入图片描述
    创建好index pattern之后,可以在查看日志中把thrall-*的index过滤出来。
    在这里插入图片描述
    上面为一条优化后的日志。
    log_name为tag_key log_name配置的log_name。_indexlogstash_prefix + 日志收集日期。
    这样一来一条日志就可以明确知道该条之日来自哪个应用,并且通过index pattern,可以将同一应用日志通过相通的Index集中到一起查看。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值