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 ,按需獲取吧。

總結

任何一個服務的監控系統都是一個不斷迭代,不斷優化的過程,不可能一開始就做到最好。監控總是比問題發生來的更早一些,而每一次出問題,又進一步加強相應方面的監控,我們需要讓監控系統從出問題時才報警到可能出現問題時就預警逐漸過渡,最終讓監控系統成爲我們保證系統穩定性的一個有力工具。

歡迎工作一到五年的Java工程師朋友們加入Java架構開發: 855835163
羣內提供免費的Java架構學習資料(裏面有高可用、高併發、高性能及分佈式、Jvm性能調優、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章