**前言:**对于任意一个系统而言,作好监控都是很是重要的,HBase也不例外。常常,咱们会从JMX中获取相关指标来作展现、对HBase进行监控,那这些指标是怎么生成的呢?若是你想自定义本身的监控指标又该怎么作呢?基于好奇之心和学习的目的,最近打算学习一下HBase监控相关原理及实现,今天先简单捋一捋思路。
我一贯比较喜欢先看项目所依赖的pom文件,打开HBase源码,有两个很是相关的模块:前端
hbase-metrics-api
hbase-metrics
分别打开两个子项目的pom文件查看,搜索关键词'metrics'碰碰运气,有两个小发现:web
hbase-metrics
依赖子项目hbase-metrics-api
,子项目hbase-metrics-api
大部分是接口类,而子项目hbase-metrics
基本上是对子项目hbase-metrics-api
接口类的实现类。<dependency> <groupId>io.dropwizard.metrics</groupId> <artifactId>metrics-core</artifactId> </dependency>
那这是个什么东西呢?凭直觉,要理解好HBase Metrics的实现,首先要先搞明白这是个什么东东。本文接下来也主要围绕io.dropwizard.metrics
展开。spring
通过一番调研,总感受dropwizard是上个世纪的产物。看下官网介绍:后端
Dropwizard is a Java framework for developing ops-friendly, high-performance, RESTful web services.
翻译一下:api
Dropwizard是一个Java框架,用于开发对操做友好的高性能RESTful Web服务。
感受理解不太到位,RESTful Web服务也没据说过这个,百度扫扫盲吧!结果很意外,网上竟是Dropwizard与Spring Boot比较相关的文章。我抽两条比较重要的:springboot
好稀罕!真的是孤陋寡闻了吗?居然是跟Spring Boot相媲美的,也集成了众多框架,Dropwizard metrics 就是其自带的监控框架。下面就介绍一下Dropwizard metrics。框架
看下官网介绍:ide
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.
翻译一下:spring-boot
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处于什么定位呢?
基于好奇,本身又展开了一番调研。
提到监控,无非如下这些常见的词汇:
Atlas、Datadog、Ganglia、Graphite、Influx、JMX、NewRelic、Prometheus、SignalFx、StatsD、Wavefront、Micrometer、Spring-actuator、Pinpoint、Zipkin、Skywalking、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之类的数据层软件框架,或许我只能大概猜一猜了!
你猜呢?哈哈哈~ 魂力不足,不如继续学习吧!随后咱们继续深刻Dropwizard-Metrics~