天天看點

[Binospace] HBase實戰系列3—搭建ThriftServer實時監控系統

背景:

在hbase應用中,如果使用C++來通路HBase,往往通過ThriftServer進行資料的讀寫,ThriftServer服務的狀況直接影響了應用服務的體驗。是以,在HBase ThriftServer之上的Metrics系統、以及實時監控系統,可以第一時間發現服務品質變化以及相關問題,同時,良好的監控系統,也有助于服務的完善。

ThriftServer實時監控系統的挑戰

1)ThriftServer的服務具有分散性。我們一般為不同的應用啟動多個ThriftServer,那麼如果我們想多元度統計分析某個應用的統計狀況,就會比較困難。例如:百川抓取平台,随機使用多個ThriftServer進行讀寫操作,單個ThriftServer的實時請求狀況可以很容易分析,但是如果想看整個百川平台對于HBase叢集的整體壓力,就必須實時地從不同的ThriftServer中收集相關讀寫請求的資料,然後還得将分散到不同節點上的資料,進行聚合和彙總。顯然,這樣工作或者可以通過中心統一的key-value store,或者通過分布式流資料處理平台。

2)報警平台采用分散式還是中心式的問題。ThriftServer是一個個體,不同的應用會把多個ThriftServer彙總在一起。那麼我們如何對ThriftServer出現的問題進行報警是最有效和最健壯的,成為了設計實時監控系統需要考慮的重要問題之一。

3) 如何讓監控資訊可靠、并且容忍短時間錯誤。實時監控系統有一個特點就是,它資料是根據時間為橫坐标,是以資料量較大,在整個系統中,整個系統不應該因部分Metrics沒有處理,而影響到整體的監控平台的處理效果。

4)需要滿足動态擴充性。因為ThriftServer依賴的HBase是動态可擴充的,那麼ThriftServer監控系統也應該滿足一定的擴充性,并提供足夠強勁的Availability。

ThriftServer實時監控系統的架構與設計

為了更好地解決ThriftServer實時監控系統帶來的挑戰,該設計使用了兩大特色的設計:

1)分散式報警

2)使用OpenTSDB收集實時資料。

架構圖如下。

[Binospace] HBase實戰系列3—搭建ThriftServer實時監控系統

具體的設計如下:

1)每個ThriftServer都會啟動一個Metrics線程,提供ReadRequestNum、WriteRequestNum、errorRequestNum的統計與彙報。具體設計思想來源于HBase Metrics和HBase Metrics的相關參數解讀。這對應于上圖中的實時統計資訊。

2)分散式報警。分散式報警比集中報警的粒度更細,而且嵌入到每個ThriftServer中,沒有中心控制平台的單點故障的問題。對于嵌入ThriftServer代碼内部的不靈活性,這裡利用HBase Metrics提供的配置檔案,可以靈活配置相關報警的選項和Threshold。

3)中心收集平台。這裡選用OpenTSDB主要考慮如下幾點:

  • OpenTSDB可以實作分布式部署。
  • 支援tag模式,可以實作不同的統計需求
  • 支援Rate、Sum、Max、Min等統計,可以實作多個ThriftServer實時收集資料的彙總。
  • 提供了GnuPlot的實時繪圖功能。
  • 資料容器依賴于Hbase,通過AsyncHbase實作資料的異步入庫。

4)随機選擇OpenTSDB Server,實作一定的load balance。并且需要實時監控Telnet連接配接的可用性,在連接配接錯誤時,實作OpenTSDB Server的動态切換。

本系列文章屬于Binos_ICT在Binospace個人技術部落格原創,原文連結為http://www.binospace.com/index.php/hbase-series-3-build-thriftserver-real-time-monitoring-system/,未經允許,不得在網上轉載。

相關文章:

http://www.binospace.com/index.php/hbase-combat-series-1-compression-and-coding-techniques/

http://www.binospace.com/index.php/hbase-combat-series-2-region-monitoring/

From Binospace, post HBase實戰系列3—搭建ThriftServer實時監控系統

文章的腳注資訊由WordPress的wp-posturl插件自動生成

繼續閱讀