随着系统越来越大,越来越复杂,我们需要在业务方面加上一些监控服务。Metrics作为一款监控指标的度量类库,在JAVA代码中嵌入Metrics代码,可以方便的对业务代码的各个指标进行监控,同时,Metrics能够很好的跟Ganlia、Graphite结合,方便的提供图形化接口。
使用Metrics
使用Metrics,只需要在pom文件里面增加metrics-core的依赖:1
2
3
4
5
io.dropwizard.metrics
metrics-core
4.0.0
core包主要提供如下核心功能:Metrics中MetricRegistry是中心容器,它是程序中所有度量的容器,所有新的度量工具都要注册到一个MetricRegistry实例中才可以使用,尽量在一个应用中保持让这个MetricRegistry实例保持单例。
支持五种metric类型:Gauges(度量)
Counters(计数器)
Meters(TPS计算器)
Histograms(直方图数据)
Timers(计时器)
可以将metrics值通过JMX、Console,CSV文件和SLF4J loggers发布出来。
Gauge (仪表)
Gauge代表一个度量的即时值。 当你开汽车的时候, 当前速度是Gauge值。 你测体温的时候, 体温计的刻度是一个Gauge值。 当你的程序运行的时候,内存使用量和数据库连接数都可以通过Gauge值来度量。
下面是一个使用SpringBoot创建的domo示例:
配置类:MonitorConfiguration.java,将MetricRegistry的实例配置到Spring的IOC容器中。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27package com.lzumetal.springboot.metrics.config;
import com.codahale.metrics.MetricRegistry;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
*
Description:
*
* @author liaosi
* @date 2018-07-28
*/
public class{
* 其实就是一个metrics容器,因为该类的一个属性final ConcurrentMap metrics,
* 在实际使用中做成单例的
* @return
*/
@Bean(name = "metricRegistry")
public MetricRegistry metricRegistry(){
return new MetricRegistry();
}
}
SpringBood项目启动类:1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19package com.lzumetal.springboot.metrics;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
*
Description:
*