Metrics實時監(jiān)控類庫

系統(tǒng)開發(fā)到一定的階段,線上的機器越來越多,就需要一些監(jiān)控了,除了服務(wù)器的監(jiān)控,業(yè)務(wù)方面也需要一些監(jiān)控服務(wù)。[Metrics](http://metrics.dropwizard.io/3.1.0/getting-started/)作為一款監(jiān)控指標的度量類庫,提供了許多工具幫助開發(fā)者來完成自定義的監(jiān)控工作。

Metrics的基本工具

Metrics提供了五個基本的度量類型:

  1. Gauges(度量)
  2. Counters(計數(shù)器)
  3. Histograms(直方圖數(shù)據(jù))
  4. Meters(TPS計算器)
  5. Timers(計時器)

MetricsMetricRegistry是中心容器,它是程序中所有度量的容器,所有新的度量工具都要注冊到一個MetricRegistry實例中才可以使用,盡量在一個應(yīng)用中保持讓這個MetricRegistry實例保持單例。

Meters TPS計算器

TPS計算器這個名稱并不準確,Meters工具會幫助我們統(tǒng)計系統(tǒng)中某一個事件的速率。比如每秒請求數(shù)(TPS),每秒查詢數(shù)(QPS)等等。這個指標能反應(yīng)系統(tǒng)當(dāng)前的處理能力,幫助我們判斷資源是否已經(jīng)不足。Meters本身是一個自增計數(shù)器。

通過MetricRegistry可以獲得一個Meter

|

<pre style="margin: 0px; tab-size: 4; white-space: pre-wrap;">public Meter requestMeter(MetricRegistry metrics) {
return metrics.meter("request");
}</pre>

|

在請求中調(diào)用mark()方法,來增加計數(shù),我們可以在不同的請求中添加不同的Meter,針對自己的系統(tǒng)完成定制的監(jiān)控需求。

|

<pre style="margin: 0px; tab-size: 4; white-space: pre-wrap;">@RequestMapping("/hello")
@ResponseBody
public String helloWorld() {
requestMeter.mark();
return "Hello World";
}</pre>

|

Counter 計數(shù)器

Counter的本質(zhì)就是一個AtomicLong實例,可以增加或者減少值,可以用它來統(tǒng)計隊列中Job的總數(shù)。

通過MetricRegistry也可以獲得一個Counter實例。

|

<pre style="margin: 0px; tab-size: 4; white-space: pre-wrap;">public Counter pendingJobs(MetricRegistry metrics) {
return metrics.counter("requestCount");
}</pre>

|

在需要統(tǒng)計數(shù)據(jù)的位置調(diào)用inc()dec()方法。

|

<pre style="margin: 0px; tab-size: 4; white-space: pre-wrap;">// 增加計數(shù)
pendingJobs.inc();
// 減去計數(shù)
pendingJobs.dec();</pre>

|

Reporter 報表

Metrics通過報表,將采集的數(shù)據(jù)展現(xiàn)到不同的位置,這里比如我們注冊一個ConsoleReporterMetricRegistry中,那么console中就會打印出對應(yīng)的信息。

|

<pre style="margin: 0px; tab-size: 4; white-space: pre-wrap;">public ConsoleReporter consoleReporter(MetricRegistry metrics) {
return ConsoleReporter.forRegistry(metrics)
.convertRatesTo(TimeUnit.SECONDS)
.convertDurationsTo(TimeUnit.MILLISECONDS)
.build();
}

</pre>

|

除此之外Metrics還支持JMX、HTTP、Slf4j等等,可以訪問 http://metrics.dropwizard.io/3.1.0/manual/core/#reporters 來查看Metrics提供的報表,如果還是不能滿足自己的業(yè)務(wù),也可以自己繼承Metrics提供的ScheduledReporter類完成自定義的報表類。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容