Java Metrics工具介紹


簡介

Metric是一個第三方包,用來幫助我們對應用程序的性能進行度量。曾有友商基於這個包編寫的程序還申請了專利,總之這是一個使用方便的組件。我們日常進行應用程序性能度量時,最常用的方法是打日志記錄每個交易的一些耗時數據,有了這些原始數據,自己再進行統計分析。通過使用Metrics這個包,我們可以很方便的定義一些度量值,抓取一些關鍵時點和變量的信息,還能按照自定義的周期進行總體的統計,來分析應用的性能。Metrics還能夠將這些統計信息輸出到Console、日志文件、JMX,甚至還支持以微服務的方式向外暴露數據接口,從而方便我們將這些數據接入到Grafana或自己的統計分析工具中。

快速入門

Maven配置

<dependency>
    <groupId>io.dropwizard.metrics</groupId>
    <artifactId>metrics-core</artifactId>
    <version>4.0.5</version>
</dependency>

本文發表時,最新版本是4.1.0

MetricRegistry

使用MetricRegistry注冊一個或多個metrics。如果需要多個報告,則需要聲明多個MetricRegistry對象。

有兩種注冊方式

MetricRegistry metricRegistry = new MetricRegistry();

Meter meter1 = new Meter();
metricRegistry.register("meter1", meter1);
 
Meter meter2 = metricRegistry.meter("meter2");

更為詳細的代碼示例可以參考我的Git

Gauge

Gauge能做的就是返回一個變量的瞬時值,在此基礎上還提供了RatioGauge\CachedGauge\DerivativeGauge\JmxAttributeGauge的使用。

Meter

Meter用來度量事件並發的數量和速度。

Counter

Counter度量類型是一種特殊的Gauge度量,因為其持有的值就是一個AtomicLong,可以遞增也可以遞減。

Histgram

Histogram度量類型用於測量一個數據流各值的統計分布。其除了能夠測量最大值、最小值、平均值外,還可以測量中位數、75、90、95、98、99和99.9%等。

Histogram支持四種數據采樣方式 ExponentiallyDecayingReservior, UniformReservoir, SlidingTimeWindowReservior, SlidingWindowReservior

Timer

Timer度量類型包含了Meter和Histogram的統計,即比率和統計信息的綜合。

Reporter

使用Reporter可以輸出測量結果,支持ConsoleReporter, CsvReporter, Slf4Reporter, JmxReporter等等。

更多用法

通過metrics-healthchecksmetrics-servlets模塊,還能支持健康檢查和微服務的數據輸出,有興趣的朋友可以繼續探索。

參考資料

  1. 性能分析之Java Metrics度量包
  2. Java Code Examples for com.yammer.metrics.core.Gauge
  3. Metrics Getting Started
  4. [Metrics掃盲]---(1)如何在java應用中使用Metrics
  5. Intro to Dropwizard Metrics


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM