温馨提示×

如何用Ubuntu Filebeat分析日志

小樊
44
2025-12-07 01:55:54
栏目: 智能运维

在 Ubuntu 上使用 Filebeat 进行日志分析

一 架构与准备

  • 组件分工:Filebeat 负责采集与轻量处理,Elasticsearch 存储与检索,Kibana 检索与可视化;如需复杂解析,可在中间加入 Logstash
  • 安装要点(APT):
    • 导入 GPG 并添加仓库后安装:sudo apt update && sudo apt install filebeat。
    • 配置文件默认路径:/etc/filebeat/filebeat.yml
    • 服务管理:sudo systemctl start filebeat && sudo systemctl enable filebeat。
    • 验证配置:sudo filebeat test config;查看服务日志:sudo journalctl -u filebeat -f。

二 快速上手 系统日志模块

  • 启用模块与检查:sudo filebeat modules enable system;sudo filebeat modules list。
  • 配置输出(二选一):
    • 直连 ES(示例):
      • output.elasticsearch.hosts: [“http://localhost:9200”]
    • 发送至 Logstash(示例):
      • output.logstash.hosts: [“your_logstash_host:5044”]
  • 初始化与启动:
    • 初始化索引模板与 Kibana 仪表板:sudo filebeat setup(首次接入 ES/Kibana 建议执行)。
    • 重启:sudo systemctl restart filebeat。
  • 在 Kibana 的 Discover 中选择 filebeat-* 索引模式即可检索系统日志(如 auth、syslog)。

三 自定义日志与常见场景

  • 采集 Java 应用日志(多行堆栈友好):
    • 建议以多行事件采集,匹配以空格开头的堆栈行,避免单行截断:
      • filebeat.inputs:
        • type: log enabled: true paths:
          • /opt/app/logs/*.log multiline.type: pattern multiline.pattern: ‘^\s’ multiline.negate: true multiline.match: after
  • 采集 Docker 容器日志(Filebeat 8):
    • 启用模块与处理器,自动附加容器元数据(容器名、镜像等):
      • filebeat.inputs:
        • type: container containers.ids: [‘*’]
      • processors:
        • add_docker_metadata: ~
      • output.elasticsearch.hosts: [“http://localhost:9200”]
    • 重启服务后,在 Kibana 按容器维度检索与分析。

四 解析与时间戳校正

  • 使用 Modules 可获得开箱即用的解析(如 system、nginx 等),减少手写 Grok 的工作量。
  • 将日志中的“事件时间”作为 @timestamp(而非采集时间)的方法:
    • 方案 A:使用 Elasticsearch Ingest Pipeline 解析时间字段并写入 @timestamp(适合直连 ES 的场景)。
    • 方案 B:在 Logstash 中用 Grok/Date 插件解析后写入 @timestamp(适合需要复杂处理的场景)。

五 运维与排错要点

  • 配置与连通性:
    • 测试配置:sudo filebeat test config;测试输出:sudo filebeat test output。
  • 日志与调试:
    • 实时查看服务日志:sudo journalctl -u filebeat -f。
    • 提高日志级别(调试用):在 filebeat.yml 中设置 logging.level: debug,然后重启服务。
  • 常见问题速查:
    • 配置路径错误:确认 /etc/filebeat/filebeat.yml 是否存在且语法正确。
    • 权限问题:确保 Filebeat 对日志文件有读取权限(如 /var/log/ 下的系统日志)。
    • 输出目标冲突:Filebeat 同一时间只能配置一种输出(Elasticsearch 或 Logstash 等)。

0