1. 安装Filebeat
在Ubuntu上安装Filebeat需通过APT包管理器完成。首先更新系统包列表,添加Elastic官方GPG密钥和APT仓库,最后安装Filebeat:
sudo apt update
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 update
sudo apt install filebeat
安装完成后,Filebeat服务会自动安装但未启动。
2. 配置Filebeat输入源
Filebeat通过/etc/filebeat/filebeat.yml配置文件定义输入源。需启用log类型的输入,并指定要监控的日志文件路径(支持通配符*):
filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/syslog # 监控系统日志
- /var/log/auth.log # 监控认证日志
- /opt/app/*.log # 监控应用日志(自定义路径)
ignore_older: 72h # 忽略超过72小时的旧日志(减少资源消耗)
若需监控多行日志(如Java堆栈跟踪),可添加multiline配置:
multiline.pattern: '^\[' # 匹配行首为'['的日志行(如Java异常)
multiline.negate: true # 反向匹配(非行首的行视为多行内容)
multiline.match: after # 将多行内容追加到上一行之后
此配置确保跨行日志被合并为一个完整事件。
3. 配置Filebeat输出目标
实时分析需将日志发送至支持实时检索的后端,常见选择为Elasticsearch(直接存储并索引)或Logstash(复杂过滤后再存储)。
output.elasticsearch:
hosts: ["localhost:9200"] # Elasticsearch服务器地址(本地测试用)
index: "filebeat-%{+yyyy.MM.dd}" # 按日期动态分索引(便于管理)
ilm_enabled: true # 启用索引生命周期管理(自动归档旧数据)
output.logstash:
hosts: ["localhost:5044"] # Logstash服务器地址
根据需求选择其中一种输出方式(若需复杂处理选Logstash,简单存储选Elasticsearch)。
4. 启用Filebeat模块(简化常见日志配置)
Filebeat提供预定义模块(如system、apache、mysql),可自动解析常见日志格式(如syslog、Apache访问日志),无需手动编写正则表达式。启用system模块的步骤:
sudo filebeat modules enable system # 启用system模块
sudo filebeat setup # 加载模块配置并创建Elasticsearch索引模板
启用后,system模块会自动监控/var/log/syslog、/var/log/auth.log等系统日志,并按预定义规则解析字段(如时间戳、主机名、进程名)。
5. 启动与验证Filebeat服务
配置完成后,启动Filebeat服务并设置为开机自启:
sudo systemctl start filebeat # 启动服务
sudo systemctl enable filebeat # 开机自启
检查服务状态,确认运行正常:
sudo systemctl status filebeat # 应显示"active (running)"
查看Filebeat自身日志,排查配置错误:
sudo journalctl -u filebeat -f # 实时查看日志
验证日志是否发送至Elasticsearch:
curl -X GET "localhost:9200/_search?pretty" -H 'Content-Type: application/json' -d '{"query": {"match_all": {}}}'
若返回包含日志数据的JSON结果,说明配置成功。
6. 实时分析与可视化(可选但推荐)
实时分析需将日志数据导入Kibana(Elastic Stack的可视化工具),步骤如下:
sudo apt install kibana
sudo systemctl start kibana
sudo systemctl enable kibana
http://<服务器IP>:5601),登录后进入“Discover”页面。filebeat-*),即可实时查看、搜索和分析日志数据。7. 性能优化(确保实时性)
为避免日志丢失或延迟,需调整以下参数:
inotify监控文件变化,默认限制可能过低。编辑/etc/sysctl.conf,添加:fs.inotify.max_user_watches=524288 # 提高监控文件数量上限
执行sudo sysctl -p使更改生效。scan_frequency(检测日志文件变化的时间间隔),默认为10s,可改为30s(平衡资源占用与实时性):filebeat.inputs:
- type: log
scan_frequency: 30s # 每30秒扫描一次文件变化
queue.spool参数:queue.spool.size: 1024 # 内存缓冲区大小(MB)
queue.spool.overflow.size: 1024 # 磁盘溢出缓冲区大小(MB)
这些优化可提升Filebeat的实时处理能力。