温馨提示×

如何使用Filebeat监控Linux系统日志

小樊
31
2025-12-26 13:40:03
栏目: 智能运维

使用 Filebeat 监控 Linux 系统日志

一 安装与准备

  • RHEL/CentOS 系列:
    • 安装:执行 sudo yum install -y filebeat;或下载 RPM 包后用 sudo rpm -ivh filebeat-<版本>-x86_64.rpm 安装。
    • 配置文件默认路径:/etc/filebeat/filebeat.yml
  • Debian/Ubuntu 系列:
    • 使用 apt 安装 Filebeat(官方仓库),配置文件同样位于 /etc/filebeat/filebeat.yml
  • 安装完成后,建议先备份原始配置:sudo cp /etc/filebeat/filebeat.yml /etc/filebeat/filebeat.yml.bak

二 配置 Filebeat 采集系统日志

  • 启用系统模块(推荐)
    • 执行:sudo filebeat modules enable system,如需自定义模块参数,编辑 /etc/filebeat/modules.d/system.yml
    • 说明:Filebeat 提供 system、auditd、nginx、apache、mysql 等模块,可一键完成常见日志的采集与解析。
  • 最小可用配置示例(直接读文件,适合快速验证)
    • 编辑 /etc/filebeat/filebeat.yml
      filebeat.inputs:
      - type: log
        enabled: true
        paths:
          - /var/log/*.log
          - /var/log/messages
        exclude_files: ["*.gz"]
        fields:
          type: systemlog
        fields_under_root: true
      
      output.elasticsearch:
        hosts: ["localhost:9200"]
        index: "system-logs-%{+yyyy.MM.dd}"
      
    • 要点:
      • paths 指定采集路径;exclude_files 排除压缩旧日志。
      • 通过 fields 添加自定义字段,便于后续在 ES/Kibana 中区分来源。
      • 索引名使用 %{+yyyy.MM.dd} 做按日滚动。

三 启动与验证

  • 启动与开机自启
    • 启动:sudo systemctl start filebeat
    • 开机自启:sudo systemctl enable filebeat
    • 查看状态:sudo systemctl status filebeat
  • 查看运行日志(排查问题)
    • 使用 journalctlsudo journalctl -u filebeat -f
  • 快速自检
    • 确认进程与端口连通性(若输出到本机 ES):curl -X GET “localhost:9200”

四 输出到 Elasticsearch 与 Kibana 可视化

  • 若输出到 Elasticsearch
    • Kibana 访问 http://:5601,进入 Stack Management → Index Patterns,创建索引模式匹配 system-logs-*,时间字段选择 @timestamp,保存后即可在 Discover 查看。
  • 若经由 Logstash 处理再入 ES
    • 修改输出段为:
      output.logstash:
        hosts: ["logstash-host:5044"]
      
    • 在 Logstash 中配置 beats 输入与所需 filter 解析后输出到 ES。此方式便于做字段解析、脱敏与丰富。

五 常见问题与优化

  • 多行日志(如 /var/log/messages 的堆栈)
    • 在对应 input 下增加:
      multiline.pattern: '^\s'
      multiline.negate: true
      multiline.match: after
      
  • 大文件与性能
    • 调整 harvester.max_bytes(单次事件最大字节数),并确保与系统日志轮转后的单文件大小匹配,避免截断。
  • 忽略历史旧文件
    • 使用 ignore_older(如 24h7d)跳过过久未更新的文件,减少启动扫描压力。
  • 日志轮转适配
    • 配合 logrotate 正常轮转;Filebeat 会跟踪 inode 与偏移,一般无需额外处理。
  • 调试技巧
    • 前台运行查看事件:filebeat -e -c /etc/filebeat/filebeat.yml -d “publish”;如需强制从文件开头重读,可清理注册表目录(生产慎用):/var/lib/filebeat/registry(或解压包部署时的 data/registry)。

0