为何须要监控?web
为了保证系统的稳定性,可靠性,可运维性。sql
如何构建 HBase 集群监控系统?json
公司有本身的监控系统,咱们所要作的就是将 HBase 中咱们关心的指标项发送到监控系统去,问题就转换为咱们开发,采集并返回哪些 HBase 集群监控指标项。网络
HBase 集群监控指标架构
采集的监控数据主要包括如下几个方面:某台机器 OS 层面上的数据,例如 CPU、内存、磁盘、网络、load、网络流量等;某台 regionserver(或master)机器 jvm 的状态,例如关于线程的信息,GC 的次数和时间,内存使用情况,以及 ERROR、WARN、Fatal 事件出现的次数;regionserver(或 master)进程中的统计信息。并发
能够经过如下地址获取 HBase 提供的 JMX 信息的 web 页面运维
JMX web 页面的数据格式是json格式,信息不少!jvm
OS 监控数据分布式
HBase 中对于 OS 的监控数据,主要是 OperatingSystem 的对象来进行的,以下就是我提取出来的 JSON 信息。高并发
其中比较重要的指标有 OpenFileDescriptorCount , FreePhysicalMemorySize , ProcessCpuLoad , SystemCpuLoad , AvailableProcessors , SystemLoadAverage
JVM 监控数据
Hbase 中对于 JVM 的监控数据,主要是 JvmMetrics 的对象来进行的,以下就是我提取出来的 JSON 信息,
JvmMetrics 主要统计的信息包括:内存的使用状态信息;GC的统计信息;线程的统计信息;以及事件的统计信息。
内存的统计信息主要是:JVM 当前已经使用的 NonHeapMemory 的大小、以及配置的 NonHeapMemory 的大小;JVM 当前已经使用的 HeapMemory 的大小、以及配置的 HeapMemory 的大小; JVM 运行时的可使用的最大的内存的大小。
GC 的统计较为简单,仅统计了进程在固定间隔内 GC 的次数和花费的总时间。
线程的统计,主要是统计进程内当前线程的处于 NEW 、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED 这六种状态下的线程数量。
对于事件的统计,主要统计固定时间间隔内的 Fatal、Error、Warn 以及 Info 的数量。(这块好像不怎么重要)
REGION SERVERS 健康
你也能够经过以下地址:
得到到 Region Servers 健康值:
MEMORYPOOL
从所有的 JSON 值中你会看到不少种 MemoryPool 值,好比 Par Eden Space 、CMS Perm Gen、Par Survivor Space、CMS Old Gen、Code Cache ,按需获取吧。
总结
任何一个服务的监控系统都是一个不断迭代,不断优化的过程,不可能一开始就作到最好。监控老是比问题发生来的更早一些,而每一次出问题,又进一步增强相应方面的监控,咱们须要让监控系统从出问题时才报警到可能出现问题时就预警逐渐过渡,最终让监控系统成为咱们保证系统稳定性的一个有力工具。
欢迎工做一到五年的Java工程师朋友们加入Java架构开发: 855835163 群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用本身每一分每一秒的时间来学习提高本身,不要再用"没有时间“来掩饰本身思想上的懒惰!趁年轻,使劲拼,给将来的本身一个交代!