首页主机资讯Filebeat如何监控CentOS磁盘空间

Filebeat如何监控CentOS磁盘空间

时间2025-11-26 17:13:03发布访客分类主机资讯浏览1061
导读:Filebeat监控CentOS磁盘空间的实用方案 一、总体思路 使用 Metricbeat 采集磁盘指标(推荐):Metricbeat 自带 system 模块,可定期采集 diskio、filesystem 等指标并发送到 Elast...

Filebeat监控CentOS磁盘空间的实用方案

一、总体思路

  • 使用 Metricbeat 采集磁盘指标(推荐):Metricbeat 自带 system 模块,可定期采集 diskio、filesystem 等指标并发送到 Elasticsearch/Kibana,用于容量与性能趋势分析与告警。
  • 使用 Filebeat 读取系统日志:通过 Filebeat 收集 /var/log/messages、/var/log/secure 等系统日志,再用 Logstash/Grok 解析出磁盘相关事件(如磁盘满、I/O 错误),用于事件型告警与审计。
  • 使用 脚本输出为日志:在 CentOS 上用 shell/python 定时采集 df/du/iostat 等数据,写入文件,再由 Filebeat 采集并上报,适合轻量或无法部署 Metricbeat 的场景。

二、方案一 Metricbeat采集磁盘指标(推荐)

  • 安装与启用模块
    • 安装 Metricbeat(与 Filebeat 同属 Beats 家族,安装方式一致)。
    • 启用 system 模块并加载默认仪表板:
      • 命令:sudo metricbeat modules enable system
      • 导入仪表板:sudo metricbeat setup -e
  • 关键配置要点(/etc/metricbeat/metricbeat.yml)
    • 输出到 Elasticsearch 或 Logstash(示例为 ES):
      • output.elasticsearch:
        • hosts: [“your-es:9200”]
        • username: “elastic”
        • password: “your-password”
    • 采集间隔建议:period: 10s(可按需调整)
  • 验证与可视化
    • 检查:sudo metricbeat test output
    • 启动:sudo systemctl start metricbeat & & sudo systemctl enable metricbeat
    • KibanaDashboard 中查看 System metricsFilesystem 相关面板,配置阈值告警(如磁盘使用率 > 80%)。
  • 说明
    • 若使用云上托管 Elasticsearch/Logstash,可在控制台创建 Beats 采集器 并开启 Monitoring/Kibana Dashboard,降低部署复杂度。

三、方案二 Filebeat采集系统日志中的磁盘事件

  • 适用场景:需要捕获“磁盘已满、I/O 错误”等离散事件,或环境中已部署 Filebeat 但未部署 Metricbeat。
  • 配置示例(/etc/filebeat/filebeat.yml)
    • filebeat.inputs:
      • type: log enabled: true paths:
        • /var/log/messages
        • /var/log/secure tags: [“system”, “disk”] fields: log_type: system
    • 输出(示例到 Logstash,便于解析与丰富):
      • output.logstash:
        • hosts: [“your-logstash:5044”]
  • Logstash 解析示例(Grok 模式可按需扩展)
    • filter { if “disk” in [tags] { grok { match => { “message” => “%{ SYSLOGTIMESTAMP:timestamp} %{ SYSLOGHOST:host} %{ DATA:program} (?:[%{ POSINT:pid} ])?: %{ GREEDYDATA:msg} ” } } if [msg] =~ /No space left on device/ { mutate { add_tag => [“disk_full”] } } if [msg] =~ /I/O error/ { mutate { add_tag => [“disk_io_error”] } } date { match => [ “timestamp”, “MMM d HH:mm:ss”, “MMM dd HH:mm:ss” ] } } }
  • Kibana 中创建基于 tags: disk_full 或 disk_io_error 的告警规则,实现“磁盘空间不足/异常”即时通知。

四、方案三 脚本采集+Filebeat上报(轻量替代)

  • 采集脚本(示例:/usr/local/bin/disk_usage.sh)
    • #!/usr/bin/env bash ts=$(date -u +“%Y-%m-%dT%H:%M:%SZ”) df -B1 | awk ‘NR> 1 { gsub(/%/,“”,$5); printf “{ "@timestamp":"%s","host":"%s","mount":"%s","used_pct":%d,"used_bytes":%d,"available_bytes":%d} \n”,ts,hostname,$6,$5,$3,$4} ’ > > /var/log/disk-usage.log
  • Filebeat 配置(/etc/filebeat/filebeat.yml)
    • filebeat.inputs:
      • type: log enabled: true paths:
        • /var/log/disk-usage.log json.keys_under_root: true json.add_error_key: true
    • output.elasticsearch:
      • hosts: [“your-es:9200”]
  • 定时任务
    • */5 * * * * /usr/local/bin/disk_usage.sh
  • Kibana 中基于 used_pct 建立阈值告警与趋势面板。

五、避免Filebeat自身引发磁盘占满

  • 日志轮转导致句柄未释放是常见问题:被删除但仍被 Filebeat 持有的文件会显示为 deleted 状态,磁盘空间不释放。
  • 关键配置(在 Filebeat 输入项中按需调整):
    • close_inactive: 5m(无新日志一段时间后关闭句柄,默认 5m)
    • close_timeout: 3h(强制关闭未读完的文件句柄,存在潜在数据丢失风险,需评估)
    • clean_inactive: 72h(清理长时间未见的文件状态,避免 registry 膨胀)
    • ignore_older: 70h(仅采集最近数据,需小于 clean_inactive)
  • 排查命令
    • lsof | grep deleted | grep filebeat(定位被删除但仍被占用的文件)
  • 建议:优先优化轮转与采集参数;若必须启用 close_timeout,务必评估对数据完整性的影响。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: Filebeat如何监控CentOS磁盘空间
本文地址: https://pptw.com/jishu/756863.html
怎样启用Apache2的模块功能 CentOS上Filebeat如何实现自动化部署

游客 回复需填写必要信息