在 Ubuntu 上,Filebeat 通常作为日志采集端,与 ELK 栈的 Logstash 与 Elasticsearch 配合,将数据送入 ES 并在 Kibana 中展示。下面给出两种常用架构与落地步骤。
架构与端口规划
- 架构一 Filebeat → Logstash → Elasticsearch → Kibana
- 组件与端口:Filebeat(客户端采集)、Logstash(端口5044接收 Beats)、Elasticsearch(端口9200)、Kibana(端口5601)
- 适用:需要过滤、解析、丰富日志的场景
- 架构二 Filebeat → Elasticsearch → Kibana
- 典型部署:在 Ubuntu 18.04/20.04/22.04 上分别部署 ES、Logstash、Kibana 与 Filebeat,网络与防火墙开放相应端口。
安装与最小配置
- 安装 Filebeat(Ubuntu APT 源)
- 导入 GPG 并添加 Elastic 源(以 7.x 为例,可按需替换为 8.x)
- wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
- echo “deb https://artifacts.elastic.co/packages/7.x/apt stable main” | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list
- sudo apt-get update && sudo apt-get install filebeat
- 最小配置示例(Filebeat → Logstash)
- /etc/filebeat/filebeat.yml
- filebeat.inputs:
- type: log
enabled: true
paths:
- output.logstash:
- hosts: [“192.0.2.10:5044”] # 替换为 Logstash 地址
- 最小配置示例(Filebeat → Elasticsearch)
- /etc/filebeat/filebeat.yml
- filebeat.inputs:
- type: log
enabled: true
paths:
- output.elasticsearch:
- hosts: [“192.0.2.11:9200”] # 替换为 ES 地址
- 启动与开机自启
- sudo systemctl start filebeat
- sudo systemctl enable filebeat
- 版本建议:保持 Filebeat、Logstash、Elasticsearch、Kibana 版本一致,避免兼容性问题。
Logstash 与 Elasticsearch 配置要点
- Logstash 接收并输出到 ES(示例)
- /etc/logstash/conf.d/filebeat.conf
- input {
beats { port => 5044 }
}
- filter {
可添加 grok、mutate、date 等处理
}
- output {
elasticsearch {
hosts => [“192.0.2.11:9200”]
index => “filebeat-%{+YYYY.MM.dd}”
}
}
- 启动 Logstash
- sudo systemctl start logstash
- sudo systemctl enable logstash
- 安全与认证(如启用)
- ES 开启安全后,Filebeat 输出需配置 username/password;Kibana 连接也需凭据
- output.elasticsearch:
- hosts: [“elasticsearch:9200”]
- username: “elastic”
- password: “your_password”
- setup.kibana:
- host: “kibana:5601”
- username: “kibana_system”
- password: “your_password”
- 索引模板与仪表盘(可选)
- Filebeat 可自动加载索引模板与示例仪表盘(setup.template.、setup.dashboards.),便于快速可视化。
Kibana 可视化与常见问题
- 创建索引模式
- 访问 http://<kibana_host>:5601,进入 Stack Management → Index Patterns,创建以 filebeat-* 或自定义前缀开头的索引模式,设置时间字段为 @timestamp。
- 验证数据
- 在 Kibana Discover 查看日志;或在 ES 检查索引:
- curl http://localhost:9200/_cat/indices?v
- curl -XGET ‘http://localhost:9200/filebeat-*/_search?pretty’
- 常见问题与排查
- 多行堆栈合并:使用 multiline 将异常堆栈合并为单条事件,便于排查
- filebeat.inputs:
- type: log
enabled: true
paths: [“/var/log/app/*.log”]
multiline.pattern: ‘^[’
multiline.negate: true
multiline.match: after
- 启动顺序:先启动 Logstash,再启动 Filebeat
- 路径与权限:确保 Filebeat 对日志路径有读取权限(如 /var/log/)
- 版本匹配:组件版本不一致易导致字段或插件兼容问题
- 证书与 TLS:跨主机传输建议启用 TLS,在 Filebeat 的 tls.certificate_authorities 中指定 CA 证书路径。