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

来源:互联网 发布:淘宝网3c认证怎么上传 编辑:程序博客网 时间:2024/06/06 07:32
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);//开始统计timer1Timer.Context mTimer1 = metrics.timer("timer1").time();//--------标签timer1对应的mTimer1开始计时safeSleep(100);//开始统计timer2Timer.Context mTimer2 = metrics.timer("timer2").time();//--------标签timer2对应的mTimer2开始计时safeSleep(100);//结束统计timer1mTimer1.stop();//--------标签timer1对应的mTimer1计时结束//结束统计timer2mTimer2.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=milliseconds10: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=millisecondsc


0 0
原创粉丝点击