本文概览:介绍了Micrometer的作用、与Spring boot比较、与dropwizard-metrics比较以及与Spring boot 集成。

1 Micrometer介绍

1.1 功能

如何理解Micrometer?可以当成dropwizard-metrics来理解,dropwizar-metrics功能一样,都是做度量指标收集。提供功能,如下:(参考:https://micrometer.io/

1、提供了Dimentsion维度的数据

提供了记录度量指标类(TimersGuaugesCounters)。通过micrometer-core包中实现。

Snip20181023_239

2、系统指标的收集,在micrometer-core中都继承自MeterBinder.class。这些类需要绑定到MeterRegtry上才可以进行手机指标,在micrometer-spring-legacy MeterRegistryPostProcessor来绑定这些类。

Snip20181023_240

3、支持向监控系统发送指标

接入不同监控系统,如InfluxdbGraphite等。可以通过“micrometer-registry-xx”包来指定使用哪个监控系统。

Snip20181023_243

4、与spring整合

1Spring2.0

spring boot actuator中使用了Micrometer

2Spring1.5x

使用micrometer-spring-legacy来使用Micrometer

3)其他(包括spring boot1.x(小于1.5)以及传统spring mvc项目)

待完善

Snip20181023_241

1.2 Micrometer与Spring Boot Actuator比较

在spring2.x之后,Spring boot actuator使用了Micrometer来实现监控但是在spring 2之前 Spring boot  actuator 并没有使用Micrometer,而是类似如自己之前写的统计监控指标的sdk,使用了dropwizard-metrics,所以Spring1.x与Micrometer没有任何关系。

  • Spring boot 2使用mircrometer进行统计数据和发布数据到监控系统,例如之前写的统计监控指标的sdk,是使用了dropwizard-metrics
  • 为了更好理解Spring boot 1和spring boot2区别,可以理解为spring boot1是通过dropwizard-metrics实现的,spring boot2 通过micrometer来实现

在Spring boot1.5x中还可以通过micrometer-spring-legacy来使用micrometer(此时就不需要引入spring boot actuator包了,因为legacy和acuator都是为了实现监控是功能等同的包),但是之前版本是不支持的。从这个角度讲Spring boot2 acutar相当于实现了micrometer-spring-legacy

Spring Boot Actuator使用 ,参考:

Spring Boot Actuator

1.3 Micrometer与dropwizard-metrics

二者关系:dropwizard-metrics和micrometer都是度量工具包,但是没有任何关系。

二者不同点:在于Micrometer支持tags,即一组keys联合标识一个唯一键。

参考下  https://juejin.im/post/5aad3351f265da23994e4ce7

50632882

1、dropwizard-metrics

dropwizard-metrics可以参考:

Dropwizard Metrics-core介绍和应用

2、Mircrometer

其中ID的定义如下,可以看到通过一组tags的值标识一个唯一的key

2 Micrometer与spring boot集成

1、使用Micrometer的方法有两种常用方法:

官网安装:https://micrometer.io/docs/installing

  • 方式1:通过maven引入“micrometer-spring-legacy”,在Springboot 1.5x情况下。
  • 方式2:通过maven引入 “spring boot 2 actuator” 。

2、micrometer-spring-legacy和micrometer-core、micrometer-registry-influx关系

  • micrometer-spring-legacy使用Micrometer-core中指标记录器,如提供通过WebMvcMetricsFilte记录http request的指标,该filter可以加载 micrometer-registry-influx中InfluxMeterRegestry,将指标数据保存到influxdb。
  • micrometer-registry-influx,提供了一个InfluxMeterRegestry,继承自microemeter-core中MeterRegtry向influxdb定时发送数据。

2.1 spring boot 1.5.x

使用文档参考:https://micrometer.io/docs/ref/spring/1.5

1、maven库

相比spring boot 2.0需要多引入一个micrometer-spring-legacy。

2、配置文件

参考:https://micrometer.io/docs/registry/influx

 按上面的属性都会初始化给InfluxdbConfig

在使用时,我们只需要修改如下两个配置就可以

2.2 接入 spring boot  2.0

使用文档参考:

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#production-ready-metrics

1、maven库

可以理解为Spring boot2.0 集成了micrometer-spring-legacy 的功能,所以不需要再引入micrometer-spring-legacy。

2、配置

同上spring boot 1.5x。

2.3 其他项目

在普通spring mvc项目或者spring boot 1.5x版本以下项目中如何使用。(待完善)

3 应用实例

3.1 部署

流程如下

Snip20181023_259

1、环境:

      以spring boot1.5x + influx为例为例。

2、搭建spring boot工程

在pom.xml中引入了micrometer-spring-legacy和micrometer-registry-influx就可以了。在配置文件中配置influxdb的地址,默认情况下http://localhost:8086,数据库名称默认为mydb。

参考:Sprng boot 实例

Spring Boot实例

3、搭建influxdb

参考:influxDb介绍和部署

InfluxDb(01) 介绍和部署

4、运行springboot之后,就会有指标灌进去,可以查看指标

在run日志中有

60826191

查看influxdb,数据库名称默认为mydb

5、通过Grafana查看指标

Grafana介绍和部署

3.2 代码入口

在micrometer-spring-legacy 包的WebMvcMetricsFilter。

参考: Micormeter两个包-micrometer-spring-legacy和micrometer-registry-influx

Micrometer两个包-micrometer-spring-legacy和micrometer-registry-influx

参考资料

1、官网文档:https://micrometer.io/docs/concepts

2、官网首页 https://micrometer.io/docs/

3、spring boot 2.0 的官网

https://docs.spring.io/spring-boot/docs/2.0.x/reference/htmlsingle/

4、spring boot1.5x的官网

https://docs.spring.io/spring-boot/docs/1.5.x/reference/htmlsingle/

5、使用 Micrometer 记录 Java 应用性能指标 https://www.ibm.com/developerworks/cn/java/j-using-micrometer-to-record-java-metric/index.html

6、Migrating Spring Applications from DropWizard Metrics to Micrometer  https://medium.com/expedia-group-tech/migrating-spring-applications-from-dropwizard-metrics-to-micrometer-5433f481f541

分类&标签