温馨提示×

ubuntu filebeat怎样处理日志文件

小樊
33
2025-12-11 01:21:11
栏目: 智能运维

Ubuntu 上 Filebeat 处理日志的完整流程

一 核心概念与职责

  • Filebeat 是轻量级日志采集器,负责从本地文件读取日志、进行基础处理与发送;它不负责日志轮转与归档。
  • 日志轮转 通常由 logrotate 或应用自身(如 rsyslog)完成;Filebeat 会自动发现并继续读取被轮转后的新文件。
  • 长期保留与归档 建议在 Elasticsearch 侧通过 ILM(Index Lifecycle Management) 或按日索引策略实现。

二 安装与配置文件位置

  • 安装 Filebeat(APT):
    • 更新索引并安装:sudo apt-get update && sudo apt-get install filebeat
  • 配置文件默认路径:/etc/filebeat/filebeat.yml
  • 常用目录:
    • 运行日志:/var/log/filebeat/filebeat.log
    • 数据目录:/var/lib/filebeat/
  • 服务管理:
    • 启动/开机自启:sudo systemctl start filebeat && sudo systemctl enable filebeat
    • 查看状态/实时日志:sudo systemctl status filebeatsudo journalctl -u filebeat -f

三 采集与输出配置示例

  • 采集系统日志并发送到 Elasticsearch(按日索引):
    • 配置示例:
      filebeat.inputs:
      - type: log
        enabled: true
        paths:
          - /var/log/syslog
          - /var/log/auth.log
      
      output.elasticsearch:
        hosts: ["localhost:9200"]
        index: "filebeat-%{[agent.version]}-%{+yyyy.MM.dd}"
      
    • 验证并启动:
      • 校验配置:sudo filebeat test config
      • 启动服务:sudo systemctl restart filebeat
  • 采集系统日志并发送到 Logstash(便于解析与增强):
    • Filebeat 配置:
      filebeat.inputs:
      - type: log
        enabled: true
        paths:
          - /var/log/syslog
          - /var/log/auth.log
      
      output.logstash:
        hosts: ["localhost:5044"]
      
    • Logstash 示例(/etc/logstash/conf.d/filebeat.conf):
      input { beats { port => 5044 } }
      output { elasticsearch { hosts => ["localhost:9200"] index => "filebeat-logstash-%{+yyyy.MM.dd}" } }
      
    • 启动顺序:Logstash → Filebeat(如需 Kibana 仪表盘,可运行 filebeat setup --dashboards

四 多日志按业务拆分索引

  • 通过添加字段并使用条件索引,将不同域名或应用的日志写入不同索引:
    filebeat.inputs:
    - type: log
      enabled: true
      paths:
        - /var/log/nginx/example.com.access.log
      fields:
        domain: example.com
      fields_under_root: true
    
    - type: log
      enabled: true
      paths:
        - /var/log/nginx/api.example.com.access.log
      fields:
        domain: api.example.com
      fields_under_root: true
    
    output.elasticsearch:
      hosts: ["localhost:9200"]
      indices:
        - index: "example-com-%{+yyyy.MM.dd}"
          when.equals:
            domain: "example.com"
        - index: "api-example-com-%{+yyyy.MM.dd}"
          when.equals:
            domain: "api.example.com"
    
  • 说明:也可结合 Logstash 做更复杂的解析与路由,再写入目标索引。

五 轮转归档与保留策略

  • 轮转(由系统完成):
    • 使用 logrotate 管理 Filebeat 自身日志(示例:/etc/logrotate.d/filebeat
      /var/log/filebeat/*.log {
          daily
          missingok
          rotate 7
          compress
          notifempty
          create 640 root adm
      }
      
    • 测试与生效:sudo logrotate -f /etc/logrotate.d/filebeat
    • 应用日志(如 /var/log/syslog、/var/log/auth.log)通常由 rsyslog 按系统策略轮转,Filebeat 会自动跟踪新文件。
  • 归档与保留(在 Elasticsearch 侧完成):
    • 使用 ILM 管理索引生命周期(示例策略:滚动更新与 30 天后删除)
      PUT _ilm/policy/logstash-policy
      {
        "policy": {
          "phases": {
            "hot": {
              "actions": {
                "rollover": {
                  "max_size": "50gb",
                  "max_age": "7d"
                }
              }
            },
            "delete": {
              "min_age": "30d",
              "actions": {
                "delete": {}
              }
            }
          }
        }
      }
      
    • 将策略绑定到索引模板或索引设置中,实现自动滚动与清理。

0