在 CentOS 上使用 Filebeat 进行日志分析
一 环境准备与安装
- 准备一个可写入的 Elasticsearch 实例(如部署在本机则地址为 localhost:9200),以及可选的 Kibana(默认端口 5601)用于检索与可视化。
- 导入 Elastic GPG 并添加 YUM 仓库(以 7.x 为例,若使用其他主版本请替换版本号):
- 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
- 安装 Filebeat:sudo yum install filebeat -y
- 说明:也可使用 RPM 本地安装或 tar 包方式,生产环境建议选择与 Elasticsearch 版本匹配的 7.x 系列。
二 配置 Filebeat 采集与输出
- 编辑主配置文件 /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$”]
- type: log
enabled: true
paths:
- /var/log/myapp/*.log
json.keys_under_root: true
json.add_error_key: true
- filebeat.config.modules:
path: ${path.config}/modules.d/*.yml
reload.enabled: false
- processors:
- add_fields:
fields:
environment: production
- output.elasticsearch:
hosts: [“localhost:9200”]
index: “filebeat-%{[agent.version]}-%{+yyyy.MM.dd}”
- 关键说明:
- 使用 fields / fields_under_root 为事件添加自定义字段,便于后续在 Kibana 中筛选与聚合。
- 对 JSON 日志 使用 json.keys_under_root 将解析后的 JSON 字段提升到事件顶层,并开启错误键以便排错。
- 通过 exclude_lines / exclude_files 做简单过滤,减少噪声。
- 使用 modules.d 管理模块(如 system、apache、mysql 等),可按需启用并调整路径变量。
三 启动与验证
- 启动与开机自启:
- sudo systemctl start filebeat
- sudo systemctl enable filebeat
- 查看服务状态与日志:
- sudo systemctl status filebeat
- sudo journalctl -u filebeat -f
- 验证 Elasticsearch 是否收到数据:
- curl -X GET “localhost:9200/_cat/indices?v”
若配置正确,应能看到以 filebeat- 开头的索引生成。
四 在 Kibana 中分析与可视化
- 访问 http://<your_kibana_host>:5601,进入 Management → Index Patterns,创建索引模式(如 filebeat-*),选择时间字段 @timestamp。
- 打开 Discover,选择刚创建的索引模式,即可检索与筛选日志;结合 Dashboard 查看可视化图表与聚合结果。
- 如需开箱即用的图表与解析管道,可在启用对应 Filebeat 模块 后,加载其 Kibana 仪表板与 Elasticsearch 索引模板。
五 生产常用优化与安全建议
- 解析与过滤:
- 多行日志(如 Java 堆栈)使用 multiline 配置合并后再输出。
- 结构化解析优先用 json.keys_under_root / add_error_key;非 JSON 可使用 dissect / grok 处理器进行字段抽取。
- 性能与资源:
- 合理设置 scan_frequency / backoff 等参数,平衡采集实时性与 CPU 占用;必要时调整内部队列与批量大小。
- 安全传输:
- 跨主机传输时,在 output.elasticsearch 中启用 SSL/TLS 与认证(如用户名/密码或 API Key),避免明文传输。
- 版本与兼容:
- 确保 Filebeat 与 Elasticsearch/Kibana 主版本一致,减少兼容性问题。
- 运维提示:
- 首次接入大量历史文件时谨慎使用 tail_files: true,避免漏读;变更采集路径或状态前备份 registry 位置,防止重复采集或丢数。