在 CentOS 上使用 Filebeat 进行日志分析
一 架构与准备
- 组件分工:Filebeat 负责采集与轻量处理日志,Elasticsearch 负责存储与检索,Kibana 负责可视化分析。
- 环境建议:操作系统 CentOS 7/8,已安装并运行 Elasticsearch 与 Kibana,网络可达(Elasticsearch 默认 9200,Kibana 默认 5601)。如启用安全功能,准备 用户名/密码 或 TLS 证书。
二 安装与配置 Filebeat
- 安装步骤
- 导入 GPG 并添加 Elastic 仓库(以 7.x 为例):
- sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
- echo “[elasticsearch-7.x]
name=Elasticsearch repository for 7.x packages
baseurl=https://artifacts.elastic.co/packages/7.x/yum
gpgcheck=1
gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch
enabled=1
autorefresh=1
type=rpm-md” | sudo tee /etc/yum.repos.d/elasticsearch.repo
- 安装 Filebeat:sudo yum install filebeat -y
- 核心配置示例(/etc/filebeat/filebeat.yml)
- 采集系统与应用日志,启用 Nginx 模块,输出到 Elasticsearch,并做简单解析:
- filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
- /var/log/nginx/*.log
exclude_files: [‘.gz$’]
ignore_older: 72h
scan_frequency: 5s
- filebeat.modules:
- processors:
- dissect:
tokenizer: “%{timestamp} %{level} %{message}”
field: “message”
target_prefix: “”
- decode_json_fields:
fields: [“message”]
target: “”
overwrite_keys: true
- output.elasticsearch:
hosts: [“localhost:9200”]
index: “filebeat-%{+yyyy.MM.dd}”
如启用安全:
username: “elastic”
password: “your_password”
-
如需更强处理能力,可改为输出到 Logstash(取消注释并配置 hosts)
output.logstash:
hosts: [“logstash:5044”]
- 说明:
- ignore_older 减少历史堆积;scan_frequency 提升新文件发现速度;
- dissect 与 decode_json_fields 用于结构化解析;
- filebeat.modules 提供 Nginx/Apache/System 等开箱即用采集与解析规则。
三 启动与验证
- 启动与开机自启
- sudo systemctl start filebeat
- sudo systemctl enable filebeat
- 配置与运行状态检查
- 校验配置:filebeat test config -e
- 查看服务:sudo systemctl status filebeat
- 查看 Filebeat 自身日志:sudo tail -f /var/log/filebeat/filebeat
- 验证数据是否入库
- curl -X GET “localhost:9200/_cat/indices?v” | grep filebeat
- 若使用安全特性,请在 curl 中添加 -u elastic:password。
四 在 Kibana 中分析与可视化
- 访问 http://<kibana_host>:5601,进入 Management > Index Patterns,创建索引模式(如 filebeat-*),选择时间字段 @timestamp。
- 打开 Discover,选择索引模式,按 level: ERROR、service 等条件筛选,查看结构化字段。
- 进入 Visualize Library 创建图表(如按小时统计 ERROR 数量趋势),并保存为 Dashboard 进行统一监控。
五 优化与扩展
- 索引生命周期管理(ILM)
- 使用 ILM 自动滚动与清理旧索引(如保留近 30 天),降低存储压力。
- 安全与合规
- 启用 TLS/认证,并在输出中配置 username/password 或 CA 证书;必要时对事件做 drop_fields 脱敏。
- 多目标与解耦
- 通过 output.logstash 将解析与丰富逻辑下沉到 Logstash,再由 Logstash 输出到 Elasticsearch/Kafka 等。
- 调试与观测
- 调整 Filebeat 自身日志级别:logging.level: debug,便于排查采集问题。