如何构建HBase集群监控系统?

如何构建 HBase 集群监控系统?

公司有自己的监控系统,我们所要做的就是将 HBase 中我们关心的指标项发送到监控系统去,问题就转换为我们开发,采集并返回哪些 HBase 集群监控指标项。

HBase集群监控系统

HBase 集群监控指标

采集的监控数据主要包括以下几个方面:某台机器 OS 层面上的数据,例如 CPU、内存、磁盘、网络、load、网络流量等;某台 regionserver(或master)机器 jvm 的状态,例如关于线程的信息,GC 的次数和时间,内存使用状况,以及 ERROR、WARN、Fatal 事件出现的次数;regionserver(或 master)进程中的统计信息。

可以通过以下地址获取 HBase 提供的 JMX 信息的 web 页面

1

 

:60010/jmx //所有的bean

 

JMX web 页面的数据格式是json格式,信息很多!

OS 监控数据

HBase 中对于 OS 的监控数据,主要是 OperatingSystem 的对象来进行的,如下就是我提取出来的 JSON 信息,

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

 

{

"name" : "java.lang:type=OperatingSystem",

"modelerType" : "com.sun.management.UnixOperatingSystem",

"MaxFileDescriptorCount" : 1000000,

"OpenFileDescriptorCount" : 413,

"CommittedVirtualMemorySize" : 1892225024,

"FreePhysicalMemorySize" : 284946432,

"FreeSwapSpaceSize" : 535703552,

"ProcessCpuLoad" : 0.0016732901066722444,

"ProcessCpuTime" : 59306210000000,

"SystemCpuLoad" : 0.018197029910060655,

"TotalPhysicalMemorySize" : 16660848640,

"TotalSwapSpaceSize" : 536862720,

"AvailableProcessors" : 8,

"Arch" : "amd64",

"SystemLoadAverage" : 0.0,

"Name" : "Linux",

"Version" : "2.6.32-431.11.7.el6.ucloud.x86_64",

"ObjectName" : "java.lang:type=OperatingSystem"

}

 

其中比较重要的指标有 OpenFileDescriptorCount , FreePhysicalMemorySize , ProcessCpuLoad , SystemCpuLoad , AvailableProcessors , SystemLoadAverage

JVM 监控数据

Hbase 中对于 JVM 的监控数据,主要是 JvmMetrics 的对象来进行的,如下就是我提取出来的 JSON 信息,

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

 

{

"name" : "Hadoop:service=HBase,name=JvmMetrics",

"modelerType" : "JvmMetrics",

"tag.Context" : "jvm",

"tag.ProcessName" : "Master",

"tag.SessionId" : "",

"tag.Hostname" : "uhadoop-qrljqo-master2",

"MemNonHeapUsedM" : 53.846107,

"MemNonHeapCommittedM" : 85.84375,

"MemNonHeapMaxM" : 130.0,

"MemHeapUsedM" : 79.05823,

"MemHeapCommittedM" : 240.125,

"MemHeapMaxM" : 989.875,

"MemMaxM" : 989.875,

"GcCountParNew" : 15190,

"GcTimeMillisParNew" : 72300,

"GcCountConcurrentMarkSweep" : 2,

"GcTimeMillisConcurrentMarkSweep" : 319,

"GcCount" : 15192,

"GcTimeMillis" : 72619,

"ThreadsNew" : 0,

"ThreadsRunnable" : 21,

"ThreadsBlocked" : 0,

"ThreadsWaiting" : 144,

"ThreadsTimedWaiting" : 18,

"ThreadsTerminated" : 0,

"LogFatal" : 0,

"LogError" : 0,

"LogWarn" : 0,

"LogInfo" : 0

}

 

JvmMetrics 主要统计的信息包括:内存的使用状态信息;GC的统计信息;线程的统计信息;以及事件的统计信息。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。