温馨提示×

如何利用Filebeat提升CentOS系统的可观测性

小樊
45
2026-01-02 04:05:25
栏目: 智能运维

利用 Filebeat 提升 CentOS 可观测性的落地方案

一 架构与准备

  • 目标:统一采集系统日志、应用日志,在 Elasticsearch 中存储并在 Kibana 可视化,必要时经 Logstash 做解析与丰富,形成“采集-处理-存储-展示”的闭环。
  • 组件与端口:
    • Filebeat(客户端,轻量采集)→ Logstash(可选,解析/丰富)→ Elasticsearch(存储/检索)→ Kibana(可视化/仪表盘)
    • 常用端口:9200(ES HTTP)、5601(Kibana)、5044(Logstash Beats 输入)
  • 安装与基础检查(CentOS 7/8/Stream):
    • 安装:sudo yum install -y filebeat
    • 状态:sudo systemctl status filebeat
    • 日志:sudo journalctl -u filebeat -f
    • 配置文件路径:/etc/filebeat/filebeat.yml
    • 服务管理:sudo systemctl enable filebeat && sudo systemctl start filebeat
    • 注意:若使用 Logstash 输出,目标应为 5044 而非 9200;若直连 Elasticsearch,目标为 9200

二 快速配置步骤

  • 启用系统模块(推荐):
    • 启用模块:sudo filebeat modules enable system
    • 按需编辑模块:sudo vi /etc/filebeat/modules.d/system.yml
    • 首次导入 Kibana 仪表盘(可选):sudo filebeat setup -e(需配置好 setup.kibana.host 与输出)
  • 最小可用配置示例(直连 ES):
    • 编辑:sudo vi /etc/filebeat/filebeat.yml
    • 片段:
      filebeat.inputs:
      - type: filestream
        enabled: true
        paths:
          - /var/log/*.log
          - /var/log/messages
          - /var/log/secure
      
      output.elasticsearch:
        hosts: ["es-host:9200"]
        username: "elastic"
        password: "your_password"
        compression: true
      
      setup.kibana:
        host: "kibana-host:5601"
      
    • 启动:sudo systemctl restart filebeat
  • 最小可用配置示例(经 Logstash):
    filebeat.inputs:
    - type: filestream
      enabled: true
      paths:
        - /var/log/*.log
    
    output.logstash:
      hosts: ["logstash-host:5044"]
    
    • 启动:sudo systemctl restart filebeat
  • 验证要点:
    • 服务与日志:systemctl status filebeatjournalctl -u filebeat -f
    • ES 索引:检查是否生成 filebeat-* 索引
    • Kibana:在 Discover 中查看日志,在 Dashboard 导入系统模块仪表盘。

三 关键配置与性能优化

  • 输入与多行日志:
    • 优先使用 filestream 输入(较旧 log 输入更高效);对 Java 堆栈Nginx 多行日志使用 multiline 正确合并。
  • 可靠性与吞吐:
    • 开启持久化队列queue.type: persisted,并调优 queue.max_bytesflush.min_events
    • 批量发送:bulk_max_size 适度增大
    • 忽略旧文件:ignore_older 减少无效扫描
    • 压缩传输:compression: true
  • 资源与权限:
    • 提升文件描述符限制(编辑 /etc/security/limits.conf
    • 避免复杂处理器,先做“轻采集、重解析”(在 Logstash 或 Ingest Pipeline 处理)
  • 自监控:
    • 使用 Filebeat 自带 HTTP API 查看内部指标:curl http://<filebeat-host>:8080/stats
    • 如需在 Prometheus/Grafana 展示,可部署 filebeat_exporter

四 安全与运维实践

  • 认证与加密:
    • 启用 TLS/SSL用户名/密码;示例(ES 输出):
      output.elasticsearch:
        hosts: ["https://es-host:9200"]
        username: "elastic"
        password: "your_password"
        ssl.certificate_authorities: ["/etc/pki/CA/certs/ca.crt"]
      
    • 若经 Logstash 传输,也建议启用 SSL
  • 防火墙与最小暴露面:
    • 仅开放必要端口(如 9200/5601/5044),限制来源网段。
  • 升级与变更:
    • 定期更新:sudo yum update filebeat
    • 变更前备份配置:sudo cp /etc/filebeat/filebeat.yml /etc/filebeat/filebeat.yml.bak
  • 运行与审计:
    • 持续查看服务状态与日志:systemctl status filebeatjournalctl -u filebeat -f
    • Kibana 建立告警与可视化,覆盖关键日志路径(如 /var/log/messages/var/log/secure)。

0