一、背景
最近两个月的工作中,一直在监控线上应用的情况,并且在排查线上问题的时候,发现线上的机器十分之多,为了能够自动化、平台化的监控线上应用,选择了Metrics。Metrics是给Java服务的各种指标提供监控的一种工具包。
二、简介
结合项目组使用的是SpringBoot的应用部署方式和Maven的项目管理方式,引入Metrics的方式如下:
<dependency> <groupId>io.dropwizard.metrics</groupId> <artifactId>metrics-core</artifactId> <version>3.1.2</version> </dependency>
1、Metrics的基本工具
Metrics提供了五中基本的度量类型:
Gauges:度量
Counters:计数器
Histograms:直方图数据
Meters:TPS计数器
Timers:计数器
Metrics中MetricRegistry是中心容器,它是程序中所有度量的容器,所有新的度量工具都要注册到一个MetricRegistry实例中才可以使用。这里需要说明的是,在一个应用中尽量让MetricRegistry保持单例。
2、MetricRegistry容器
配置MetricRegistry容器的代码如下:
@Bean
public MetricRegistry metrics() {
return new MetricRegistry();
}
3、Meters
其实将Meters称作TPS计数器并不是那么准确,Meters工具会帮助我们统计系统中某个事件的速率。比如,每秒请求数TPS,每秒查询数QPS等等。这个指标能反应出当时系统的处理能力,帮助我们判断资源是否已经不足等等。Meters本身是一个计数器,并且是自增的。而获取Meters的一个对象meter,或者是实例,如下所示:
@Bean
public Meter requestMeter(MetricRegistry metrics) {
return metrics.meter("request");
}