在 CentOS 上实现 HDFS 监控报警
一、方案总览与工具选型
- 推荐以Prometheus + Grafana为核心,配合Hadoop Exporter/JMX Exporter采集 HDFS/JMX 指标,Grafana 负责可视化与Alerting;同时用 Node Exporter 采集操作系统层指标,形成“HDFS + 节点”一体化监控。
- 若已使用 Ambari 或 Cloudera Manager,可直接利用其内置的健康检查与告警能力,降低自建成本。
- 传统方案可选 Zabbix/Nagios,通过自定义脚本或 JMX 采集实现监控与告警。
- 快速对比:
- Prometheus:时序数据、灵活告警、生态完善,适合自建可观测平台。
- Ambari/Cloudera Manager:Hadoop 全家桶一体化,开箱即用,适合 CDH/HDP 场景。
- Zabbix/Nagios:企业级老牌监控,告警渠道丰富,适合已有监控体系。
二、基于 Prometheus 与 Grafana 的落地步骤
- 采集 HDFS 指标
- 在每个 NameNode/DataNode 上启用 JMX(Hadoop 默认开启),通过 Hadoop Exporter 或 JMX Exporter 暴露指标;Prometheus 配置 scrape job 拉取这些端点。
- 采集节点指标
- 在所有节点部署 Node Exporter,Prometheus 拉取节点 CPU/内存/磁盘/IO 等指标,便于定位 HDFS 问题是否源自底层资源。
- 配置告警规则
- 在 Prometheus 定义告警规则(如容量阈值、副本缺失、服务不可用等),通过 Alertmanager 路由到邮件、企业微信、钉钉、Slack 等通道。
- Grafana 可视化与告警
- Grafana 添加 Prometheus 数据源,导入或自建 HDFS 仪表盘,并在 Grafana 的 Alerting 模块配置阈值与通知,形成统一视图与统一告警入口。
- 参考要点
- Hadoop UI:Hadoop 2.x 默认 50070,3.x 默认 9870,可用于快速核对集群状态与指标口径。
- 常见采集对象:HDFS 组件 JMX、节点 Node Exporter、HDFS 服务状态与块报告等。
三、关键监控指标与建议阈值
| 指标 |
含义 |
建议阈值 |
告警动作 |
| HDFS 容量使用率 |
已用/总容量 |
≥ 80% 预警,≥ 90% 严重 |
扩容、清理、均衡 |
| DataNode 存活数 |
健康节点数 |
低于 预期数量 |
检查宕机/网络/磁盘 |
| 缺失/损坏块数 |
数据可靠性 |
> 0 严重 |
立刻排查副本与磁盘 |
| 复制不足块数 |
副本数低于策略 |
> 0 预警 |
调整副本/触发均衡 |
| NameNode/DataNode 进程存活 |
进程状态 |
任一进程宕机 |
自动拉起/人工介入 |
| 节点磁盘使用率 |
OS 层磁盘 |
≥ 80% 预警 |
清理/扩容/迁移 |
| NameNode RPC 延迟/排队 |
请求处理健康度 |
持续升高 |
排查 GC/负载/网络 |
| HDFS 请求错误率 |
读写/列表失败比例 |
持续 > 0.1% |
排查权限/网络/磁盘 |
- 阈值需结合容量规划与业务容忍度微调,并建议以“预警—严重”两级策略落地。
四、快速验证与排错清单
- 连通性与指标可达
- 在 Prometheus 的 Targets 页面确认 Hadoop Exporter/JMX Exporter 与 Node Exporter 均为 UP;在 Grafana Explore 查询如 HDFS 容量/缺失块 等指标是否有数据。
- 告警通道验证
- 在 Alertmanager 发送测试告警,确认 邮件/企业微信/钉钉/Slack 能收到;在 Grafana 触发测试规则,核对通知内容与收敛策略。
- 基线核对
- 用 hdfs dfsadmin -report 与 **HDFS Web UI(50070/9870)**核对容量、DataNode 数量、块报告;用 jps 确认 NameNode/DataNode 进程存活;必要时用 hdfs fsck / 检查文件系统健康。