CentOS与Filebeat集成指南
导读:一 环境准备与安装 准备一台 CentOS 7/8 主机,确保网络可达目标 Elasticsearch/Logstash/Kibana,并具备 sudo 权限。 导入 Elastic GPG 公钥并添加官方 YUM 源(示例为 7.x,可...
一 环境准备与安装
- 准备一台 CentOS 7/8 主机,确保网络可达目标 Elasticsearch/Logstash/Kibana,并具备 sudo 权限。
- 导入 Elastic GPG 公钥并添加官方 YUM 源(示例为 7.x,可按需替换为你的版本):
- rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
- tee /etc/yum.repos.d/filebeat.repo < < EOF [filebeat-7.x] name=Elastic 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
- 安装并启动服务:
- yum install -y filebeat
- systemctl daemon-reload
- systemctl enable --now filebeat
- 验证安装:
- systemctl status filebeat
- tail -f /var/log/filebeat/filebeat
二 快速集成方案
- 直连 Elasticsearch(适合小规模或 PoC)
- 配置 /etc/filebeat/filebeat.yml:
- filebeat.inputs:
- type: log
enabled: true
paths:
- /var/log/*.log
- /var/log/myapp/*.log
- type: log
enabled: true
paths:
- output.elasticsearch:
- hosts: [“es-host1:9200”,“es-host2:9200”]
- index: “filebeat-%{ [agent.version]} -%{ +yyyy.MM.dd} ”
- filebeat.inputs:
- 启动:systemctl restart filebeat
- 配置 /etc/filebeat/filebeat.yml:
- 经由 Logstash 处理(适合复杂解析、脱敏、路由)
- Filebeat 输出到 Logstash:
- output.logstash:
- hosts: [“logstash-host:5044”]
- output.logstash:
- Logstash 配置示例(/etc/logstash/conf.d/filebeat.conf):
- input { beats { port => 5044 } }
- filter { grok { match => { “message” => “%{ COMBINEDAPACHELOG} ” } date { match => [“timestamp”,“dd/MMM/yyyy:HH:mm:ss Z”] target => “datetime” } geoip { source => “clientip” } }
- output { elasticsearch { hosts => [“es-host:9200”] index => “access_log-%{ +yyyy.MM.dd} ” } }
- 启动:systemctl restart filebeat; systemctl restart logstash
- Filebeat 输出到 Logstash:
- 与 Kibana 联动
- 在 Kibana 中配置 Elasticsearch 地址,使用 Discover/Stack Management 查看与创建索引模式(索引前缀如 filebeat-* 或 logstash-*)。
三 常用配置要点
- 输入与多行
- 常用参数:paths、exclude_lines/include_lines、exclude_files、tail_files、json.keys_under_root/json.message_key、harvester_buffer_size。
- 多行场景(如 Java 堆栈)建议设置 multiline 合并后再做 include/exclude。
- 处理器与字段
- 添加业务字段:fields: { env: prod, app: myapp } ;fields_under_root: true 可将字段提升为顶层。
- 时间与脚本处理:processors 可使用 timestamp、script(如 JavaScript)做字段提取与时间标准化。
- 输出与索引
- 多输出需谨慎(避免重复采集);生产建议固定索引生命周期策略(ILM)。
- 关闭 ILM 并自定义索引名示例:
- setup.ilm.enabled: false
- setup.template.name: “myapp”
- setup.template.pattern: “myapp-*”
- output.elasticsearch.index: “myapp-log-%{ +yyyy.MM.dd} ”
- 安全与代理
- 启用安全时:output.elasticsearch.hosts 使用 https,并配置 username/password 或 API Key。
- 需要代理:在 filebeat.yml 中配置 http_proxy/https_proxy。
四 安全加固与运维
- 文件与目录权限
- Filebeat 配置与日志目录建议仅对 root 可读写:chown -R root:root /etc/filebeat /var/log/filebeat;权限 600/640。
- 日志轮转
- 为 Filebeat 自身日志配置 logrotate(/etc/logrotate.d/filebeat):
- /var/log/filebeat/*.log { daily missingok rotate 7 compress notifempty create 640 root root }
- 为 Filebeat 自身日志配置 logrotate(/etc/logrotate.d/filebeat):
- 服务与自启
- 使用 systemd 管理:systemctl enable --now filebeat;变更配置后 systemctl restart filebeat。
- 运行监控
- 实时查看服务日志:journalctl -u filebeat -f
- 查看 Filebeat 自身输出:tail -f /var/log/filebeat/filebeat。
五 常见问题与排查
- 权限不足导致读取失败
- 现象:Filebeat 无法读取应用日志(如 /var/log/myapp/*.log)。
- 处理:确认运行用户(常见为 root 或专用用户)对日志文件具备 读权限;必要时将用户加入对应组或调整文件权限。
- 重复采集
- 现象:同一条日志被多次入库。
- 处理:确保同一文件只被一个输入采集;避免多个 Filebeat 实例采集相同路径;必要时清理 registry 状态后重启(会重发历史)。
- 多行日志被拆分
- 现象:堆栈被拆成多事件。
- 处理:启用 multiline 将多行合并为一条事件,再做 include/exclude 与解析。
- 索引未按预期创建
- 现象:Kibana 看不到数据或索引名不符。
- 处理:检查 output.elasticsearch.index 与 ILM 设置;如使用自定义索引模板,确认已加载且 pattern 匹配;必要时关闭 ILM 并自定义索引名。
- 连接 Elasticsearch/Logstash 失败
- 现象:服务启动但无数据上报。
- 处理:核对 hosts、端口、协议(http/https)、认证信息;在目标端放通防火墙与安全组;查看 Filebeat 与对端服务日志定位握手/认证/解析错误。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: CentOS与Filebeat集成指南
本文地址: https://pptw.com/jishu/785613.html
