启用 Fluentd 日志轮换

Posted

技术标签:

【中文标题】启用 Fluentd 日志轮换【英文标题】:Enabling Fluentd Log rotation 【发布时间】:2020-08-08 06:53:16 【问题描述】:

我正在使用 fluentd 和 tg-agent 安装。而且我观察到我的默认 td-agent.log 文件正在增长,而没有任何日志轮换。

我正在使用以下命令来运行 td-agent

/etc/init.d/td-agent start

我找到了下面的链接,它告诉了如何配置旋转,这似乎与 fluent 本身有关。

https://docs.fluentd.org/deployment/logging

有人知道如何使用我正在使用的命令配置旋转吗?我也有 td-agent 配置文件。

【问题讨论】:

您应该根据您的要求进行配置和尝试配置。它也应该适用于td-agent 【参考方案1】:

您可以通过两种方式执行此操作,首先使用 td-agent 本身,为此您需要更新 td-agent 初始化文件 /etc/init.d/td-agent。您必须在文件中找到以下行

TD_AGENT_ARGS="$TD_AGENT_ARGS:-$TD_AGENT_BIN_FILE --log $TD_AGENT_LOG_FILE $TD_AGENT_OPTIONS"

并将其更新为

TD_AGENT_ARGS="$TD_AGENT_ARGS:-$TD_AGENT_BIN_FILE --log-rotate-age 5 --log-rotate-size 104857600 --log $TD_AGENT_LOG_FILE $TD_AGENT_OPTIONS"

然后重启td-agent,结果如下图

16467 /opt/td-agent/embedded/bin/ruby /usr/sbin/td-agent --log-rotate-age 5 --log-rotate-size 104857600 --log /var/log/td-agent/td-agent.log --use-v1-config --group td-agent --daemon /var/run/td-agent/td-agent.pid
16472 /opt/td-agent/embedded/bin/ruby -Eascii-8bit:ascii-8bit /usr/sbin/td-agent --log-rotate-age 5 --log-rotate-size 104857600 --log /var/log/td-agent/td-agent.log --use-v1-config --group td-agent --daemon /var/run/td-agent/td-agent.pid --

第二种方法是使用 logrotate 来轮换日志,在您的服务器上创建以下文件并确保已安装 logrotate 并且它将负责轮换日志

 cat /etc/logrotate.d/td-agent
/var/log/td-agent/td-agent.log 
  daily
  rotate 30
  compress
  delaycompress
  notifempty
  create 640 td-agent td-agent
  sharedscripts
  postrotate
    pid=/var/run/td-agent/td-agent.pid
    if [ -s "$pid" ]
    then
      kill -USR1 "$(cat $pid)"
    fi
  endscript

【讨论】:

以上是关于启用 Fluentd 日志轮换的主要内容,如果未能解决你的问题,请参考以下文章

windows下fluentd传输日志到elasticsearch (fluentd elasticsearch https)

FluentD 将日志从 kafka 转发到另一个 fluentD

rancher使用fluentd-pilot收集日志分享

fluentd收集Docker stdout日志

Docker 容器日志管理Fluentd

FluentD 日志不可读。它被排除在外,下次会检查