HBase叢集監控那些事兒
為什麼需要監控?
為了保證系統的穩定性,可靠性,可運維性。
-
掌控叢集的核心效能指標,瞭解叢集的效能表現;
-
叢集出現問題時及時報警,便於運維同學及時修復問題;
-
叢集重要指標值異常時進行預警,將問題扼殺在搖籃中,不用等叢集真正不可用時才採取行動;
-
當叢集出現問題時,監控系統可以幫助我們更快的定位問題和解決問題。
如何構建 HBase 叢集監控系統?
公司有自己的監控系統,我們所要做的就是將 HBase 中我們關心的指標項傳送到監控系統去,問題就轉換為我們開發,採集並返回哪些 HBase 叢集監控指標項。
HBase 叢集監控指標
採集的監控資料主要包括以下幾個方面:某臺機器 OS 層面上的資料,例如 CPU、記憶體、磁碟、網路、load、網路流量等;某臺 regionserver(或master)機器 jvm 的狀態,例如關於執行緒的資訊,GC 的次數和時間,記憶體使用狀況,以及 ERROR、WARN、Fatal 事件出現的次數;regionserver(或 master)程序中的統計資訊。
可以通過以下地址獲取 HBase 提供的 JMX 資訊的 web 頁面
JMX web 頁面的資料格式是json格式,資訊很多!
OS 監控資料
HBase 中對於 OS 的監控資料,主要是 OperatingSystem 的物件來進行的,如下就是我提取出來的 JSON 資訊。
其中比較重要的指標有 OpenFileDescriptorCount , FreePhysicalMemorySize , ProcessCpuLoad , SystemCpuLoad , AvailableProcessors , SystemLoadAverage
JVM 監控資料
Hbase 中對於 JVM 的監控資料,主要是 JvmMetrics 的物件來進行的,如下就是我提取出來的 JSON 資訊,
JvmMetrics 主要統計的資訊包括:記憶體的使用狀態資訊;GC的統計資訊;執行緒的統計資訊;以及事件的統計資訊。
記憶體的統計資訊主要是:JVM 當前已經使用的 NonHeapMemory 的大小、以及配置的 NonHeapMemory 的大小;JVM 當前已經使用的 HeapMemory 的大小、以及配置的 HeapMemory 的大小; JVM 執行時的可以使用的最大的記憶體的大小。
GC 的統計較為簡單,僅統計了程序在固定間隔內 GC 的次數和花費的總時間。
執行緒的統計,主要是統計程序內當前執行緒的處於 NEW 、RUNNABLE、BLOCKED、WAITING、TIMED_WAITING、TERMINATED 這六種狀態下的執行緒數量。
對於事件的統計,主要統計固定時間間隔內的 Fatal、Error、Warn 以及 Info 的數量。(這塊好像不怎麼重要)
REGION SERVERS 健康
你也可以通過如下地址:
獲得到 Region Servers 健康值:
MEMORYPOOL
從全部的 JSON 值中你會看到很多種 MemoryPool 值,比如 Par Eden Space 、CMS Perm Gen、Par Survivor Space、CMS Old Gen、Code Cache ,按需獲取吧。
總結
任何一個服務的監控系統都是一個不斷迭代,不斷優化的過程,不可能一開始就做到最好。監控總是比問題發生來的更早一些,而每一次出問題,又進一步加強相應方面的監控,我們需要讓監控系統從出問題時才報警到可能出現問題時就預警逐漸過渡,最終讓監控系統成為我們保證系統穩定性的一個有力工具。
最後,監控指標有很多,但請按需獲取 !
參考資料
-
hbase效能監控(一)
https://www.tuicool.com/articles/zQNrM3
-
hbase效能監控(二)
https://www.tuicool.com/articles/YbQbIj
-
hbase效能監控(三)
https://www.tuicool.com/articles/imArAb
-
HBase 叢集監控系統構建
https://blog.bcmeng.com/post/hbase-monitor.html
-
hbase jmx常用監控指標
http://blog.csdn.net/englishsname/article/details/53883682
作者:Zhisheng Tian
來源:http://www.54tianzhisheng.cn/2017/10/21/HBase-metrics/