[英]Java Metrics Sample code
我是指標的新手,我不明白為什么我得到這個輸出請有人解釋。 提前致謝。
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) {}
}
}
輸出:
12/18/15 12:01:15 PM ======================================= ====================
- 米 - ----------------------------------------------- -----------------------請求計數= 1平均速率= 1.00事件/秒1分鍾速率= 0.00事件/秒5分鍾速率= 0.00事件/秒15分鍾速率= 0.00事件/秒
12/18/15 12:01:16 PM ======================================= ====================
- 米 - ----------------------------------------------- -----------------------請求計數= 1平均速率= 0.50事件/秒1分鍾速率= 0.00事件/秒5分鍾速率= 0.00事件/秒15分鍾速率= 0.00事件/秒
12/18/15 12:01:17 PM ================================================== ====================
- 米 - ----------------------------------------------- -----------------------請求數= 1平均速率= 0.33事件/秒1分鍾速率= 0.00事件/秒5分鍾速率= 0.00事件/秒15分鍾速率= 0.00事件/秒
12/18/15 12:01:18 PM ======================================= ====================
- 米 - ----------------------------------------------- -----------------------請求計數= 1平均速率= 0.25事件/秒1分鍾速率= 0.00事件/秒5分鍾速率= 0.00事件/秒15分鍾速率= 0.00事件/秒
12/18/15 12:01:19 PM ================================================== ====================
- 米 - ----------------------------------------------- -----------------------請求數= 1平均速率= 0.20事件/秒1分鍾速率= 0.00事件/秒5分鍾速率= 0.00事件/秒15分鍾速率= 0.00事件/秒
創建注冊表后,您以1秒的間隔啟動了報告者。 因此,對於每一秒,您的控制台記者將輸出到控制台。
您已選擇計量表類型指標,可以計算(此事件發生的次數)和平均速率(平均速率)。 其他費率將為零,因為該測量的單個時間單位尚未結束。 例如。 您只運行程序5秒鍾,因此您不會獲得1分鍾的費率。 讓它運行超過1分鍾你可以看到其他價值有一些價值。
requests.mark();
上面的行用於標記事件的發生。 正如您在觸發指標事件時調用它一樣。 由於您不再在程序中調用此方法,因此計數仍為1。
平均速率是(從應用開始的總計數)/(從開始的每秒的總時間)。 注意:這是秒。 每一秒都有記者打印。 當count = 1時,在第1秒速率=(1計數)/(1秒)。 在第2秒速率=(1計數)/(2秒)= 0.5,在第3秒速率=(1計數)/(3秒)= 0.33
1分鍾的速率是(最后1分鍾的總計數)/(60秒)。 這里1分鍾的費率為零,因為還有1分鍾沒有通過。 以下大間隔率也是如此
5分鍾的速率是(最后5分鍾的總計數)/(5 * 60秒)。 5分鍾= 5 * 60秒
您可能希望線程休眠,從而期望日志中有5秒的間隔。 但記者正在以不同的方式運作。 所以這里睡5秒是沒有價值的,除了讓程序運行到5秒。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.