HBase 監控 | HBase Metrics 初探(一)

前言:對於任意一個系統而言,作好監控都是很是重要的,HBase也不例外。常常,咱們會從JMX中獲取相關指標來作展現、對HBase進行監控,那這些指標是怎麼生成的呢?若是你想自定義本身的監控指標又該怎麼作呢?基於好奇之心和學習的目的,最近打算學習一下HBase監控相關原理及實現,今天先簡單捋一捋思路。前端

1. 如何下手?

我一貫比較喜歡先看項目所依賴的pom文件,打開HBase源碼,有兩個很是相關的模塊:web

  • hbase-metrics-apispring

  • hbase-metrics後端

分別打開兩個子項目的pom文件查看,搜索關鍵詞'metrics'碰碰運氣,有兩個小發現:api

  1. 子項目hbase-metrics依賴子項目hbase-metrics-api,子項目hbase-metrics-api大部分是接口類,而子項目hbase-metrics基本上是對子項目hbase-metrics-api接口類的實現類。springboot

  2. 子項目hbase-metrics中有metrics相關繼承式依賴,以下:微信

<dependency>
    <groupId>io.dropwizard.metrics</groupId>
    <artifactId>metrics-core</artifactId>
</dependency>

那這是個什麼東西呢?憑直覺,要理解好HBase Metrics的實現,首先要先搞明白這是個什麼東東。本文接下來也主要圍繞io.dropwizard.metrics展開。框架

2. Dropwizard是什麼?

通過一番調研,總感受dropwizard是上個世紀的產物。看下官網介紹:ide

Dropwizard is a Java framework for developing ops-friendly, high-performance, RESTful web services.spring-boot

翻譯一下:

Dropwizard是一個Java框架,用於開發對操做友好的高性能RESTful Web服務。

感受理解不太到位,RESTful Web服務也沒據說過這個,百度掃掃盲吧!結果很意外,網上竟是Dropwizard與Spring Boot比較相關的文章。我抽兩條比較重要的:

  1. Dropwizard定位:微服務框架
  2. 二者都有很強很大的社區支持。若是你更喜歡輕量,無疑Dropwizard勝出,若是你已經有Spring經驗,無疑使用Spring Boot。

好稀罕!真的是孤陋寡聞了嗎?居然是跟Spring Boot相媲美的,也集成了衆多框架,Dropwizard metrics 就是其自帶的監控框架。下面就介紹一下Dropwizard metrics。

3. Dropwizard metrics

看下官網介紹:

Metrics is a Java library which gives you unparalleled insight into what your code does in production.
Metrics provides a powerful toolkit of ways to measure the behavior of critical components in your production environment.
With modules for common libraries like Jetty, Logback, Log4j, Apache HttpClient, Ehcache, JDBI, Jersey and reporting backends like Graphite, Metrics provides you with full-stack visibility.

翻譯一下:

Metrics是一個Java庫,可以讓您無比洞察代碼在生產中的功能。Metrics提供了一種功能強大的工具包,該工具包可用於衡量生產環境中關鍵組件的行爲。藉助適用於常見庫(如Jetty,Logback,Log4j,Apache HttpClient,Ehcache,JDBI,Jersey)的模塊以及報告後端(如Graphite),Metrics可爲您提供全棧可見性。

大白話:dropwizard-metrics是一個度量工具包,可集成於多種常見庫,提供全棧監控可見性。

「目前最爲流行的 metrics 庫是來自 Coda Hale 的 dropwizard/metrics,該庫被普遍地應用於各個知名的開源項目中。例如 Hadoop,Kafka,Spark,JStorm 中。」

而後我又不由本身問本身了:市面上這麼多監控系統和框架,dropwizard-metrics處於什麼定位呢?

基於好奇,本身又展開了一番調研。

4. 監控體系梳理

提到監控,無非如下這些常見的詞彙:

Atlas、Datadog、Ganglia、Graphite、Influx、JMX、NewRelic、Prometheus、SignalFx、StatsD、Wavefront、Micrometer、Spring-actuator、Pinpoint、Zipkin、Skywalking、Grafana等等。

我從數據流的角度將以上框架大體分爲三種:

  • 生產類監控指標框架:進行指標統計與監控,首先要生產指標數據,這類框架如Micrometer,咱們也叫埋點類指標框架。
  • 消費類監控指標框架:有了指標數據,咱們就要採集處理進行消費,這類框架如Ganglia、Prometheus、Influx等。
  • 展現類監控指標框架:這類框架主要用於數據圖標的前端展現,如:Graphite、Grafana等。

而今天咱們瞭解到的Dropwizard-Metrics監控框架,就屬於生產類監控指標框架。那Dropwizard-Metrics監控框架與Micrometer有什麼關係嗎?如何作選擇呢?

回答是:沒有關係,並存關係。

咱們知道,Spring2監控框架是基於Micrometer,並深度集成的。然而Hadoop、HBase則是基於Dropwizard-Metrics拓展開來,你猜是爲何?先讀讀下面一句話。

「springboot2在spring-boot-actuator中引入了micrometer,對1.x的metrics進行了重構,另外支持對接的監控系統也更加豐富(Atlas、Datadog、Ganglia、Graphite、Influx、JMX、NewRelic、Prometheus、SignalFx、StatsD、Wavefront)。1.x的metrics都有點對齊dropwizard-metrics的味道,而micrometer除了一些基本metrics與dropwizard-metrics相相似外,重點支持了tag。這是一個很重要的信號,標誌着老一代的statsd、graphite逐步讓步於支持tag的influx以及prometheus。」

看着好像Micrometer更強大似的,簡直像Dropwizard-Metrics二代升級版呀!不只對接的監控系統更加豐富,並且還重點支持了tag,對於偉大的集大成者、人人口中的強力膠——Spring而言,固然選擇爸爸版咯~

而像Hadoop、HBase之類的數據層軟件框架,或許我只能大概猜一猜了!

  • Micrometer當然強大,但我並不須要你那麼強大,Dropwizard-Metrics夠輕因此我選它!
  • 難道跟Spring家族是死對頭?
  • 或許真的是當初選錯了?
  • 仍是Micrometer生的太晚了?

你猜呢?哈哈哈~ 魂力不足,不如繼續學習吧!隨後咱們繼續深刻Dropwizard-Metrics~

掃描二維碼關注博主公衆號

轉載請註明出處!歡迎關注本人微信公衆號【HBase工做筆記】

相關文章
相關標籤/搜索