如何在CentOS上使用Filebeat分析日志
首先从Elastic官方网站下载适用于CentOS的Filebeat RPM包(以7.14.0版本为例),使用rpm命令安装:
wget https://artifacts.elastic.co/downloads/beats/filebeat/filebeat-7.14.0-x86_64.rpm
sudo rpm -ivh filebeat-7.14.0-x86_64.rpm
安装完成后,Filebeat配置文件默认位于/etc/filebeat/filebeat.yml。
编辑/etc/filebeat/filebeat.yml,核心配置包括输入源(Input)和输出目标(Output):
/var/log/*.log),可添加exclude_files排除压缩文件(如.gz):filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
exclude_files: ['\.gz$']
output.elasticsearch:
hosts: ["localhost:9200"] # 若Elasticsearch在远程服务器,替换为对应IP
index: "centos-system-logs-%{+YYYY.MM.dd}" # 动态生成索引名(如centos-system-logs-2025.10.07)
fields自定义日志类型(便于后续筛选),或exclude_lines排除调试信息(如DBG):fields:
log_type: "system"
fields_under_root: true # 将自定义字段提升到事件根层级
exclude_lines: ["DBG"] # 排除包含"DBG"的行
dissect处理器解析结构化日志(如JSON格式),提取关键字段:filebeat.inputs:
- type: log
paths:
- /var/log/myapp/*.log
processors:
- dissect:
tokenizer: "%{timestamp} %{level} %{message}" # 按空格分割日志行
field: "message" # 解析的原始字段
target_prefix: "" # 解析后的字段存入根层级
autodiscover功能监控动态生成的日志文件(如Docker容器日志):filebeat.autodiscover:
providers:
- type: kubernetes
nodes: ["node1", "node2"] # Kubernetes节点列表
hints.enabled: true # 启用hints机制(根据容器标签自动配置)
使用systemctl命令启动Filebeat,并设置为开机自启动:
sudo systemctl start filebeat
sudo systemctl enable filebeat
查看Filebeat运行状态,确认服务是否正常:
sudo systemctl status filebeat
若状态显示为active (running),则表示启动成功。
通过tail命令实时查看Filebeat自身日志,排查配置错误:
sudo tail -f /var/log/filebeat/filebeat.log
确保已安装并配置好Kibana(与Elasticsearch版本兼容),访问Kibana仪表板(默认地址:http://<kibana-server>:5601)。
centos-system-logs-*,匹配Filebeat生成的索引);@timestamp),完成创建。log_type: system)、排序(如按@timestamp降序);filestream替代log,提升大文件处理效率和资源利用率:filebeat.inputs:
- type: filestream
enabled: true
paths:
- /var/log/*.log
bulk_max_size,默认50),增加并发处理能力(harvester_limit,默认无限制);启用输出压缩(compression: gzip),减少网络带宽占用。通过以上步骤,即可在CentOS上使用Filebeat完成日志收集、传输与分析,结合Elasticsearch和Kibana实现日志的可视化与深度洞察。