本文概览:metrics主要由MeterRegry、度量组件组成。通过一个应用实例介绍使用metric实现打点并保存到指标到influxdb。

1 Metrics介绍

Metrics是一个记录监控指标的度量类型,类似于Logback记录日志一样,它是面向监控的度量数据。

目前常用的有dropwizard.metrics下面的库,mavenpom.xml如下

它提供了五种基本度量组件:

  • Gauge  度量值,包含简单度量值、比率信息。
  • Counters 计数器
  • Histograms 直方图
  • Meters   qps计算器
  • Timer 计时器

2 MetricRegistry

对于一个应用,应该只有一个MetricRegistry对象。MetricRegistry存放了这个应用的所有Metric,每一个Metric都有一个唯一名字。

分为MetricRegistry和SharedMetricRegistries两个,SharedMetricRegitries相对于MetricRegistry是线程安全的

对于一个应用一般只有一个MerticRegistry

3 度量组件

3.1 计数器Counter

1、功能

记录次数

2、demo代码

如下:

执行结果为:

3.2 计时器Timer

1、功能

记录执行时间

2、demo代码

执行结果为:

3.3 Gauge

1、功能

Guague是一个接口,只是用来返回一个度量值。如下

它包括了

  • 自定义Gauage,返回一个度量值
  • RationGauage,返回一个比率值。
  • Cached Guages
  • Derivative Guages

3.3.1 自定义

代码如下:

3.3.2 Ratio Gauage

RationGuage是一个抽象类,它的作用就是通过getValue()来返回一个用来返回比值。代码如下:

3.4 Meter

3.4.1 功能

统计事件发生率,如统计QPS,每一秒的请求次数。监控的数据有有:

  • 总次数
  • 平均吞吐量(总次数/总时间)
  • 基于一分钟、五分钟和十分钟的指数加权移动平均

2、指数加权移动平均

可以参考wiki:https://zh.wikipedia.org/wiki/%E7%A7%BB%E5%8B%95%E5%B9%B3%E5%9D%87。介绍了简单移动平均(英语:simple moving average,SMA)、加权移动平均(英语:weighted moving average,WMA)和 指数加权移动平均(英语:exponential moving average,EMA或EWMA)三种平均移动。在股市走势图常见,如下:

928180

3.4.2 Demo代码

执行结果为:

4 应用实例

流程如下:

Snip20181026_285

4.1 自定义MetricRegistry

1、pom.xml

2、web.xml

3、定义监控工具类

4、定义servlet

5、http://localhost:8080/monitor/metrics

61902308

4.2 对接influxdb

4.3 应用influxdbReporter

定义一个bean,在初始化时,启动这个reporter

为了在初始化时加载这个bean,如下

参考资料

1、 官网使用 http://metrics.dropwizard.io/3.1.0/manual/core/

2、http://www.jianshu.com/p/e4f70ddbc287

3、http://wuchong.me/blog/2015/08/01/getting-started-with-metrics/

分类&标签