java metrics.counter_metrics的timer功能在java项目中的使用方法

metrics是开源的统计工具,其官网地址为:https://dropwizard.github.io/metrics/3.1.0/

使用时所需的jar包为:metrics-core-3.X.X.jar,例如:metrics-core-3.1.0.jar

在使用过程中,一般一个程序创建一个全局的MetricRegistry,由其对数据进行统计;数据统计的结果可用reporter输出,metrics支持多种类型的输出,例如使用ConsoleReporter 输出到控制台,使用Slf4jReporter将统计结果以self4j的日志方式输出(需要self4j的jar包)。

下面是其timer功能的使用方法:

功能介绍:metrics的timer功能可以统计一段代码的执行时间执行次数等

使用方法:

1.创建一个程序唯一的MetricRegistry对象

2.创建一个reporter对象来输出统计结果

3.打开reporter,让其处于数据输出的状态

4.为一段要监控的代码起一个标签名,在metrics内部将以该标签作为key来保存其统计数据;

5.为这个标签创建一个Timer.Context对象,并开始本次统计

6.调用Timer.Context对象的stop函数结束本次统计

5和6这两步算作一次统计,如果循环执行这两步就是循环统计这个标签所代表的代码

示例代码为:

MetricRegistry metrics = new MetricRegistry();

Slf4jReporter reporter = Slf4jReporter

.forRegistry(metrics).convertRatesTo(TimeUnit.SECONDS)

.convertDurationsTo(TimeUnit.MILLISECONDS).build();

//metrics数据统计工具

int icounter = 0;

reporter.start(20, TimeUnit.SECONDS);

long it = System.currentTimeMillis();

boolean start = false;

while(true)

{

icounter++;

long st = System.currentTimeMillis();

if(st - it > 10000 && !start)

{

start = true;

System.out.println("stop metrics");

reporter.stop();

}

System.out.println("counter = " + icounter);

//开始统计timer1

Timer.Context mTimer1 = metrics.timer("timer1").time();//--------标签timer1对应的mTimer1开始计时

safeSleep(100);

//开始统计timer2

Timer.Context mTimer2 = metrics.timer("timer2").time();//--------标签timer2对应的mTimer2开始计时

safeSleep(100);

//结束统计timer1

mTimer1.stop();//--------标签timer1对应的mTimer1计时结束

//结束统计timer2

mTimer2.stop();//--------标签timer2对应的mTimer1计时结束

}

其输出的结果为:

10:43:19.478 [metrics-logger-reporter-1-thread-1] INFO metrics - type=TIMER, name=timer1, count=494, min=19.090878, max=31.171142, mean=19.985073202643935, stddev=0.9713886624598259, median=19.858742, p75=19.909125, p95=20.520245, p98=21.869995, p99=24.629206999999997, p999=31.171142, mean_rate=49.43821863514075, m1=49.199999999999996, m5=49.199999999999996, m15=49.199999999999996, rate_unit=events/second, duration_unit=milliseconds

10:43:19.488 [metrics-logger-reporter-1-thread-1] INFO metrics - type=TIMER, name=timer2, count=495, min=9.132584, max=21.298683, mean=10.124765811511601, stddev=0.7566357585679963, median=10.036045999999999, p75=10.081762999999999, p95=10.619485, p98=11.162185, p99=13.216044, p999=21.298683, mean_rate=49.541734551687156, m1=49.4, m5=49.4, m15=49.4, rate_unit=events/second, duration_unit=milliseconds

c

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
注:下文的 *** 代表文件名的组件名称。 # 包含: 文-英文对照文档:【***-javadoc-API文档-文(简体)-英语-对照版.zip】 jar包下载地址:【***.jar下载地址(官方地址+国内镜像地址).txt】 Maven依赖:【***.jar Maven依赖信息(可用于项目pom.xml).txt】 Gradle依赖:【***.jar Gradle依赖信息(可用于项目build.gradle).txt】 源代码下载地址:【***-sources.jar下载地址(官方地址+国内镜像地址).txt】 # 本文件关键字: 文-英文对照文档,英对照文档,java,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,文API文档,手册,开发手册,使用手册,参考手册 # 使用方法: 解压 【***.jar文文档.zip】,再解压其的 【***-javadoc-API文档-文(简体)版.zip】,双击 【index.html】 文件,即可用浏览器打开、进行查看。 # 特殊说明: ·本文档为人性化翻译,精心制作,请放心使用。 ·本文档为双语同时展示,一行原文、一行译文,可逐行对照,避免了原文/译文来回切换的麻烦; ·有原文可参照,不再担心翻译偏差误导; ·边学技术、边学英语。 ·只翻译了该翻译的内容,如:注释、说明、描述、用法讲解 等; ·不该翻译的内容保持原样,如:类名、方法名、包名、类型、关键字、代码 等。 # 温馨提示: (1)为了防止解压后路径太长导致浏览器无法打开,推荐在解压时选择“解压到当前文件夹”(放心,自带文件夹,文件不会散落一地); (2)有时,一套Java组件会有多个jar,所以在下载前,请仔细阅读本篇描述,以确保这就是你需要的文件;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值