温馨提示×

CentOS如何利用Filebeat监控系统资源

小樊
45
2025-12-17 12:45:58
栏目: 智能运维

在 CentOS 上,Filebeat 本身不直接采集系统指标(CPU、内存、磁盘、网络等),常见做法是通过脚本/命令将指标写入日志文件,再由 Filebeat 采集并发送到 Elasticsearch 或 Kafka,最终在 Kibana 或 Grafana 中可视化与告警。

整体架构与前提

  • 采集链路:系统命令/脚本 → 日志文件 → Filebeat → Elasticsearch/Kafka → Kibana/Grafana
  • 组件准备:在 CentOS 安装 Filebeat;准备 Elasticsearch/Logstash/Kafka 任一接收端;如需可视化,准备 Kibana/Grafana
  • 建议目录与权限:为指标日志创建专用目录(如 /var/log/sysmon/),并确保 filebeat 用户可读。

方案一 日志文件方式采集系统指标

  • 步骤 1 安装 Filebeat
    • 使用 YUM 安装并启动服务:
      • 安装:sudo yum install -y filebeat
      • 启动/自启:sudo systemctl start filebeat && sudo systemctl enable filebeat
      • 验证:sudo systemctl status filebeatjournalctl -u filebeat -f
  • 步骤 2 生成系统指标日志
    • top 为例,将快照追加到日志文件(建议后台运行并做轮转):
      • 命令:top -b -d 10 >> /var/log/sysmon/top.log &
      • 说明:可按需替换为 vmstat、iostat、sar、netstat 等命令,或编写脚本输出 JSON 便于解析。
  • 步骤 3 配置 Filebeat 采集
    • 编辑 /etc/filebeat/filebeat.yml,示例:
      • 输入:
        • filebeat.inputs:
          • type: log enabled: true paths:
            • /var/log/sysmon/*.log

            若输出到 ES 且需要索引生命周期管理,可按需设置 ilm

            setup.ilm.enabled: false

      • 输出(三选一或并存,示例为 ES):
        • output.elasticsearch:
          • hosts: [“http://<es_host>:9200”]
        • 或 output.kafka:
          • hosts: [“<kafka_host>:9092”] topic: “sysmon-metrics” compression: gzip
        • 或 output.logstash:
          • hosts: [“<logstash_host>:5044”]
  • 步骤 4 启动与验证
    • 重启 Filebeat:sudo systemctl restart filebeat
    • 在目标端(ES/Kafka/Logstash)查看是否收到数据;在 Kibana 建立索引模式并检索 @timestamp、host、message 等字段。

方案二 输出到 Kafka 并实时处理

  • 适用场景:需要流式处理、解耦采集与分析、对接多系统。
  • Filebeat 侧配置(示例):
    • output.kafka:
      • hosts: [“<kafka_broker1>:9092”,“<kafka_broker2>:9092”]
      • topic: “sysmon-metrics”
      • version: “2.0.0” # 与 Kafka 版本匹配
      • compression: gzip
  • 下游实时处理(示例架构):
    • Kafka → Flink/Spark Streaming → Elasticsearch → Kibana/Grafana,在流处理作业中解析日志行(如 top 的空格分隔或 JSON),计算 CPU%、内存使用、I/O、连接数 等指标并落库。

可视化与告警

  • Kibana:
    • 创建 Index Pattern(如 filebeat-* 或 sysmon-*),基于 @timestamp 建立 Discover/Lens 图表;使用 Dashboard 构建 CPU、内存、磁盘、网络 概览;通过 Threshold/Metric Threshold 设置告警。
  • Grafana(若走 Kafka → Flink → ES):
    • Elasticsearch 为数据源,导入或自建 Grafana Dashboard,配置阈值告警并接入通知渠道(如 邮件/钉钉/企业微信/短信)。

性能与安全建议

  • 性能与资源
    • 限制采集占用:在 filebeat.yml 设置 max_procs: <CPU核数>;合理设置 queue.mem.events / flush.min_events / flush.timeout 以平衡吞吐与延迟;必要时启用 持久化队列(queue.type: persisted) 提升可靠性。
  • 日志与文件管理
    • 使用 logrotate/var/log/sysmon/*.log 做按日轮转与压缩,避免无限增长;为 Filebeat 配置 ignore_older / clean_inactive 等参数减少无效扫描与注册表膨胀。
  • 安全
    • 输出到 ES/Kafka 时启用 认证与 TLS;在 Kibana 中基于 角色/权限 控制仪表盘与索引访问;仅开放必要端口与网络路径。

0