Metrics-Java版的指標度量工具


介紹

Metrics是一個給JAVA服務的各項指標提供度量工具的包,在JAVA代碼中嵌入Metrics代碼,可以方便的對業務代碼的各個指標進行監控,同時,Metrics能夠很好的跟Ganlia、Graphite結合,方便的提供圖形化接口。基本使用方式直接將core包(目前穩定版本3.0.1)導入pom文件即可,配置如下:

<dependency>
    <groupId>com.codahale.metrics</groupId>
    <artifactId>metrics-core</artifactId>
    <version>3.0.1</version>
</dependency>

core包主要提供如下核心功能:

Metrics Registries類似一個metrics容器,維護一個Map,可以是一個服務一個實例。
支持五種metric類型:Gauges、Counters、Meters、Histograms和Timers。
可以將metrics值通過JMX、Console,CSV文件和SLF4J loggers發布出來。
五種Metrics類型:
  1. Gauges
    Gauges是一個最簡單的計量,一般用來統計瞬時狀態的數據信息,比如系統中處於pending狀態的job。
  2. Counter
    Counter是Gauge的一個特例,維護一個計數器,可以通過inc()和dec()方法對計數器做修改。使用步驟與Gauge基本類似,在MetricRegistry中提供了靜態方法可以直接實例化一個Counter。
  3. Meters
    Meters用來度量某個時間段的平均處理次數(request per second),每1、5、15分鍾的TPS。比如一個service的請求數,通過metrics.meter()實例化一個Meter之后,然后通過meter.mark()方法就能將本次請求記錄下來。統計結果有總的請求數,平均每秒的請求數,以及最近的1、5、15分鍾的平均TPS。
  4. Histograms
    Histograms主要使用來統計數據的分布情況,最大值、最小值、平均值、中位數,百分比(75%、90%、95%、98%、99%和99.9%)。例如,需要統計某個頁面的請求響應時間分布情況,可以使用該種類型的Metrics進行統計。
  5. Timers
    Timers主要是用來統計某一塊代碼段的執行時間以及其分布情況,具體是基於Histograms和Meters來實現的。

Health Checks

Metrics提供了一個獨立的模塊:Health Checks,用於對Application、其子模塊或者關聯模塊的運行是否正常做檢測。該模塊是獨立metrics-core模塊的,使用時則導入metrics-healthchecks包。

<dependency>                                   
 	<groupId>com.codahale.metrics</groupId>
       	<artifactId>metrics-healthchecks</artifactId>
 	<version>3.0.1</version>
</dependency>

使用起來和與上述幾種類型的Metrics有點類似,但是需要重新實例化一個Metrics容器HealthCheckRegistry,待檢測模塊繼承抽象類HealthCheck並實現check()方法即可,然后將該模塊注冊到HealthCheckRegistry中,判斷的時候通過isHealthy()接口即可。

其他支持

metrics提供了對Ehcache、Apache HttpClient、JDBI、Jersey、Jetty、Log4J、Logback、JVM等的集成,可以方便地將Metrics輸出到Ganglia、Graphite中,供用戶圖形化展示。

參考資料

http://metrics.codahale.com/

https://github.com/dropwizard/metrics

http://blog.csdn.net/scutshuxue/article/details/8350135

http://blog.synyx.de/2013/09/yammer-metrics-made-easy-part-i/

http://blog.synyx.de/2013/09/yammer-metrics-made-easy-part-ii/

http://wiki.apache.org/hadoop/HADOOP-6728-MetricsV2


免責聲明!

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



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