监控方案总览 在 Debian 上监控 HDFS 建议采用“内置界面 + 命令行巡检 + 指标监控/可视化 + 日志告警”的组合:用 NameNode Web UI 与 HDFS Shell 做即时查看与健康检查,用 Prometheus + Grafana 或 Zabbix 做持续指标与告警,用 Ambari 做集中化运维(可选)。HDFS 关键访问入口为:NameNode Web UI(Hadoop 3.x:9870,Hadoop 2.x:50070)与 ResourceManager Web UI:8088(用于查看与 HDFS 相关的作业与资源)。
快速巡检与即时诊断
可视化与指标监控
日志与告警要点
一键健康检查脚本示例
#!/usr/bin/env bash
set -euo pipefail
NN_HOST="${1:-localhost}"
REPORT=$(hdfs dfsadmin -fs "hdfs://$NN_HOST:9000" -report 2>/dev/null) || {
echo "ERROR: 无法连接 NameNode $NN_HOST:9000"
exit 1
}
echo "=== HDFS 快速健康检查 ==="
echo "报告时间: $(date -Iseconds)"
echo
# 活跃 DataNode 数
live_dn=$(echo "$REPORT" | awk '/Live datanodes/{print $3; exit}')
echo "活跃 DataNode 数: $live_dn"
# 容量与使用
cap_bytes=$(echo "$REPORT" | awk '/Capacity/{print $2; exit}')
used_bytes=$(echo "$REPORT" | awk '/Used/{print $2; exit}')
if [[ $cap_bytes -gt 0 ]]; then
used_pct=$(printf "%.2f" $(echo "$used_bytes * 100 / $cap_bytes" | bc -l))
else
used_pct="N/A"
fi
echo "容量: $(printf "%.2f GB" $(echo "$cap_bytes / 1024/1024/1024" | bc -l))"
echo "已用: $(printf "%.2f GB" $(echo "$used_bytes / 1024/1024/1024" | bc -l))"
echo "已用率: ${used_pct}%"
# 缺失/复制不足块
missing=$(echo "$REPORT" | awk '/Missing blocks/{print $3; exit}')
under_rep=$(echo "$REPORT" | awk '/Under replicated blocks/{print $4; exit}')
echo "缺失块: ${missing:-0}"
echo "复制不足块: ${under_rep:-0}"
# 简单判定
if [[ $live_dn -eq 0 ]]; then
echo "CRITICAL: 没有活跃 DataNode"
exit 2
fi
if [[ ${missing:-0} -gt 0 ]]; then
echo "CRITICAL: 存在缺失块"
exit 2
fi
if [[ ${under_rep:-0} -gt 0 ]]; then
echo "WARNING: 存在复制不足块"
exit 1
fi
echo "STATUS: OK"
将脚本加入 cron(如每 5 分钟)并结合 Zabbix/Prometheus Pushgateway 上报,可实现自动化健康巡检与告警。