首页主机资讯Filebeat日志轮转策略如何设置

Filebeat日志轮转策略如何设置

时间2025-12-04 02:55:03发布访客分类主机资讯浏览1334
导读:Filebeat日志轮转策略设置 一 核心思路 区分两类日志:一类是 Filebeat 自身的运行日志(filebeat.log),另一类是 Filebeat 采集的应用日志(如 /var/log/*.log)。前者建议用系统级 logr...

Filebeat日志轮转策略设置

一 核心思路

  • 区分两类日志:一类是 Filebeat 自身的运行日志(filebeat.log),另一类是 Filebeat 采集的应用日志(如 /var/log/*.log)。前者建议用系统级 logrotate 管理;后者由 Filebeat 的 Harvester 持续跟踪,无需额外轮转配置。若你使用 Filebeat 的 file 输出插件写入本地文件,也可为其单独配置基于大小的滚动。

二 轮转 Filebeat 自身日志 logrotate 推荐做法

  • 创建配置:/etc/logrotate.d/filebeat
/var/log/filebeat/*.log {
    
    daily
    rotate 7
    missingok
    notifempty
    compress
    delaycompress
    create 0640 root root
    sharedscripts
    postrotate
        # 优先使用 kill -USR1 触发重新打开日志文件(不中断进程)
        if [ -f /var/run/filebeat/filebeat.pid ];
     then
            kill -USR1 $(cat /var/run/filebeat/filebeat.pid) 2>
    /dev/null || true
        else
            # 兼容 systemd 场景:也可用 systemctl reload
            systemctl reload filebeat >
    /dev/null 2>
    &
1 || true
        fi
    endscript
}

  • 说明
    • 使用 kill -USR1 是让进程重新打开日志文件的首选方式,避免重启导致采集短暂中断。
    • 若 PID 文件路径不同,请按实际环境调整(常见还有 /run/filebeat.pid)。
  • 测试与生效
    • 手动测试:sudo logrotate -f /etc/logrotate.d/filebeat
    • 查看轮转记录:/var/log/logrotate.log
    • 确保服务运行:sudo systemctl status filebeat
  • 常见变体
    • 仅保留 7 天:rotate 7
    • 按小时轮转:hourly(需系统 cron 支持)
    • 不压缩:去掉 compress;延迟压缩:使用 delaycompress

三 轮转 Filebeat 采集的应用日志

  • 原则:被采集的日志文件由 Filebeat 持续 inode 跟踪,应用侧按时间/大小轮转即可(如 logrotate 或应用自带轮转)。为避免 Filebeat 继续读已轮转的旧文件,建议:
    • 使用 copytruncate(复制后清空原文件),或
    • 轮转后让 Filebeat 重新加载配置(如上节的 reload),或
    • 确保轮转后的新文件使用与旧文件一致的 inode(多数 rename 方式会变更 inode,Filebeat 会感知为新文件继续采集)。
  • 示例(应用日志的 logrotate,配合 Filebeat 使用)
/var/log/myapp/*.log {

    daily
    rotate 30
    missingok
    notifempty
    compress
    delaycompress
    copytruncate
    create 0644 root root
}
    
  • 说明
    • 采用 copytruncate 可避免重启应用或发送信号;若使用 rename+信号方式,请确保 Filebeat 能收到通知(如 reload 或 USR1)以继续采集新文件。

四 使用 Filebeat 输出到文件时的内置滚动

  • 若你把 Filebeat 的输出写到本地文件(output.file),可用内置滚动参数控制大小与保留个数:
output.file:
  enabled: true
  path: "/var/log/filebeat"
  filename: "filebeat.log"
  rotate_every_kb: 104857600   # 100MB
  keep_files: 10
  permissions: 0644
  • 说明
    • 上述为按大小滚动,适合本地调试或特殊归档场景;生产上更常见的是将日志发往 Elasticsearch/Logstash/Kafka 等集中式存储。

五 验证与排错

  • 查看轮转是否生效:ls -lh /var/log/filebeat/;观察是否出现 .gz 压缩文件与数量是否符合 rotate 设置。
  • 检查 Filebeat 是否持续采集:tail -f /var/log/filebeat/filebeat 或使用 filebeat test output。
  • 查看 logrotate 自身日志:tail -f /var/log/logrotate.log,定位是否执行、是否报错。
  • 若采集出现中断,优先检查:日志路径权限、是否触发 USR1/reload、是否因 copytruncate 导致短暂无新数据写入。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Filebeat日志轮转策略如何设置
本文地址: https://pptw.com/jishu/763109.html
CentOS中Apache的安全设置有哪些 如何排查CentOS上Filebeat的错误

游客 回复需填写必要信息