名詞解釋
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=Regions
http://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/jmx
http://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