温馨提示×

Filebeat日志收集Ubuntu上怎么设置

小樊
43
2025-12-22 21:19:42
栏目: 智能运维

在 Ubuntu 上配置 Filebeat 收集日志

一 安装与准备

  • 更新索引并导入 Elastic GPG 密钥:
    • sudo apt update
    • wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
  • 添加 APT 仓库(将 8.x 替换为你的实际版本,如 7.x8.x):
    • echo “deb https://artifacts.elastic.co/packages/8.x/apt stable main” | sudo tee -a /etc/apt/sources.list.d/elastic-8.x.list
  • 安装并启动服务:
    • sudo apt update && sudo apt install -y filebeat
    • sudo systemctl enable --now filebeat
  • 配置文件默认路径:/etc/filebeat/filebeat.yml。建议先备份:sudo cp /etc/filebeat/filebeat.yml /etc/filebeat/filebeat.yml.bak。

二 两种常见输出方式

  • 直接输出到 Elasticsearch(最简):
    • 编辑 /etc/filebeat/filebeat.yml,仅保留并调整:
      • output.elasticsearch.hosts: [“http://ES_HOST:9200”]
      • 如启用安全认证:
        • output.elasticsearch.username: “elastic”
        • output.elasticsearch.password: “your_password”
    • 启用系统模块并加载模板/仪表板(首次接入可用):
      • sudo filebeat modules enable system
      • sudo filebeat setup
    • 重启:sudo systemctl restart filebeat
  • 输出到 Logstash(便于过滤/加工):
    • 注释或删除 Elasticsearch 输出段,启用 Logstash:
      • output.logstash.hosts: [“LOGSTASH_HOST:5044”]
    • 重启:sudo systemctl restart filebeat
    • 在 Logstash 侧创建管道(示例 /etc/logstash/conf.d/filebeat.conf):
      • input { beats { port => 5044 } }
      • output { elasticsearch { hosts => [“http://ES_HOST:9200”] index => “filebeat-%{+YYYY.MM.dd}” } }
    • 启动 Logstash:sudo systemctl start logstash
  • 说明:
    • 若 Elasticsearch 启用了 X-Pack 安全,需在 Filebeat 中配置 用户名/密码 才能写入。
    • 使用 modules(如 system)时,先启用模块,再用 filebeat setup 初始化索引模板与 Kibana 仪表板更省事。

三 采集示例配置

  • 采集 Ubuntu 系统日志(使用 modules 方式,推荐):
    • sudo filebeat modules enable system
    • 编辑模块配置(/etc/filebeat/modules.d/system.yml),确认 paths 包含 /var/log/syslog,必要时开启 authsyslog 等 fileset。
    • 如需直接写 ES:sudo filebeat setup && sudo systemctl restart filebeat
  • 采集 Java 应用日志(多行堆栈友好,使用 filestream 输入):
    • 在 filebeat.yml 的 filebeat.inputs 段添加:
      • type: filestream id: java-app enabled: true paths:
        • /var/log/myapp/*.log multiline.type: pattern multiline.pattern: ‘^\d{4}-\d{2}-\d{2}’ multiline.negate: true multiline.match: after
    • 选择输出(ES 或 Logstash),重启 Filebeat 生效。

四 启动与验证

  • 服务状态与实时日志:
    • sudo systemctl status filebeat
    • sudo journalctl -u filebeat -f
  • 自检与连通性:
    • filebeat test config -e(语法与配置自检)
    • filebeat test output(输出连通性测试)
  • 在 Elasticsearch 中快速确认索引:
    • curl -X GET “http://ES_HOST:9200/_cat/indices?v” | grep filebeat
  • 在 Kibana 中查看:进入 Discover,选择 filebeat-* 索引模式,开始检索。

五 常见问题与优化

  • 权限与路径:确保 Filebeat 对日志目录有读取权限(如 /var/log/ 与你的应用日志目录),必要时将 filebeat 用户加入对应组(如 adm)。
  • 多行日志:Java 堆栈务必配置 multiline,否则堆栈会被拆成多事件。
  • 资源与吞吐:根据日志量调整 bulk_max_sizeworker 等参数;必要时增加 queue.mem.events 缓冲。
  • 版本匹配:Elasticsearch、Logstash、Kibana 与 Filebeat 的 大版本号需一致(如均为 7.x8.x),避免兼容性问题。
  • 安全加固:生产环境启用 TLS/SSL认证,并限制输出主机的访问来源。

0