Hbase性能监控

Hbase架构

要理解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/

采集的监控数据主要包括以下几个方面:

  1. 某台机器 OS 层面上的数据,例如 CPU、内存、磁盘、网络、load、网络流量等;
  2. 某台 regionserver(或master)机器 jvm 的状态,例如关于线程的信息,GC 的次数和时间,内存使用状况,以及 ERROR、WARN、Fatal 事件出现的次数;
  3. 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",
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章