如何在Ubuntu上使用Filebeat监控日志
首先更新系统软件包并安装Filebeat:
sudo apt update && sudo apt upgrade -y
sudo apt install filebeat -y
安装完成后,Filebeat会自动配置为Systemd服务。
Filebeat的核心配置文件位于/etc/filebeat/filebeat.yml,需修改此文件定义输入源(要监控的日志)和输出目标(如Elasticsearch、Logstash)。
在filebeat.inputs部分添加日志路径,支持监控单个文件、目录或通配符。例如:
filebeat.inputs:
- type: log # 输入类型为日志
enabled: true # 启用此输入
paths:
- /var/log/syslog # 监控系统日志
- /var/log/*.log # 监控/var/log下所有.log文件
ignore_older: 72h # 忽略超过72小时的旧日志(减少资源消耗)
scan_frequency: 10s # 每10秒扫描一次文件变化(默认10s)
常用配置项:
exclude_files: 排除特定文件(如.gz压缩文件),例如exclude_files: ['\.gz$'];multiline: 处理多行日志(如Java异常堆栈),需配置pattern(匹配行首的正则)、negate(是否取反)、match(匹配方式,如after表示匹配行追加到上一行):multiline:
pattern: '^\[' # 以[开头的行视为新日志(如Java异常)
negate: true # 取反,即不匹配的行追加到上一行
match: after # 匹配方式
根据需求选择输出到Elasticsearch或Logstash:
output.elasticsearch:
hosts: ["localhost:9200"] # Elasticsearch地址(本地默认端口9200)
index: "filebeat-%{[agent.version]}-%{+yyyy.MM.dd}" # 动态生成索引名(如filebeat-8.12.0-2025.10.23)
若需对日志进行过滤、转换(如提取字段、格式化时间),可配置Logstash:
output.logstash:
hosts: ["localhost:5044"] # Logstash地址(默认端口5044)
# 可选:启用SSL加密(需配置证书)
# ssl.certificate_authorities: ["/etc/pki/root/ca.pem"]
注意:输出到Logstash时,需注释掉Elasticsearch的输出配置。
配置完成后,启动Filebeat并设置为开机自启:
sudo systemctl start filebeat # 启动服务
sudo systemctl enable filebeat # 开机自启
检查服务状态(确保为active (running)):
sudo systemctl status filebeat
若需重启服务(如修改配置后):
sudo systemctl restart filebeat
Filebeat自身日志位于/var/log/filebeat/filebeat,可通过以下命令实时查看:
sudo tail -f /var/log/filebeat/filebeat
若配置有误,日志会显示具体错误信息(如路径不存在、权限不足)。
使用-e(输出到终端)和-c(指定配置文件)参数测试:
sudo filebeat -e -c /etc/filebeat/filebeat.yml
无报错则表示配置正确。
若输出到Elasticsearch,可通过以下命令查看是否创建了filebeat-*索引:
curl -X GET "localhost:9200/_cat/indices?v"
应能看到类似filebeat-8.12.0-2025.10.23的索引。
Filebeat提供预构建模块(如system、nginx、mysql),简化常见日志的收集、解析和可视化。例如启用system模块(监控系统日志):
sudo filebeat modules enable system # 启用system模块
sudo filebeat setup --dashboards # 导入模块对应的Kibana仪表板(需提前安装Kibana)
启用后,Filebeat会自动解析系统日志(如auth.log、syslog),并在Kibana中展示可视化图表。
scan_frequency(默认10s)可根据日志量调整(如日志量大可设为5s,但会增加CPU负载);max_procs(默认为CPU核心数)可限制并发采集器数量,避免资源耗尽;output.elasticsearch.bulk_max_size(默认50)可增加批量发送的日志数量(如设为200),提高传输效率。通过Systemd命令查看Filebeat运行状态、重启次数等:
sudo systemctl status filebeat
sudo systemctl show filebeat --property=ActiveEnterTimestamp # 查看启动时间
Filebeat提供HTTP API查看性能指标(如日志处理速度、队列大小):
curl http://localhost:12201/stats # 默认端口12201(需确保output.elasticsearch.enabled: false)
返回结果包含filebeat、libbeat等模块的指标(如events.published表示已发送的事件数)。
若需更全面的监控(如实时性能趋势、告警),可配置Prometheus抓取Filebeat的/metrics接口(需在filebeat.yml中启用):
monitoring:
enabled: true
elasticsearch:
hosts: ["localhost:9200"]
prometheus:
enabled: true
listen_address: "0.0.0.0:9090" # Filebeat监听的Prometheus抓取地址
随后在Prometheus中添加Filebeat为数据源,并通过Grafana创建可视化面板。
通过以上步骤,即可在Ubuntu上使用Filebeat实现日志监控。根据实际需求调整配置(如添加处理器、修改输出目标),即可满足不同场景的日志收集需求。