在 Ubuntu 上配置 Filebeat 收集日志
一 安装与准备
- 更新索引并导入 Elastic GPG 密钥:
- sudo apt update
- wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
- 添加 APT 仓库(将 8.x 替换为你的实际版本,如 7.x 或 8.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,必要时开启 auth、syslog 等 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_size、worker 等参数;必要时增加 queue.mem.events 缓冲。
- 版本匹配:Elasticsearch、Logstash、Kibana 与 Filebeat 的 大版本号需一致(如均为 7.x 或 8.x),避免兼容性问题。
- 安全加固:生产环境启用 TLS/SSL 与 认证,并限制输出主机的访问来源。