简体   繁体   English

Java Metrics示例代码

[英]Java Metrics Sample code

I am newbie to metrics and I don't understand why I am getting this output Please somebody explain. 我是指标的新手,我不明白为什么我得到这个输出请有人解释。 Thanks in advance. 提前致谢。

package sample;
  import com.codahale.metrics.*;
  import java.util.concurrent.TimeUnit;

  public class GetStarted {
    static final MetricRegistry metrics = new MetricRegistry();
    public static void main(String args[]) {
      startReport();
      Meter requests = metrics.meter("requests");
      requests.mark();
      wait5Seconds();
    }

  static void startReport() {
      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) {}
  }
}

Output : 输出:

12/18/15 12:01:15 PM =========================================================== 12/18/15 12:01:15 PM ======================================= ====================

-- 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 - 米 - ----------------------------------------------- -----------------------请求计数= 1平均速率= 1.00事件/秒1分钟速率= 0.00事件/秒5分钟速率= 0.00事件/秒15分钟速率= 0.00事件/秒

12/18/15 12:01:16 PM =========================================================== 12/18/15 12:01:16 PM ======================================= ====================

-- Meters ---------------------------------------------------------------------- requests count = 1 mean rate = 0.50 events/second 1-minute rate = 0.00 events/second 5-minute rate = 0.00 events/second 15-minute rate = 0.00 events/second - 米 - ----------------------------------------------- -----------------------请求计数= 1平均速率= 0.50事件/秒1分钟速率= 0.00事件/秒5分钟速率= 0.00事件/秒15分钟速率= 0.00事件/秒

12/18/15 12:01:17 PM =========================================================== 12/18/15 12:01:17 PM ================================================== ====================

-- 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 - 米 - ----------------------------------------------- -----------------------请求数= 1平均速率= 0.33事件/秒1分钟速率= 0.00事件/秒5分钟速率= 0.00事件/秒15分钟速率= 0.00事件/秒

12/18/15 12:01:18 PM =========================================================== 12/18/15 12:01:18 PM ======================================= ====================

-- 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 - 米 - ----------------------------------------------- -----------------------请求计数= 1平均速率= 0.25事件/秒1分钟速率= 0.00事件/秒5分钟速率= 0.00事件/秒15分钟速率= 0.00事件/秒

12/18/15 12:01:19 PM =========================================================== 12/18/15 12:01:19 PM ================================================== ====================

-- 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 - 米 - ----------------------------------------------- -----------------------请求数= 1平均速率= 0.20事件/秒1分钟速率= 0.00事件/秒5分钟速率= 0.00事件/秒15分钟速率= 0.00事件/秒

After creating registry, you have started the reporter with 1 second interval. 创建注册表后,您以1秒的间隔启动了报告者。 So for each second, your console reporter will output to console. 因此,对于每一秒,您的控制台记者将输出到控制台。

You have chosen meter type metric which will give you count(no of times this event occurred) and mean rate (average rate). 您已选择计量表类型指标,可以计算(此事件发生的次数)和平均速率(平均速率)。 Other rates will be zero because a single time unit of that measurement is not yet over. 其他费率将为零,因为该测量的单个时间单位尚未结束。 Eg. 例如。 You ran the program only for 5 seconds so you will not get 1 minute rate. 您只运行程序5秒钟,因此您不会获得1分钟的费率。 Let it run for more than 1 minute you can see other rates with some value. 让它运行超过1分钟你可以看到其他价值有一些价值。

requests.mark();

The above line is used to mark the occurrence of an event. 上面的行用于标记事件的发生。 As you have invoked it once a metric event will be triggered. 正如您在触发指标事件时调用它一样。 As you are not calling this method any more in the program, so count remains 1. 由于您不再在程序中调用此方法,因此计数仍为1。

mean rate is (total count from start of application)/(total time in secs from start). 平均速率是(从应用开始的总计数)/(从开始的每秒的总时间)。 Note: here it is seconds. 注意:这是秒。 For every second reporter is printing. 每一秒都有记者打印。 As count=1, at 1st sec rate= (1 count)/(1sec). 当count = 1时,在第1秒速率=(1计数)/(1秒)。 at 2nd sec rate = (1 count)/(2 sec)=0.5 , at 3rd sec rate = (1 count)/(3 sec) = 0.33 在第2秒速率=(1计数)/(2秒)= 0.5,在第3秒速率=(1计数)/(3秒)= 0.33

1 min rate is (total count in last 1 min)/(60 secs). 1分钟的速率是(最后1分钟的总计数)/(60秒)。 1 min rates here it is zero because still 1 minute has not passed. 这里1分钟的费率为零,因为还有1分钟没有通过。 Same for the following big interval rates 以下大间隔率也是如此

5 min rate is (total count in last 5 min)/(5*60 secs) . 5分钟的速率是(最后5分钟的总计数)/(5 * 60秒)。 5 mins = 5*60 secs 5分钟= 5 * 60秒

You might expect the thread to sleep and thereby expecting a gap of 5 secs in the log. 您可能希望线程休眠,从而期望日志中有5秒的间隔。 But the reporter is running in a different thread. 但记者正在以不同的方式运作。 So here sleeping for 5 secs is of no value except make the program run to 5 seconds. 所以这里睡5秒是没有价值的,除了让程序运行到5秒。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM