在CentOS上部署HBase监控系统的实用方案
一 监控架构与端口速览
- 建议采用分层监控:基础资源与进程存活用主机/进程监控,HBase业务与JVM指标用JMX Exporter → Prometheus → Grafana,并辅以HBase自带Web UI与日志分析做排障与审计。
- 关键访问与健康检查要点如下:
| 组件 |
默认端口 |
用途 |
快速检查 |
| HBase Master Web UI |
16010 |
集群健康、表/Region分布、负载 |
http://:16010/master-status |
| HBase Master JMX |
16030 |
JVM/RegionServer管理指标 |
jconsole service:jmx:rmi:///jndi/rmi://:16030/jmxrmi |
| HBase RegionServer JMX |
16020 |
RS指标、RPC、IO |
jconsole service:jmx:rmi:///jndi/rmi://:16020/jmxrmi |
| Ganglia gmond |
8649/udp |
节点指标收集 |
telnet 8649 |
| Ganglia gmetad |
8651/tcp |
汇聚与查询 |
curl http://:8651 |
| Prometheus |
9090 |
拉取与查询时序指标 |
http://:9090 |
| Grafana |
3000 |
可视化与告警面板 |
http://:3000 |
以上端口与访问方式适用于常见HBase版本与部署形态,便于快速验证连通性与存活。
二 快速落地 Prometheus Grafana JMX Exporter
- 步骤1 部署JMX Exporter
- 在每个HBase节点(Master与RegionServer)下载JMX Exporter(jar),创建配置/etc/hbase-jmx-exporter.yml,示例:
rules:
- pattern: "Hadoop:service=HBase,name=Master,sub=Server"
- pattern: "Hadoop:service=HBase,name=RegionServer,sub=Server"
- pattern: "java.lang:type=Memory"
- pattern: "java.lang:type=GarbageCollector,name=.*"
- 在hbase-env.sh中追加JVM参数(注意替换实际路径与主机名):
export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS \
-Dcom.sun.management.jmxremote \
-Dcom.sun.management.jmxremote.port=16030 \
-Dcom.sun.management.jmxremote.rmi.port=16030 \
-Dcom.sun.management.jmxremote.authenticate=false \
-Dcom.sun.management.jmxremote.ssl=false \
-Djava.rmi.server.hostname=<master-host>"
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS \
-javaagent:/opt/jmx_exporter/jmx_prometheus_javaagent-<version>.jar=16020:/etc/hbase-jmx-exporter.yml"
- 重启HBase使JMX与Exporter生效。
- 步骤2 部署Prometheus
- 步骤3 部署Grafana
- 安装并登录http://:3000,添加Prometheus为数据源,导入HBase相关Dashboard(可搜索HBase JMX或社区面板),配置阈值与告警通道(如Email/企业微信/钉钉)。
- 步骤4 验证
- Prometheus Targets全部UP;Grafana面板能展示JVM、RPC、Region/表级指标;在HBase Master UI查看集群状态与负载分布。
三 可选方案 Ganglia与日志告警
- Ganglia分布式监控
- 在监控主节点安装gmetad与Web(如yum install ganglia-web ganglia-gmetad),在各节点安装gmond(yum install ganglia-gmond),开放8649/udp与8651/tcp防火墙端口。
- 配置/etc/ganglia/gmetad.conf定义数据源与集群,/etc/ganglia/gmond.conf统一集群名与收集项;Hadoop/HBase需开启Metrics输出(如Hadoop的hadoop-metrics.properties/hadoop-metrics2.properties,HBase启用相应Sink),指向gmond的8649端口,实现节点与HBase指标汇聚与可视化。
- 日志分析与告警
- 使用**Filebeat → Logstash → Elasticsearch → Kibana(ELK)**收集与检索HBase日志,基于关键字(如“GC overhead limit exceeded”“RegionTooBusy”“NotServingRegionException”)设置告警,用于异常定位与审计。
四 关键监控指标与告警建议
- 资源与可用性
- 主机:CPU、内存、磁盘IO、网络利用率;进程存活(HMaster/RegionServer)。
- HBase:Live/Decommissioned RegionServers、Master/RS的请求QPS、读写延迟、Region数量与分布均衡、Store/StoreFile数量、Compaction/Flush压力。
- JVM:Heap/Meta/Code Cache使用、GC次数与停顿、线程数。
- 建议阈值示例(按业务调整)
- RegionServer平均读/写延迟持续>100ms触发预警;Region数量在单台节点>阈值提示热点不均;Full GC次数/分钟>阈值或停顿>1s严重告警;StoreFile数量过高提示合并/压缩压力;请求队列持续满载提示容量瓶颈。
五 排障与加固要点
- JMX连通性
- 使用jconsole/VisualVM直连JMX端口(如16030/16020)验证指标可见性;确保RMI主机名解析正确、端口未被占用、防火墙放行。
- 服务与端口
- 使用systemctl/journalctl查看HBase与Exporter日志;netstat/ss确认16010/16030/16020/8649/8651/9090/3000处于监听;Ganglia需保证gmond间多播/单播可达。
- 安全加固
- 生产环境建议开启JMX认证与SSL,限制来源IP;Prometheus与Grafana启用强口令/认证与RBAC;Ganglia与ELK通道使用TLS与最小权限原则。