Metrics,入门到应用

本文介绍了如何使用 Metrics 库,特别是 dropwizard/metrics,来为系统和服务建立监控和统计。通过Java示例,展示了MetricRegistry的创建、Metrics的命名,以及ConsoleReporter的使用。文中详细讲解了Gauges、Counters、Meters、Histograms和Timers五种Metrics类型,并给出了实际应用的代码示例。
摘要由CSDN通过智能技术生成

Metrics,谷歌翻译就是度量的意思。当我们需要为某个系统某个服务做监控、做统计,就需要用到Metrics。

举个栗子,一个图片压缩服务:

每秒钟的请求数是多少(TPS)?
平均每个请求处理的时间?
请求处理的最长耗时?
等待处理的请求队列长度?
又或者一个缓存服务:

缓存的命中率?
平均查询缓存的时间?
基本上每一个服务、应用都需要做一个监控系统,这需要尽量以少量的代码,实现统计某类数据的功能。

以 Java 为例,目前最为流行的 metrics 库是来自 Coda Hale 的 dropwizard/metrics,该库被广泛地应用于各个知名的开源项目中。例如 Hadoop,Kafka,Spark,JStorm 中。

本文就结合范例来主要介绍下 dropwizard/metrics 的概念和用法。

Maven 配置
我们需要在pom.xml中依赖 metrics-core 包:

<dependencies>
<dependency>
<groupId>io.dropwizard.metrics</groupId>
<artifactId>metrics-core</artifactId>
<version>${metrics.version}</version>
</dependency>
</dependencies>

注:在POM文件中需要声明 ${metrics.version} 的具体版本号,如 3.1.0

Metric Registries
MetricRegistry类是Metrics的核心,它是存放应用中所有metrics的容器。也是我们使用 Metrics 库的起点。

MetricRegistry registry = new MetricRegistry();
每一个 metric 都有它独一无二的名字,Metrics 中使用句点名字,如 com.example.Queue.size。当你在 com.example.Queue 下有两个 metric 实例,可以指定地更具体:com.example.Queue.requests.size 和 com.example.Queue.response.size 。使用MetricRegistry类,可以非常方便地生成名字。

MetricRegistry.name(Queue.class, “requests”, “size”)
MetricRegistry.name(Queue.class, “responses”, “size”)
Metrics 数据展示
Metircs 提供了 Report 接口,用于展示 metrics 获取到的统计数据。metrics-core中主要实现了四种 reporter:JMX, console, SLF4J, 和 CSV。 在本文的例子中,我们使用 ConsoleReporter 。

五种 Metrics 类型
Gauges
最简单的度量指标,只有一个简单的返回值,例如,我们想衡量一个待处理队列中任务的个数,代码如下:

public class GaugeTest {
   
public static Queue<String> q = new LinkedList<String>();
public static void main(String[] args) throws InterruptedException {
   
MetricRegistry registry = new MetricRegistry();
ConsoleReporter reporter = ConsoleReporter.forRegistry(registry).build();
reporter.start(1, TimeUnit.SECONDS);
registry.register(MetricRegistry.name(GaugeTest.class, "queue", "size"),
new Gauge<Integer>() {
   
public Integer getValue() {
   
return q.size();
}
});
while(true){
   
Thread.sleep(1000);
q.add
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值