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. 用Feed43为随意站点定制RSS feed教程~

     用Feed43为随意站点定制RSS feed教程- Feed43--自己定义RSS种子的免费工具中笔者的最爱,确切来讲Feed43不适合心脏衰弱者.通过它的服务,我能够很好地控制种子的终于样式,当然 ...

  2. 黑马程序员:Java基础总结----类加载器

    黑马程序员:Java基础总结 类加载器   ASP.Net+Android+IO开发 . .Net培训 .期待与您交流! 类加载器 Java虚拟机中可以安装多个类加载器,系统默认三个主要类加载器,每个 ...

  3. Android真机网络adb联机调试初探

    新项目是一个基于android4.2设备.刚拿到demo板时就对联机互调感兴趣了.处于以前在S3c2440上对linux的移植使用经验.心里猜测对于android设备应该也这样.所以通过搜索资料整理如 ...

  4. linux根据部署jenkins

    1. Jenkins 下载 Jenkins 下载网址:http://jenkins-ci.org/ 2. Jenkins 安装 (1) 安装JDK JDK下载:http://www.oracle.co ...

  5. Ubuntu 12.04更新源

    源地址:http://www.cnblogs.com/eastson/archive/2012/08/24/2654163.html 1.首先备份Ubuntu12.04源列表 sudo cp /etc ...

  6. spark的action和transformations汇集

    汇总了Spark支持的Transformations 和Actions 用于备忘! 參考 http://spark.apache.org/docs/latest/programming-guide.h ...

  7. bzoj(矩阵快速幂)

    题意:定义Concatenate(1,N)=1234567……n.比如Concatenate(1,13)=12345678910111213.给定n和m,求Concatenate(1,n)%m. (1 ...

  8. Beijing Perl Workshop - Augest 10th, 2013

    Beijing Perl Workshop - Augest 10th, 2013 Beijing Perl Workshop

  9. HDU4344(大数分解)

    题目:Mark the Rope 题意就是给一个数,然后求这个数的所有因子中组成的最大的一个子集,其中1和本身除外,使得在这个子集中元素两两互素,求最大子集的元素个 数,并且求出和最大的值. 找规律就 ...

  10. OSPF理论总结

    OSPF学习总结一.OSPF协议的报文类型: 1. Hello 报文:主要用来发现.建立和维护邻居关系. 2. DD报文:数据库的描述报文,主要用来两台路由器的数据库同步. 3. LSR报文:链路状态 ...