监控体系总览
- 在 Debian 上监控 HBase,建议以“内置界面 + JMX 指标 + 时间序列/告警平台 + 日志”的组合方式构建闭环。
- 内置与基础检查:
- 使用 HBase Web UI 查看集群、RegionServer、HMaster 的健康与负载;常见访问端口为 16010(HMaster UI)。
- 通过 HBase Shell 执行 status 等命令做快速巡检。
- 借助 JMX 暴露 JVM、RPC、MemStore、Compaction 等关键指标,便于外部系统采集与告警。
快速检查与内置界面
- HBase Web UI:访问 http://:16010,关注 集群/RegionServer 数量、请求数、读写延迟、MemStore、GC 状态、Region 分布与均衡 等面板,用于日常巡检与容量感知。
- HBase Shell:在 /opt/hbase-/bin/hbase shell 中执行 status,快速判断 RegionServer 存活 与 集群可用性。
JMX 与 Prometheus Grafana 实战
- 采集思路:在每个 HBase JVM 上以 JMX Exporter Java Agent 暴露指标,再由 Prometheus 拉取,最后用 Grafana 做可视化与告警面板。
- 部署步骤(示例):
- 下载并放置 jmx_prometheus_javaagent-0.12.0.jar 到 $HBASE_HOME/lib/。
- 在 $HBASE_HOME/conf/ 放置规则文件 hbase_jmx_config.yaml(可按需定制 MBean 到指标的映射)。
- 配置各进程的 JVM 启动参数(示例):
- Master:
- 导出端口:10101
- Prometheus 抓取端口:17000
- 关键参数:
- export HBASE_JMX_BASE=“-Dcom.sun.management.jmxremote.ssl=false -Dcom.sun.management.jmxremote.authenticate=false”
- export HBASE_MASTER_OPTS=“$HBASE_MASTER_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10101 -javaagent:$HBASE_HOME/lib/jmx_prometheus_javaagent-0.12.0.jar=17000:$HBASE_HOME/conf/hbase_jmx_config.yaml”
- RegionServer:
- 导出端口:10102
- Prometheus 抓取端口:17001
- 关键参数:
- export HBASE_REGIONSERVER_OPTS=“$HBASE_REGIONSERVER_OPTS $HBASE_JMX_BASE -Dcom.sun.management.jmxremote.port=10102 -javaagent:$HBASE_HOME/lib/jmx_prometheus_javaagent-0.12.0.jar=17001:$HBASE_HOME/conf/hbase_jmx_config.yaml”
- 其他节点(如单机多进程或伪分布式):为 每个 JVM 分配唯一的抓取端口(如 17002 等),避免端口冲突。
- 重启 HBase,验证指标端点:访问 http://:17000/metrics 与 http://:17001/metrics 能看到 Prometheus 格式指标。
- Prometheus 配置 scrape job(示例):
- job_name: ‘hbase-master’
static_configs:
- job_name: ‘hbase-regionserver’
static_configs:
- targets: [‘rs1:17001’,‘rs2:17001’,‘rs3:17001’]
- Grafana 导入 HBase 仪表盘(社区已有基于 JMX Exporter 的模板),重点面板:请求率/延迟、读写吞吐、MemStore/BlockCache、Compaction/Flush 队列、Region 分布与负载均衡、JVM GC/堆。
日志与告警要点
- 日志框架与级别:HBase 使用 log4j。生产建议 INFO/WARN,排障时临时切 DEBUG;通过 RollingFileAppender 控制单文件大小与保留份数,防止磁盘被占满。
- 关键日志路径与内容:关注 HMaster/RegionServer 日志中的 ERROR/WARN、GC 时长、Compaction/Flush 异常、ZooKeeper 会话 等关键字,用于定位稳定性与性能问题。
- 集中化与告警:将日志接入 ELK(Elasticsearch/Logstash/Kibana) 或 Splunk,结合 Prometheus + Alertmanager 对关键指标(如 请求延迟突增、RegionServer 下线、Compaction 队列积压)配置阈值告警。
关键指标与告警阈值建议
| 维度 |
核心指标 |
建议阈值/动作 |
| 可用性 |
HMaster/RegionServer 存活 |
任一 RegionServer 失联 > 1–2 分钟 即告警;检查进程、网络、ZooKeeper 会话 |
| 延迟 |
读/写/P95/P99 延迟 |
较基线突增 > 50% 或绝对阈值(如 > 500ms)告警;联动排查热点 Region、慢查询 |
| 吞吐 |
读/写 字节与请求数/秒 |
与 SLA/基线偏离 > 30% 告警;检查负载均衡与热点 |
| 内存与存储 |
MemStore 使用、BlockCache 命中率、StoreFiles/Compaction 队列 |
MemStore 接近 flush 阈值 或 队列持续 > 10 告警;关注频繁 Compaction |
| JVM |
Heap/Meta/GC 次数与停顿 |
Full GC 频繁 或 GC 停顿 > 1s 告警;考虑堆大小、GC 策略与对象生命周期 |
| 分布 |
Region 数量/均衡 |
单台 Region 数 明显高于均值 > 20% 告警;执行 balancer 或检查热点 |
| 依赖 |
HDFS 可用性与写入延迟、ZooKeeper 会话 |
HDFS DataNode 异常/写入超时 或 ZK 会话过期 立即告警;优先恢复依赖服务 |
| 以上阈值需结合业务与历史基线微调,避免误报与漏报。 |
|
|