前言: 對於任意一個系統而言,做好監控都是非常重要的,HBase也不例外。經常,我們會從JMX中獲取相關指標來做展示、對HBase進行監控,那這些指標是怎麼生成的呢?如果你想自定義自己的監控指標又該怎麼做呢?基於好奇之心和學習的目的,最近打算學習一下HBase監控相關原理及實現,今天先簡單捋一捋思路 ...
前言:對於任意一個系統而言,做好監控都是非常重要的,HBase也不例外。經常,我們會從JMX中獲取相關指標來做展示、對HBase進行監控,那這些指標是怎麼生成的呢?如果你想自定義自己的監控指標又該怎麼做呢?基於好奇之心和學習的目的,最近打算學習一下HBase監控相關原理及實現,今天先簡單捋一捋思路。
1. 如何下手?
我一向比較喜歡先看項目所依賴的pom文件,打開HBase源碼,有兩個非常相關的模塊:
-
hbase-metrics-api
-
hbase-metrics
分別打開兩個子項目的pom文件查看,搜索關鍵詞'metrics'碰碰運氣,有兩個小發現:
-
子項目
hbase-metrics
依賴子項目hbase-metrics-api
,子項目hbase-metrics-api
大部分是介面類,而子項目hbase-metrics
基本上是對子項目hbase-metrics-api
介面類的實現類。 -
子項目hbase-metrics中有metrics相關繼承式依賴,如下:
<dependency>
<groupId>io.dropwizard.metrics</groupId>
<artifactId>metrics-core</artifactId>
</dependency>
那這是個什麼東西呢?憑直覺,要理解好HBase Metrics的實現,首先要先搞明白這是個什麼東東。本文接下來也主要圍繞io.dropwizard.metrics
展開。
2. Dropwizard是什麼?
經過一番調研,總感覺dropwizard是上個世紀的產物。看下官網介紹:
Dropwizard is a Java framework for developing ops-friendly, high-performance, RESTful web services.
翻譯一下:
Dropwizard是一個Java框架,用於開發對操作友好的高性能RESTful Web服務。
感覺理解不太到位,RESTful Web服務也沒聽說過這個,百度掃掃盲吧!結果很意外,網上竟是Dropwizard與Spring Boot比較相關的文章。我抽兩條比較重要的:
- Dropwizard定位:微服務框架
- 兩者都有很強很大的社區支持。如果你更喜歡輕量,無疑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工作筆記】