在 CentOS 上使用 Filebeat 进行日志分析
一 架构与准备
- 组件分工:在 CentOS 上用 Filebeat 采集日志,发送到 Elasticsearch 存储与检索,使用 Kibana 进行可视化分析。
- 版本兼容:确保 Filebeat、Elasticsearch、Kibana 版本一致或兼容(示例使用 7.14)。
- 网络与端口:开放 Elasticsearch 9200、Kibana 5601,并确认 SELinux/防火墙 策略允许通信。
二 安装 Filebeat
- 使用 YUM 安装(推荐):
- 导入 GPG 并添加仓库:
- sudo rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
- sudo tee /etc/yum.repos.d/elasticsearch.repo <<EOF
[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
EOF
- 安装:sudo yum install -y filebeat
- 或使用 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 version
三 配置采集与输出
- 编辑主配置:sudo vi /etc/filebeat/filebeat.yml
- 示例一 直接输出到 Elasticsearch(采集系统日志)
- filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
- /var/log/messages
fields:
type: systemlog
log_topic: systemlog
fields_under_root: true
exclude_lines: [“^DBG”]
exclude_files: [“.gz$”]
- output.elasticsearch:
- hosts: [“elasticsearch-host:9200”]
- index: “system-logs-%{+yyyy.MM.dd}”
- 示例二 使用 Filebeat 模块(以 Nginx 为例)
- filebeat.modules:
- module: nginx
access:
var.paths: [“/var/log/nginx/access.log*”]
error:
var.paths: [“/var/log/nginx/error.log*”]
- output.elasticsearch:
- hosts: [“elasticsearch-host:9200”]
- index: “filebeat-nginx-%{+yyyy.MM.dd}”
- 说明:
- 多行日志(如堆栈)可在对应模块或 inputs 下配置 multiline 参数以合并多行事件。
- 如需输出到 Logstash,将 output.elasticsearch 替换为 output.logstash 并配置 hosts(示例:[“logstash-host:5044”])。
四 启动与验证
- 启动与开机自启:
- sudo systemctl start filebeat
- sudo systemctl enable filebeat
- 运行状态与日志:
- sudo systemctl status filebeat
- sudo journalctl -u filebeat -f
- sudo tail -f /var/log/filebeat/filebeat.log
- 检查 Elasticsearch 索引:
- curl -X GET “localhost:9200/_cat/indices?v” | grep filebeat
- Kibana 可视化:
- 访问 http://:5601
- 在 Management → Index Patterns 创建索引模式(如 filebeat-* 或 system-logs-*)
- 在 Discover 中检索与可视化日志。
五 生产常用优化
- 按应用拆分索引:在 inputs 中使用 fields.index,在 output.elasticsearch 中用 indices.when.equals 将不同应用写入不同索引(如 nginx、tomcat),便于权限与容量管理。
- 多行与编码处理:为 Java/Python 堆栈等配置 multiline;对 GBK/UTF-8 等日志设置 encoding,避免乱码。
- 安全传输:为 Elasticsearch/Logstash 启用 TLS/SSL 与认证(在 output.elasticsearch 中配置 ssl.* 与 username/password)。
- 资源与性能:合理设置 scan_frequency、close_older、max_bytes、spool_size、idle_timeout,平衡延迟与吞吐。
- 处理器增强:使用 dissect/grok/drop_fields 做字段解析与清理,减少存储与提升检索效率。