天天看點

微服務監控元件Metrics

随着微服務的興起,如何對微服務進行監控,了解微服務目前的運作名額和健康狀态,已經成為必備的能力。Metrics作為微服務中的重要的元件,為微服務的監控提供了資料基礎。Metrics是一套标準度量庫, 用于提供對從作業系統, 虛拟機, 容器,到應用的全方位, 多元度, 實時, 準确的度量服務。

Metrics(原Alibaba Metrics)是阿裡巴巴集團内部廣泛使用的度量埋點基礎類庫,内部有Java和Node.js兩個版本,目前開源的是Java版本。内部版本誕生于2016年,經曆過近三年的發展,經曆三年雙十一考驗,已經成為阿裡巴巴集團内部微服務監控度量的事實标準,覆寫了從系統,JVM,中間件,應用各層的度量名額,并且從命名規則,資料格式,埋點方式,計算規則等友善形成了一套統一的規範。

全面的名額統計

metrics全面支援了從作業系統,JVM,中間件,再到應用層面的各級名額,并且對統一了各種命名名額,可以做到開箱即用,并支援通過配置随時開啟和關閉某類名額的收集。

目前支援的名額主要包括

作業系統

支援Linux/Windows/Mac,包含cpu, load, disk, nettraffic, tcp。

JVM

支援classload, gc次數和時間, 檔案句柄,young/old區占用,線程狀态, 堆外記憶體,編譯時間,部分名額支援自動內插補點計算。

中間件

  • Tomcat: 請求數,失敗次數,處理時間,發送接收位元組數,線程池活躍線程數等
  • Druid: sql執行次數,錯誤數,執行時間,影響行數等
  • Nginx: 接受,活躍連接配接數,讀,寫請求數,排隊數,請求qps,平均rt等

更詳細的名額可以參考

這裡

, 後續會陸續添加對Dubbo, Nacos, Sentinel, Fescar等的支援。

REST支援

metrics提供了基于JAX-RS的REST接口暴露,可以輕松查詢内部的各種名額,既可以獨立啟動HTTP Server提供服務(預設提供了一個基于Jersey+ sun Http server的簡單實作),也可以嵌入已有的HTTP Server進行暴露名額。具體的接口可以參考

如何使用

使用方式很簡單,和日志架構的Logger擷取方式一緻。

Counter hello = MetricManager.getCounter("test", MetricName.build("test.my.counter"));
hello.inc();      

支援的度量器包括:

  • Counter(計數器)
  • Meter(吞吐率度量器)
  • Histogram(直方分布度量器)
  • Gauge(瞬态值度量器)
  • Timer(吞吐率和響應時間分布度量器)
  • Compass(吞吐率, 響應時間分布, 成功率和錯誤碼度量器)
  • FastCompass(一種快速高效統計吞吐率,平均響應時間,成功率和錯誤碼的度量器)
  • ClusterHistogram(叢集分位數度量器)

具體各個度量器的使用方式可以參考

預設收集的名額,以及使用http接口進行檢視,可以參考

metrics-demo