要理解Hbase性能监控指标,首先要理解Hbase底层工作原理,不然对指标的度量,价值,展示方法的理解都会有问题…
Hbase工作原理:
http://opfanswyx.top/2018/04/18/Hbase%E5%BA%95%E5%B1%82%E5%8E%9F%E7%90%86/
Hbase发行版本较多,这里以CDH版本为主,对各版本的差异性未进行研究
用以生产环境的Hbase版本比较:
https://blog.csdn.net/lichangzai/article/details/51564873
《HBase权威指南》中指出的监控指标
大致分为以下几种:
Master监控指标
Cluster requests 集群请求总数
Split time重启后拆分预写日志的时间
Split size拆分预写日志的大小
Region服务器监控指标
块缓存监控指标
Count 缓存中保存的块数目
Size 占用的java堆空间大小
Free 堆空间为缓存保留的可用空间
Evicted 统计当堆空间受限时将被移除的块的数目
Hit 块缓存追踪缓存命中
Miss 缓存失效
Hit ratio 命中缓存总数与请求缓存总数的关系
合并监控
Compaction size 需要合并的存储文件总大小
Compaction time 需要合并的存储操作花费时间
Compaction queue size 一个region服务器有多少文件当前正在排队等待合并
Memstore监控
Memstore size MB 服务器上所有memstore总共占用的堆大小,即所有在线region的memstore的总和
Flush queue size 将要被刷写的region的数目
Flush size 刷写到磁盘上的memstore大小
Flush time 本次刷写所占用的时间
存储监控指标
Store file 所有存储文件的数目,涉及当前机器管理的所有region的存储文件
Store 显示了服务器上所有region的存储文件数目
Store file index MB 所有存储文件的块索引和元数据索引的总和大小
I/O监控指标
Fs read latency 文件系统的读延迟,从存储文件中装载块时的延时。
Fs write latency 写延迟,收集所有写操作的数据(写存储文件和预写日志)
Fs sync latency 预写日志记录同步到文件系统的延迟(这个延时监控指标可以提供底层I/O性能的相关信息,应密切关注)
其他监控指标
Read request count 总的读操作get()
Write request count 总的写操作put()当前region服务器汇总所有在线region的
Request 自上次轮询之后目前每秒的请求数
Regions 目前region服务器在线的region数目
RPC监控指标
JVM监控指标
内存占用监控指标
垃圾回收监控指标
Gc count 垃圾回收的次数
Gc time上次轮询至今累计的垃圾回收占用的时间
线程监控指标
系统时间监控指标
Log error 自上次轮询至今,错误级别日志消息的数目
Info监控指标
Date hbase编译日期
Version hbase版本
Revision 编译使用的源码库版本
url 源码库的url地址
user hbase编译者
hdfsdate hdfs编译日期
hdfsversion hbase版本
hdfsrevision hdfs使用的源码库版本
hdfsurl hdfs源码库url地址
hdfsuser hefs编译者
Hbase监控指标
Hbase监控指标研究过程中参考文章:
1. https://blog.bcmeng.com/post/hbase-monitor.html
2. https://www.tuicool.com/articles/zQNrM3
3. https://www.tuicool.com/articles/YbQbIj
4. https://www.tuicool.com/articles/imArAb
5. https://blog.csdn.net/englishsname/article/details/53883682
6. http://www.54tianzhisheng.cn/2017/10/21/HBase-metrics/
采集的监控数据主要包括以下几个方面:
- 某台机器 OS 层面上的数据,例如 CPU、内存、磁盘、网络、load、网络流量等;
- 某台 regionserver(或master)机器 jvm 的状态,例如关于线程的信息,GC 的次数和时间,内存使用状况,以及 ERROR、WARN、Fatal 事件出现的次数;
- regionserver(或 master)进程中的统计信息。
hbase的jmx在1.0后分开了master和regionserver的jmx监控,其中master的页面在master_hostname:60010/jmx页面中,regionserver在regionserver_hostname:60030/jmx中,如果想更详细的信息使用
http://regionserver_hostname:60030/jmx?description=true。数据的格式一般是最外层一个beans的key,里面的value是一个jsonarray。arrayobject里面可能包含jsonobject或者jsonarray。
HBase发布遵循Hadoop的API指标。从HBase 0.95开始,HBase被配置为发出默认的度量集合,其默认采样周期为每10秒。 要为给定的区域服务器配置指标,需编辑conf / hadoop-metrics2-hbase.properties文件。 重新启动区域服务器以使更改生效。要更改默认接收器的采样率,请编辑以* .period开头的行。 要过滤发布哪些指标或扩展指标框架,请参阅
http://hadoop.apache.org/docs/current/api/org/apache/hadoop/metrics2/package-summary.html
通常,度量单位在名称中(如公制KB)。 否则,请使用以下准则。 如有疑问,可能需要检查给定度量标准的来源。
涉及某个时间点的度量标准通常表示为时间戳。
涉及年龄的指标(例如ageOfLastShippedOp)通常以毫秒表示。
涉及内存大小的指标以字节为单位。
队列的大小(例如sizeOfLogQueue)表示为队列中的项目数。 通过乘以块大小来确定大小(HDFS中默认为64 MB)。
涉及诸如给定类型操作(如logEditsRead)的数量的度量标准被表示为整数
Master server性能指标参数整理
"name" : "java.lang:type=Memory",
内存信息-堆内存-非堆内存
"name" : "Hadoop:service=HBase,name=MetricsSystem,sub=Control
"name" : "Hadoop:service=HBase,name=Master,sub=AssignmentManger",
"name" : "Hadoop:service=HBase,name=UgiMetrics",
用户和组相关指标-成功的kerberos登录-数量/时间
"name" : "java.lang:type=GarbageCollector,name=ConcurrentMarkSweep",(标记清除)
"name" : "java.nio:type=BufferPool,name=mapped"
"name" : "Hadoop:service=HBase,name=Master,sub=IPC"
进程间通信
rumActiveHandler 主动为请求提供服务的RPC处理程序的数量
numCallsInGeneralQueue 当前入队的用户请求的数量
numCallsInReplicationQueue 从复制中接收的当前入队操作的数量
numCallsInPriorityQueue 当前入队的优先级(内部管家)请求的数量
numOpenConnections该regionserver打开的连接数
receivedBytes收到数据量
sentBytes发出数据量
"name" : "java.lang:type=Compilation",
"name" : "java.lang:type=MemoryPool,name=CMS Perm Gen",(非heap永久代)
"name" : "java.lang:type=OperatingSystem",
Os操作系统
OpenFileDescriptorCount 当前机器打开文件数
FreePhysicalMemorySize 空虚物理内存大小
AvailableProcessors 可用cpu个数
ProcessCpuLoad 处理cpu负载
SystemCpuLoad 系统cpu负载
"name" : "Hadoop:service=HBase,name=Master,sub=Balancer"
平衡器
"name" : "java.lang:type=MemoryManager,name=CodeCacheManager",
编解码器
"name" : "java.lang:type=MemoryPool,name=CMS Old Gen",(非heap老年代)
"name" : "java.lang:type=GarbageCollector,name=Copy"(复制)
"name" : "Hadoop:service=HBase,name=JvmMetrics"
JVM监控:
内存的使用状态信息-非堆-堆内存
GC的统计信息
线程的统计信息
事件的统计信息-fatal-error-warn-info
"name" : "java.lang:type=MemoryPool,name=Code Cache",(非heap代码缓存区)
"name" : "java.lang:type=Runtime",
"name" : "java.nio:type=BufferPool,name=direct",
"name" : "java.lang:type=ClassLoading",(动态装载)
"name" : "java.lang:type=Threading",
"name" : "java.util.logging:type=Logging",
"name" : "Hadoop:service=HBase,name=MetricsSystem,sub=Stats",
"name" : "java.lang:type=MemoryPool,name=Eden Space",(JVM伊甸园)
"name" : "com.sun.management:type=HotSpotDiagnostic",
"name" : "Hadoop:service=HBase,name=Master,sub=Server",
服务器信息
numRegionServers活区域服务器的数量
numDeadRegionServers死区域服务器的数量
clusterRequests集群请求总数
"name" : "java.lang:type=MemoryPool,name=Survivor Space",(幸存者区)
"name" : "Hadoop:service=HBase,name=Master,sub=FileSystem",
HLOG
"name" : "JMImplementation:type=MBeanServerDelegate",
Region server性能指标参数整理
"name" : "JMImplementation:type=MBeanServerDelegate",
"name" : "java.lang:type=Runtime",
"name" : "Hadoop:service=HBase,name=MetricsSystem,sub=Control",
"name" : "java.lang:type=Threading",
"name" : "java.lang:type=OperatingSystem",
操作系统:
OpenFileDescriptorCount 当前机器打开文件数
FreePhysicalMemorySize 空虚物理内存大小
AvailableProcessors 可用cpu个数
ProcessCpuLoad 处理cpu负载
SystemCpuLoad 系统cpu负载
"name" : "Hadoop:service=HBase,name=MetricsSystem,sub=Stats",
"name" : "java.lang:type=MemoryPool,name=Code Cache",(非heap代码缓存区)
"name" : "java.nio:type=BufferPool,name=direct",
"name" : "java.lang:type=Compilation",
"name" : "Hadoop:service=HBase,name=tracing",
"name" : "java.lang:type=MemoryManager,name=CodeCacheManager",
"name" : "java.util.logging:type=Logging",
"name" : "java.lang:type=ClassLoading",(动态装载)
"name" : "java.lang:type=MemoryManager,name=Metaspace Manager",
"name" : "Hadoop:service=HBase,name=RegionServer,sub=Regions",
Regionserver上的region区域信息统计
"name" : "Hadoop:service=HBase,name=RegionServer,sub=Replication",
"name" : "java.lang:type=MemoryPool,name=Metaspace",
"name" : "java.lang:type=MemoryPool,name=Par Eden Space"(非heap永久代),
"name" : "java.lang:type=GarbageCollector,name=ParNew",
"name" : "java.lang:type=GarbageCollector,name=ConcurrentMarkSweep",
"name" : "Hadoop:service=HBase,name=JvmMetrics",
JVM监控:
内存的使用状态信息-非堆-堆内存
GC的统计信息
GcTimeMillis -GC总时间
GcTimeMillisParNew ParNew -GC时间
GcCount -GC总次数
GcCountConcurrentMarkSweep -ConcurrentMarkSweep总次数
GcTimeMillisConcurrentMarkSweep-ConcurrentMarkSweep GC时间
线程的统计信息ThreadsBlocked堵塞线程数量
ThreadsTimedWaiting等待线程数量
事件的统计信息-fatal-error-warn-info
"name" : "Hadoop:service=HBase,name=RegionServer,sub=WAL",
WAL写log系统
附加到WAL的数据大小(以字节为单位)
花时间将WAL同步到HDFS
SyncTime_meanWAL写hdfs的平均时间
"name" : "Hadoop:service=HBase,name=RegionServer,sub=Server",
Regionserver
region区域数量
store仓库数量
WAL文件数量,大小
Storfile数量,大小
Memstore大小
totalRequestCount 总请求数
readRequestCount读请求数
writeRequestCount写请求数
compactionsCompletedCount合并完成次数
numBytesCompactedCount合并文件总大小
numFilesCompactedCount合并完成文件个数
compactedCellsCount合并cell个数
majorCompactedCellsCount大合并cell个数
flushedCellsSize flush到磁盘的大小
blockedRequestCount因memstore大于阈值而引发flush的次数
splitRequestCount region分裂请求次数
splitSuccessCounnt region分裂成功次数
hlogFileSize WAL文件大小
hlogFileCount WAL文件个数
"name" : "java.lang:type=MemoryPool,name=Compressed Class Space",
"name" : "Hadoop:service=HBase,name=RegionServer,sub=IPC",
进程间通信
numOpenConnections该regionserver打开的连接数
numActiveHandler rpc handler数
receivedBytes收到数据量
sentBytes发出数据量
"name" : "java.lang:type=Memory",
HeapMemoryUsage堆内存的使用率
"name" : "java.nio:type=BufferPool,name=mapped",
"name" : "java.lang:type=MemoryPool,name=Par Survivor Space",
"name" : "com.sun.management:type=DiagnosticCommand",
"name" : "Hadoop:service=HBase,name=UgiMetrics",
"name" : "com.sun.management:type=HotSpotDiagnostic",
"name" : "java.lang:type=MemoryPool,name=CMS Old Gen",