如何设置Filebeat日志轮转

Filebeat日志轮转设置指南一 概念与总体思路需要区分两类日志:Filebeat自身日志:由 Filebeat 进程写入,通常位于 /var/log/filebeat/。被采集的业务日志:由应用写入,Filebeat 负责读取。两类日志的轮转方式不同:Filebeat 自身日志:优先使用 内置文件日志轮转(logging.files);若使用 systemd,也可由 journald 接管

Filebeat日志轮转设置指南

一 概念与总体思路

  • 需要区分两类日志:
    • Filebeat自身日志:由 Filebeat 进程写入,通常位于 /var/log/filebeat/
    • 被采集的业务日志:由应用写入,Filebeat 负责读取。
  • 两类日志的轮转方式不同:
    • Filebeat 自身日志:优先使用 内置文件日志轮转(logging.files);若使用 systemd,也可由 journald 接管,再由 logrotate 切割 journal 日志。
    • 被采集日志:由操作系统 logrotate 或应用自身按策略切割;Filebeat 侧通过 filestream 输入 正确识别轮转文件,避免重复或丢失。

二 轮转 Filebeat 自身日志

  • 内置文件日志轮转(推荐)
    • filebeat.ymllogging 段开启并按需配置:
      • 关键参数:
        • logging.to_files: true
        • logging.files.path: 日志目录,如 /var/log/filebeat
        • logging.files.name: 日志文件名,如 filebeat
        • logging.files.rotateeverybytes: 单个日志文件大小上限,如 10 MB(默认)
        • logging.files.keepfiles: 保留历史文件数,如 7
        • logging.files.permissions: 文件权限,如 0644
      • 示例:
        • logging.to_files: true
        • logging.files:
          • path: /var/log/filebeat
          • name: filebeat
          • rotateeverybytes: 10485760 # 10MB
          • keepfiles: 7
          • permissions: 0644
    • 说明:当达到大小阈值时会自动滚动生成新文件,旧文件按序号保留与清理。
  • 使用 systemd + logrotate(可选)
    • 若以 systemd 运行且希望用 logrotate 切割 Filebeat 自身日志,可在 /etc/logrotate.d/filebeat 中配置(示例):
      • /var/log/filebeat/*.log {
        daily
        missingok
        rotate 7
        compress
        notifempty
        create 0640 root root
        }
    • 说明:此方式依赖 systemd 的 StandardOutput/StandardError 指向文件;若使用内置 logging.files,通常无需再用 logrotate 切割 Filebeat 自身日志。

三 轮转被采集的业务日志

  • 使用 logrotate 切割应用日志
    • /etc/logrotate.d/ 下为业务日志创建配置,例如:
      • /var/log/myapp/*.log {
        daily
        rotate 7
        compress
        missingok
        notifempty
        create 0640 app app
        sharedscripts
        postrotate
        # 若应用支持 USR1 重开日志(如 nginx),可在此发送信号
        # kill -USR1 $(cat /var/run/myapp.pid 2>/dev/null) || true
        endscript
        }
    • 要点:
      • 切割策略(大小/时间/保留份数)应与业务吞吐匹配。
      • 切割后确保应用能继续写入新文件(信号通知或重新打开文件描述符)。
  • Filebeat 侧正确读取轮转文件
    • 使用 filestream 输入 并正确设置 pathsfile_identity,避免重复或漏读:
      • 示例:
        • filebeat.inputs:
          • type: filestream
            id: app-logs
            paths:

            • /var/log/myapp/*.log

            默认基于 inode+device 识别文件;多数本地旋转场景无需额外配置

      • 特殊场景:
        • 网络共享/云盘等环境下 inode 可能变化,可改用 path 方式识别文件,并配合 inode_marker(需谨慎评估重复风险)。
        • 避免采集已轮转归档的旧文件,可通过 exclude_files 排除匹配模式(如 .gz、.zip)。

四 验证与常见问题

  • 验证 Filebeat 自身日志轮转
    • 查看轮转是否生效:ls -lh /var/log/filebeat/;观察是否出现多个按序号或时间命名的文件。
    • 检查 Filebeat 运行状态:systemctl status filebeat;查看 /var/log/filebeat/filebeat 是否持续写入。
  • 验证业务日志轮转
    • 手动触发一次轮转并观察:logrotate -f /etc/logrotate.d/myapp;随后确认新日志继续写入且 Filebeat 无重复或报错。
    • 查看 Filebeat 自身日志(/var/log/filebeat/filebeat)是否有 文件打开/关闭、旋转相关提示。
  • 常见问题与处理
    • 重复采集:多数为 file_identity 识别异常或 未排除归档文件;核对 filestream 配置与 exclude_files。
    • 丢失事件:切割期间应用未正确重开文件或缓冲区未刷新;确保应用支持信号重开,或在切割后短暂等待再清理旧文件。
    • 权限问题:被采集日志或 Filebeat 日志目录权限不足会导致无法读取/写入;核对 create 权限与属主属组。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,请发送邮件至 55@qq.com 举报,一经查实,本站将立刻删除。转转请注明出处:https://www.szhjjp.com/n/1482560.html

(0)
派派
上一篇 2025-12-30
下一篇 2025-12-30

发表回复

登录后才能评论