Java Metrics

Java Metrics是一个功能比較强大的java统计库,它的输出组件也非常强大,帮我们做好了:

  • 输出到Ganglia
  • 输出到控制台
  • 输出到JMX
  • 输出Json

具体见:dropwizard.github.io/metrics/

依赖

加入�依赖,如gradle:

    compile "io.dropwizard.metrics:metrics-core:3.1.0"
compile "io.dropwizard.metrics:metrics-ganglia:3.1.0"

假设须要ganglia输出功能,则须要metrics-ganglia包。我写的自己主动压測工具test-framework主要用失败计数,QPS统计。

统计调用频率

计数型的统计,比方计算失败次数,每次+1,则能够用Meter

public class GetStarted {
static final MetricRegistry metrics = new MetricRegistry();
public static void main(String args[]) {
startReport();
//metrics:事件总数,平均速率,包括1分钟,5分钟,15分钟的速率
Meter requests = metrics.meter("requests");
//计数一次
requests.mark();
wait5Seconds();
} static void startReport() {
//注冊metrics,每一个1秒打印metrics到控制台
ConsoleReporter reporter = ConsoleReporter.forRegistry(metrics)
.convertRatesTo(TimeUnit.SECONDS)
.convertDurationsTo(TimeUnit.MILLISECONDS)
.build();
reporter.start(1, TimeUnit.SECONDS);
} static void wait5Seconds() {
try {
Thread.sleep(5*1000);
}
catch(InterruptedException e) {}
}
}

效果:

14-10-14 21:28:53 ==============================================================

-- Meters ----------------------------------------------------------------------
requests
count = 1
mean rate = 1.00 events/second
1-minute rate = 0.00 events/second
5-minute rate = 0.00 events/second
15-minute rate = 0.00 events/second 14-10-14 21:28:54 ============================================================== -- Meters ----------------------------------------------------------------------
requests
count = 1
mean rate = 0.51 events/second
1-minute rate = 0.00 events/second
5-minute rate = 0.00 events/second
15-minute rate = 0.00 events/second 14-10-14 21:28:55 ============================================================== -- Meters ----------------------------------------------------------------------
requests
count = 1
mean rate = 0.33 events/second
1-minute rate = 0.00 events/second
5-minute rate = 0.00 events/second
15-minute rate = 0.00 events/second 14-10-14 21:28:56 ============================================================== -- Meters ----------------------------------------------------------------------
requests
count = 1
mean rate = 0.25 events/second
1-minute rate = 0.00 events/second
5-minute rate = 0.00 events/second
15-minute rate = 0.00 events/second 14-10-14 21:28:57 ============================================================== -- Meters ----------------------------------------------------------------------
requests
count = 1
mean rate = 0.20 events/second
1-minute rate = 0.00 events/second
5-minute rate = 0.00 events/second
15-minute rate = 0.00 events/second

统计QPS

依据时间来计算qps,能够用Timer

public class TimerTest {
static final MetricRegistry metrics = new MetricRegistry();
private static Timer timer = metrics.timer(MetricRegistry.name(TimerTest.class, "calculation-duration"));
public static void main(String[] args) throws InterruptedException {
// TODOAuto-generated method stub
startReport();
Random rn = new Random();
while (true) {
//统计開始
final Timer.Context context = timer.time();
int sleepTime = rn.nextInt(2000);
Thread.sleep(sleepTime);
System.out.println("处理耗时:" + sleepTime);
//统计结束
context.stop();
}
}
static void startReport() {
//注冊metrics,每一个1秒打印metrics到控制台
ConsoleReporter reporter = ConsoleReporter.forRegistry(metrics)
.convertRatesTo(TimeUnit.SECONDS)
.convertDurationsTo(TimeUnit.MILLISECONDS)
.build();
reporter.start(1, TimeUnit.SECONDS);
} }

结果:

处理耗时:996
14-10-14 22:40:34 ============================================================== -- Timers ----------------------------------------------------------------------
com.edwardsbean.test.TimerTest.calculation-duration
count = 1
mean rate = 0.91 calls/second
1-minute rate = 0.00 calls/second
5-minute rate = 0.00 calls/second
15-minute rate = 0.00 calls/second
min = 995.91 milliseconds
max = 995.91 milliseconds
mean = 995.91 milliseconds
stddev = 0.00 milliseconds
median = 995.91 milliseconds
75% <= 995.91 milliseconds
95% <= 995.91 milliseconds
98% <= 995.91 milliseconds
99% <= 995.91 milliseconds
99.9% <= 995.91 milliseconds 14-10-14 22:40:35 ============================================================== -- Timers ----------------------------------------------------------------------
com.edwardsbean.test.TimerTest.calculation-duration
count = 1
mean rate = 0.48 calls/second
1-minute rate = 0.00 calls/second
5-minute rate = 0.00 calls/second
15-minute rate = 0.00 calls/second
min = 995.91 milliseconds
max = 995.91 milliseconds
mean = 995.91 milliseconds
stddev = 0.00 milliseconds
median = 995.91 milliseconds
75% <= 995.91 milliseconds
95% <= 995.91 milliseconds
98% <= 995.91 milliseconds
99% <= 995.91 milliseconds
99.9% <= 995.91 milliseconds

关于输出

每个输出组件都有一个相应的Reporter主类,比方Ganglia:

GMetric ganglia = new GMetric(address[0].getHostName(), address[0].getPort(), GMetric.UDPAddressingMode.MULTICAST, 1);

GangliaReporter gangliaReporter = GangliaReporter.forRegistry(metricRegistry)
.convertRatesTo(TimeUnit.SECONDS)
.convertDurationsTo(TimeUnit.MILLISECONDS)
.build(ganglia);
//開始汇报
gangliaReporter.start(1, TimeUnit.SECONDS);

而输出控制台的Reporter

###
ConsoleReporter reporter = ConsoleReporter.forRegistry(metrics)
.convertRatesTo(TimeUnit.SECONDS)
.convertDurationsTo(TimeUnit.MILLISECONDS)
.build();
reporter.start(1, TimeUnit.SECONDS);

Java Metrics的更多相关文章

  1. JAVA Metrics度量工具 - Metrics Core 翻译

    Metrics核心 翻译自Metrics官方文档: http://metrics.codahale.com/manual/core/ JAVA Metrics是一个用于度量的一个JAVA的类库,使用请 ...

  2. Java Metrics工具介绍

    目录 简介 快速入门 Maven配置 MetricRegistry Gauge Meter Counter Histgram Timer Reporter 更多用法 参考资料 简介 Metric是一个 ...

  3. JAVA Metrics 度量工具使用介绍1

    Java Metric使用介绍1 Metrics是一个给JAVA提供度量工具的包,在JAVA代码中嵌入Metrics代码,可以方便的对业务代码的各个指标进行监控,同一时候,Metrics可以非常好的跟 ...

  4. JAVA Metrics 度量工具使用介绍

    转载: http://blog.csdn.net/scutshuxue/article/details/8350135 http://koven2049.iteye.com/blog/968143 h ...

  5. Metrics.NET 项目

    Metrics.NET(https://github.com/etishor/Metrics.NET)是一个给CLR 提供度量工具的包,它是移植自Java的metrics,在c#代码中嵌入Metric ...

  6. Metrics.NET实践(1)

    起因:对应用的监控和测量是WEB应用的一个重要话题,尤其在监控错误率,并发量,以及框架库中的动态值.于是,在性能优化的时候找到了metrics.net. 简介 开始使用 度量 Gauges Count ...

  7. kafka监控系统

    Metrics-Java版的指标度量工具之一 Metrics-Java版的指标度量工具之二 JAVA Metrics 度量工具使用介绍1 JAVA Metrics度量工具 - Metrics Core ...

  8. Spark案例分析

    一.需求:计算网页访问量前三名 import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} /* ...

  9. jmeter—PerfMon Metrics Collector(附java.io.IOException: Agent is unreachable via TCP错误解决办法)

    jmeter—PerfMon Metrics Collector(附java.io.IOException: Agent is unreachable via TCP错误解决办法 转自https:// ...

随机推荐

  1. MySQL的Master/Slave群集安装和配置

    本文介绍MySQL的Master/Slave群集安装和配置,版本号安装最新的稳定版GA 5.6.19. 为了支持有限HA.我们用Master/Slave读写简单孤立的集群.有限HA这是当Master不 ...

  2. 1.VMwareTools安装

     1 选中虚拟机.右击.然后点击:安装Vmware-tool(最好是有网络的情况下安装) 2 将Vmware-tool的安装文件复制到暂时文件夹下,截图例如以下: 3 解压VMwareTools- ...

  3. ImportError: No module named _sqlite3 - 代码分享

    ImportError: No module named _sqlite3 - 代码分享 ImportError: No module named _sqlite3 作者:86市场网       点击 ...

  4. myeclipse 那个版本号好用?

    myeclipse 那个版本号好用?   有没有现成的下载地址?

  5. HBase经常使用操作之namespace

    1.介绍 在HBase中,namespace命名空间指对一组表的逻辑分组,类似RDBMS中的database,方便对表在业务上划分.Apache HBase从0.98.0, 0.95.2两个版本号開始 ...

  6. SE 2014年4月12日

    BGP基础实验 拓扑 步骤: 1. 完成基本的配置 2. 按照需求自治系统AS 100 全网运行OSPF 单区域 3. 完成BGP基本配置 [RT2]bgp 100 [RT2-bgp]peer 67. ...

  7. svnkit添加节点

    package com.repositoryclient.svnoptions; import org.tmatesoft.svn.core.SVNException; import org.tmat ...

  8. 单点更新线段树 RMQ

    D. Xenia and Bit Operations time limit per test 2 seconds memory limit per test 256 megabytes input ...

  9. ACM-简单题之Least Common Multiple——hdu1019

    ***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...

  10. Android学习十九:ContentProvider初步

    一.Content Provider基本概念 1.ContentProvider为存储和获取数据提供了统一的接口.ContentProvide对数据进行封装.不用关心数据存储的细节.使用表的形式来组织 ...