名词解释

JMX:Java Management Extensions,用于用于Java程序扩展监控和管理项
GC:Garbage Collection,垃圾收集,垃圾回收机制

指标项来源

主机名

url

192.168.20.10

http://192.168.20.10:60010/jmx

192.168.20.11

http://192.168.20.11:16030/jmx

192.168.20.12

http://192.168.20.12:16030/jmx

hbase监控项

Hadoop 系统都提供了丰富的 JMX 监控项,所以我们可以直接从 HBase 系统本身提供的 JMX 信息获取我们需要的监控项。 HBase 提供的 JMX 信息的 web 页面,地址就是 http://host:60010/jmx , JMX web页面的数据格式是 json 格式。

主机基本监控项

CPU,内存,磁盘,网络 主机四大基本监控项,这4项机器监控保证我们运行我们HBase集群的机器是正常的。

数据来源

在集群的每个机器上均能获得以下数据,分别记录每个机器的数据。

{
    "name" : "java.lang:type=OperatingSystem",
    "description" : "Information on the management interface of the MBean",
    "modelerType" : "sun.management.OperatingSystemImpl",
    "OpenFileDescriptorCount" : 377,
    "MaxFileDescriptorCount" : 1048576,
    "CommittedVirtualMemorySize" : 4034031616,
    "TotalSwapSpaceSize" : 0,
    "FreeSwapSpaceSize" : 0,
    "ProcessCpuTime" : 21960000000,
    "FreePhysicalMemorySize" : 1889230848,
    "TotalPhysicalMemorySize" : 8370974720,
    "SystemCpuLoad" : 0.6198521647307286,
    "ProcessCpuLoad" : 0.00791974656810982,
    "Name" : "Linux",
    "Arch" : "amd64",
    "SystemLoadAverage" : 1.02,
    "AvailableProcessors" : 4,
    "Version" : "4.4.0-131-generic",
    "ObjectName" : "java.lang:type=OperatingSystem"
  }

指标项说明

指标项

说明

FreePhysicalMemorySize

空闲物理内存大小

ProcessCpuLoad

进程cpu使用率

SystemCpuLoad

系统cpu使用率

AvailableProcessors

处理器核数

JVM监控项

HBase 集群涉及的系统 HDFS,HBase,ZooKeeper都是用 Java 编写的,运行在 JVM 中,必须采集 JVM 相关的监控项。
Hbase 中对于 JVM 的监控数据,主要是 JvmMetrics 的对象来进行的。

数据来源

在集群的每个机器上均能获得以下数据,分别记录每个机器的数据。

{
    "name" : "Hadoop:service=HBase,name=JvmMetrics",
    "modelerType" : "JvmMetrics",
    "tag.Context" : "jvm",
    "tag.ProcessName" : "Master",
    "tag.SessionId" : "",
    "tag.Hostname" : "dev01",
    "MemNonHeapUsedM" : 53.011223,
    "MemNonHeapCommittedM" : 53.996094,
    "MemNonHeapMaxM" : -9.536743E-7,
    "MemHeapUsedM" : 30.099304,
    "MemHeapCommittedM" : 121.8125,
    "MemHeapMaxM" : 1962.75,
    "MemMaxM" : 1962.75,
    "GcCountParNew" : 17,
    "GcTimeMillisParNew" : 116,
    "GcCountConcurrentMarkSweep" : 1,
    "GcTimeMillisConcurrentMarkSweep" : 12,
    "GcCount" : 18,
    "GcTimeMillis" : 128,
    "ThreadsNew" : 0,
    "ThreadsRunnable" : 19,
    "ThreadsBlocked" : 0,
    "ThreadsWaiting" : 51,
    "ThreadsTimedWaiting" : 16,
    "ThreadsTerminated" : 0,
    "LogFatal" : 0,
    "LogError" : 0,
    "LogWarn" : 0,
    "LogInfo" : 0
  }

指标项说明

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

类型

指标项

说明

内存

MemNonHeapUsedM

JVM 当前已经使用的 NonHeapMemory 的大小

内存

MemNonHeapMaxM

JVM 配置的 NonHeapMemory 的大小

内存

MemHeapUsedM

JVM 当前已经使用的 HeapMemory 的大小

内存

MemHeapMaxM

JVM 配置的 HeapMemory 的大小

内存

MemMaxM

JVM 运行时的可以使用的最大的内存的大小

GC

GcCountParNew

新生代GC次数

GC

GcTimeMillisParNew

新生代GC耗时(ms)

GC

GcCountConcurrentMarkSweep

老年代GC次数

GC

GcTimeMillisConcurrentMarkSweep

老年代GC耗时

线程

ThreadsNew

当前线程的处于 NEW 状态下的线程数量

线程

ThreadsRunnable

当前线程的处于 RUNNABLE 状态下的线程数量

线程

ThreadsBlocked

当前线程的处于 BLOCKED 状态下的线程数量

线程

ThreadsWaiting

当前线程的处于 WAITING 状态下的线程数量

线程

ThreadsTimedWaiting

当前线程的处于 TIMED_WAITING 状态下的线程数量

线程

ThreadsTerminated

当前线程的处于 TERMINATED 状态下的线程数量

事件

LogFatal

固定时间间隔内的 Fatal 的数量

事件

LogError

固定时间间隔内的 Error 的数量

事件

LogWarn

固定时间间隔内的 Warn 的数量

事件

LogInfo

固定时间间隔内的 Info 的数量

HBase集群各系统存活监控项

HBase集群各个系统的进程是否存活是必须也是最基本的监控项。具体有hmaster;regionserver;namenode;datanode;journalnode;zkfc;zookeeper的存活监控。具体判断存活的方式我们可以去判断各系统相应的进程是否存在,也可以去判断各系统的web页面或者jmx页面是否正常。

master监控

数据来源

地址:http://192.168.20.10:60010/jmx?qry=Hadoop:service=HBase,name=Master,sub=Server

{
    "name" : "Hadoop:service=HBase,name=Master,sub=Server",
    "modelerType" : "Master,sub=Server",
    "tag.liveRegionServers" : "dev02,16020,1539595528256;dev03,16020,1539595527594",
    "tag.deadRegionServers" : "",
    "tag.zookeeperQuorum" : "dev03:2181,dev02:2181",
    "tag.serverName" : "dev01,16020,1539595524290",
    "tag.clusterId" : "0cef1691-05bd-47cd-9a76-1c3abb8e56bf",
    "tag.isActiveMaster" : "true",
    "tag.Context" : "master",
    "tag.Hostname" : "dev01",
    "masterActiveTime" : 1539595528498,
    "masterStartTime" : 1539595524290,
    "averageLoad" : 19.5,
    "numRegionServers" : 2,
    "numDeadRegionServers" : 0,
    "clusterRequests" : 203
  }

指标项说明

指标项

说明

tag.liveRegionServers

活动的region

tag.deadRegionServers

停止的region

regionserver监控

JMX全称是Java Management Extensions,用于用于Java程序扩展监控和管理项。而许多Hadoop系统都提供了丰富的JMX监控项,所以我们可以直接从HBase系统本身提供的JMX信息获取我们需要的监控项。HBase提供的JMX信息的web页面,地址就是 http://your_hmaster:60010/jmx,JMX web页面的数据格式是json格式。由于信息比较多,也提供了一个qry=name的方式获取具体某一项所需的数据,例如:http://namenode:50070/jmx?qry=hadoop:service=NameNode,name=NameNodeInfo只收集nameinfo相关的数据。 所以我们可以用多线程或多进程同时采集多个指标项,同时也要注意在每个线程处理的时候数据应该是异步的,否则同步可能导致某一个指标项采集阻塞, 使得之后的所有指标项在一个采集周期内无法正常返回数据。

数据来源

每个表每个region的数据

在每个regionserver的jmx页面均可获取到该数据
地址:
http://192.168.20.11:16030/jmx?qry=Hadoop:service=HBase,name=RegionServer,sub=Regionshttp://dev03:16030/jmx?qry=Hadoop:service=HBase,name=RegionServer,sub=Regions

{
    "name" : "Hadoop:service=HBase,name=RegionServer,sub=Regions",
    "modelerType" : "RegionServer,sub=Regions",
    "tag.Context" : "regionserver",
    "tag.Hostname" : "dev02",
    "Namespace_default_table__zw_tailers_region_01f1c83a5930d0183c0fcbad6ec5e066_metric_storeCount" : 1,
    "Namespace_default_table__zw_tailers_region_01f1c83a5930d0183c0fcbad6ec5e066_metric_storeFileCount" : 0,
    "Namespace_default_table__zw_tailers_region_01f1c83a5930d0183c0fcbad6ec5e066_metric_memStoreSize" : 408,
    "Namespace_default_table__zw_tailers_region_01f1c83a5930d0183c0fcbad6ec5e066_metric_storeFileSize" : 0,
    "Namespace_default_table__zw_tailers_region_01f1c83a5930d0183c0fcbad6ec5e066_metric_compactionsCompletedCount" : 0,
    "Namespace_default_table__zw_tailers_region_01f1c83a5930d0183c0fcbad6ec5e066_metric_numBytesCompactedCount" : 0,
    "Namespace_default_table__zw_tailers_region_01f1c83a5930d0183c0fcbad6ec5e066_metric_numFilesCompactedCount" : 0,
    "Namespace_default_table__zw_tailers_region_175ece78282879943d46d333229e9f1c_metric_storeCount" : 1,
    "Namespace_default_table__zw_tailers_region_175ece78282879943d46d333229e9f1c_metric_storeFileCount" : 0,
    "Namespace_default_table__zw_tailers_region_175ece78282879943d46d333229e9f1c_metric_memStoreSize" : 408,
    "Namespace_default_table__zw_tailers_region_175ece78282879943d46d333229e9f1c_metric_storeFileSize" : 0,
    "Namespace_default_table__zw_tailers_region_175ece78282879943d46d333229e9f1c_metric_compactionsCompletedCount" : 0,
    "Namespace_default_table__zw_tailers_region_175ece78282879943d46d333229e9f1c_metric_numBytesCompactedCount" : 0,
    "Namespace_default_table__zw_tailers_region_175ece78282879943d46d333229e9f1c_metric_numFilesCompactedCount" : 0
}
每个regionserver的监控数据

地址:
http://192.168.20.11:16030/jmxhttp://192.168.20.12:16030/jmx 大致分为server、IPC、WAL、Memory、MemoryPool四类,数据较长,以下仅展示一部分

{
    "name" : "Hadoop:service=HBase,name=RegionServer,sub=Server",
    "modelerType" : "RegionServer,sub=Server",
    "tag.zookeeperQuorum" : "dev03:2181,dev02:2181",
    "tag.serverName" : "dev02,16020,1539696865983",
    "tag.clusterId" : "0cef1691-05bd-47cd-9a76-1c3abb8e56bf",
    "tag.Context" : "regionserver",
    "tag.Hostname" : "dev02",
    "regionCount" : 20,
    "blockCacheFreeSize" : 400221160,
    "blockCacheCount" : 2,
    "blockCacheSize" : 413528,
    "blockCacheHitCount" : 3,
    ...
  }
{
    "name" : "Hadoop:service=HBase,name=RegionServer,sub=IPC",
    "modelerType" : "RegionServer,sub=IPC",
    "tag.Context" : "regionserver",
    "tag.Hostname" : "dev02",
    "queueSize" : 0,
    "numCallsInGeneralQueue" : 0,
    "numCallsInReplicationQueue" : 0,
    ...
  }{
    "name" : "java.lang:type=Memory",
    "modelerType" : "sun.management.MemoryImpl",
    "ObjectPendingFinalizationCount" : 0,
    "HeapMemoryUsage" : {
      "committed" : 62849024,
      "init" : 65011712,
      "max" : 1001586688,
      "used" : 27014176
    },
    ...
  }
{
    "name" : "Hadoop:service=HBase,name=RegionServer,sub=WAL",
    "modelerType" : "RegionServer,sub=WAL",
    "tag.Context" : "regionserver",
    "tag.Hostname" : "dev02",
    "AppendSize_num_ops" : 20,
    "AppendSize_min" : 130,
    ...
  }
    "name" : "java.lang:type=MemoryPool,name=Par Survivor Space",
    "modelerType" : "sun.management.MemoryPoolImpl",
    "Valid" : true,
    "Name" : "Par Survivor Space",
    "Type" : "HEAP",
    "Usage" : {
      "committed" : 2162688,
      "init" : 2162688,
      "max" : 34406400,
      "used" : 146208
    },
    ...
  }{
    "name" : "java.lang:type=MemoryPool,name=Par Eden Space",
    "modelerType" : "sun.management.MemoryPoolImpl",
    "Valid" : true,
    "Name" : "Par Eden Space",
    "Type" : "HEAP",
    "Usage" : {
      "committed" : 17301504,
      "init" : 17301504,
      "max" : 275775488,
      "used" : 14569520
    },
    ...
  }{
    "name" : "java.lang:type=MemoryPool,name=CMS Old Gen",
    "modelerType" : "sun.management.MemoryPoolImpl",
    "Valid" : true,
    "Name" : "CMS Old Gen",
    "Type" : "HEAP",
    "Usage" : {
      "committed" : 43384832,
      "init" : 43384832,
      "max" : 691404800,
      "used" : 12108656
    },
    ...
  }

指标项说明

每个表每个region的的指标项说明

第一个xxx代表namespace名
第二个xxx代表表名
第三个xxx代表region的ID

指标项

说明

Namespace_xxx_table_xxx_region_xxx_metric_storeCount

Store个数

Namespace_xxx_table_xxx_region_xxx_metric_storeFileCount

StoreFile个数

Namespace_xxx_table_xxx_region_xxx_metric_memStoreSize

Namespace_xxx_table_xxx_region_xxx_metric_storeFileSize

Namespace_xxx_table_xxx_region_xxx_metric_compactionsCompletedCount

合并完成次数

Namespace_xxx_table_xxx_region_xxx_metric_numBytesCompactedCount

合并文件总大小

Namespace_xxx_table_xxx_region_xxx_metric_numFilesCompactedCount

合并完成文件个数

每个regionserver的指标项说明

MemoryPool 值,比如 Par Eden Space 、CMS Perm Gen、Par Survivor Space、CMS Old Gen、Code Cache

指标项

类型

说明

regionCount

Server

Regionserver管理region数量

memStoreSize

Server

Regionserver管理的总memstoresize

storeFileSize

Server

Regionserver管理的storefile大小

staticIndexSize

Server

regionserver所管理的表索引大小

storeFileCount

Server

regionserver所管理的storefile个数

hlogFileSize

Server

WAL文件大小

hlogFileCount

Server

WAL文件个数

storeCount

Server

regionserver所管理的store个数

storeFileCount

Server

regionserver所管理的storefile个数

totalRequestCount

Server

总请求数

readRequestCount

Server

读请求数

writeRequestCount

Server

写请求数

compactedCellsCount

Server

合并cell个数

majorCompactedCellsCount

Server

大合并cell个数

flushedCellsSize

Server

flush到磁盘的大小

splitRequestCount

Server

region分裂请求次数

splitSuccessCount

Server

region分裂成功次数

slowGetCount

Server

请求完成时间超过1000ms的次数

numOpenConnections

IPC

该regionserver打开的连接数

numActiveHandler

IPC

rpc handler数

receivedBytes

IPC

收到数据量

sentBytes

IPC

发出数据量

SyncTime_mean

WAL

WAL写hdfs的平均时间

HeapMemoryUsage>>used

Memory

堆内存使用量

Par Survivor Space>>CollectionUsage>>used

MemoryPool

Survivor内存大小

Par Eden Space>>CollectionUsage>>used

MemoryPool

Eden区使用空间大小

CMS Old Gen>>CollectionUsage>>used

MemoryPool

老年代内存大小

hbase监控工具

hbase原生支持ganglia,如果发送给zabbix,需要自己开发获取其中的数据,解析出来。数据的格式一般是最外层一个beans的key,里面的value是一个jsonarray。arrayobject里面可能包含jsonobjec或者jsonarray。
目前测试集群使用jmxtrans+influxdb+granafa套件监控。
监控地址:http://dev01:3000/login