温馨提示×

ubuntu filebeat如何管理日志文件

小樊
42
2025-11-23 07:53:52
栏目: 智能运维

Ubuntu 上 Filebeat 日志文件管理

一 管理范围与总体原则

  • 需要区分两类日志:
    • Filebeat 自身运行日志:默认写入 /var/log/filebeat/filebeat.log,用于排查采集问题。
    • 被采集的业务日志:如 /var/log/syslog、/var/log/nginx/*.log 等,由应用或系统按策略轮转,Filebeat 负责读取与发送。
  • 角色边界:
    • 日志分割/轮转通常由系统工具(如 logrotate)或应用自身完成;Filebeat 不直接“切割”日志,但能自动感知并继续读取新文件。
    • 长期留存与归档建议在 Elasticsearch 侧通过 ILM(索引生命周期管理) 或按日索引策略实现。

二 Filebeat 自身日志轮转与调试

  • 查看与实时跟踪:
    • 查看服务日志:sudo tail -f /var/log/filebeat/filebeat.log
    • 查看 systemd 日志:sudo journalctl -u filebeat.service -f
  • 调整日志级别与输出到文件(/etc/filebeat/filebeat.yml):
    • 示例:
      • logging.level: debug
      • logging.to_files: true
      • logging.files:
        • path: /var/log/filebeat
        • name: filebeat
        • keepfiles: 7
        • permissions: 0644
    • 使配置生效:sudo systemctl restart filebeat
  • 使用 logrotate 轮转 Filebeat 自身日志(/etc/logrotate.d/filebeat):
    • 示例:
      • /var/log/filebeat/*.log {
        • daily
        • missingok
        • rotate 7
        • compress
        • notifempty
        • create 640 root adm
        • postrotate
          • systemctl kill -s USR1 filebeat || true # 触发重新打开日志文件
        • endscript
      • }
    • 测试:sudo logrotate -f /etc/logrotate.d/filebeat
    • 说明:
      • Filebeat 默认能感知被采集日志的轮转(如按时间/大小切割),通常无需额外通知;若遇到未接续采集,可在 postrotate 中使用 systemctl kill -s USR1 filebeat 触发重新打开文件描述符。

三 被采集日志的轮转与权限

  • 使用 logrotate 管理业务日志(示例:/etc/logrotate.d/myapp):
    • /var/log/myapp/*.log {
      • daily
      • rotate 7
      • compress
      • missingok
      • notifempty
      • create 640 root adm
      • postrotate
        • systemctl kill -s USR1 filebeat || true
      • endscript
    • }
    • 要点:
      • 确保 Filebeat 对日志目录与文件具备读取权限(如属主/属组与权限配置正确)。
      • 测试:sudo logrotate -f /etc/logrotate.d/myapp
  • 若业务日志由应用或 rsyslog 按日期/大小切割,Filebeat 会自动发现新文件并继续采集,无需额外配置。

四 长期留存与归档策略

  • 直连 Elasticsearch:
    • 在 filebeat.yml 使用按日索引:
      • output.elasticsearch:
        • hosts: [“localhost:9200”]
        • index: “filebeat-%{[agent.version]}-%{+yyyy.MM.dd}”
    • 在 ES 中配置 ILM(示例):
      • PUT _ilm/policy/logstash-policy
        • {
          • “policy”: {
            • “phases”: {
              • “hot”: {
                • “actions”: {
                  • “rollover”: { “max_size”: “50gb”, “max_age”: “7d” }
                • }
              • },
              • “delete”: {
                • “min_age”: “30d”,
                • “actions”: { “delete”: {} }
              • }
            • }
          • }
        • }
      • 将策略绑定到索引模板,实现滚动、归档与删除
  • 经由 Logstash:
    • 在 Logstash 输出中使用索引名模板(如按域名或业务划分),并在 ES 侧为对应索引应用 ILM

0