30.Endpoints的各個指標(biāo)

度量指標(biāo)(Metrics)

  • Spring Boot執(zhí)行器包括一個支持'gauge'和'counter'級別的度量指標(biāo)服務(wù)搏熄。'gauge'記錄一個單一值;'counter'記錄一個增量(增加或減少)生巡。同時,Spring Boot提供一個PublicMetrics接口见妒,你可以實現(xiàn)它孤荣,從而暴露以上兩種機(jī)制不能記錄的指標(biāo)。

  • 所有HTTP請求的指標(biāo)都被自動記錄须揣,所以如果點擊 metrics 端點盐股,你可能會看到類似以下的響應(yīng):

{
"counter.status.200.root": 20,
"counter.status.200.metrics": 3,
"counter.status.200.star-star": 5,
"counter.status.401.root": 4,
"gauge.response.star-star": 6,
"gauge.response.root": 2,
"gauge.response.metrics": 3,
"classes": 5808,
"classes.loaded": 5808,
"classes.unloaded": 0,
"heap": 3728384,
"heap.committed": 986624,
"heap.init": 262144,
"heap.used": 52765,
"mem": 986624,
"mem.free": 933858,
"processors": 8,
"threads": 15,
"threads.daemon": 11,
"threads.peak": 15,
"uptime": 494836,
"instance.uptime": 489782,
"datasource.primary.active": 5,
"datasource.primary.usage": 0.25
}
  • 此處我們可以看到基本的 memory , heap 耻卡, class loading 疯汁, processor 和 thread pool 信息,連同一些HTTP指標(biāo)卵酪。在該實例中幌蚊, root ('/')谤碳, /metrics URLs分別返回20次,3次 HTTP 200 響應(yīng)溢豆。同時可以看到 root URL返回了4次 HTTP 401 (unauthorized)響應(yīng)蜒简。雙asterix(star-star)來自于被Spring MVC /** 匹配到的一個請求(通常為一個靜態(tài)資源)。

  • gauge 級別展示了一個請求的最后響應(yīng)時間沫换。所以臭蚁, root 的最后請求被響應(yīng)耗時2毫秒, /metrics 耗時3毫秒讯赏。

系統(tǒng)指標(biāo)

  • Spring Boot暴露以下系統(tǒng)指標(biāo):
    系統(tǒng)內(nèi)存總量(mem)垮兑,單位:Kb
    空閑內(nèi)存數(shù)量(mem.free),單位:Kb
    處理器數(shù)量(processors)
    系統(tǒng)正常運行時間(uptime)漱挎,單位:毫秒
    應(yīng)用上下文(就是一個應(yīng)用實例)正常運行時間(instance.uptime)系枪,單位:毫秒
    系統(tǒng)平均負(fù)載(systemload.average)
    堆信息(heap,heap.committed磕谅,heap.init私爷,heap.used),單位:Kb
    線程信息(threads膊夹,thread.peak衬浑,thead.daemon)
    類加載信息(classes,classes.loaded放刨,classes.unloaded)
    垃圾收集信息(gc.xxx.count, gc.xxx.time)

數(shù)據(jù)源指標(biāo)

  • Spring Boot會為你應(yīng)用中定義的支持的DataSource暴露以下指標(biāo):
    最大連接數(shù)(datasource.xxx.max)
    最小連接數(shù)(datasource.xxx.min)
    活動連接數(shù)(datasource.xxx.active)
    連接池的使用情況(datasource.xxx.usage)

  • 所有的數(shù)據(jù)源指標(biāo)共用 datasoure. 前綴工秩。該前綴對每個數(shù)據(jù)源都非常合適:
    如果是主數(shù)據(jù)源(唯一可用的數(shù)據(jù)源或存在的數(shù)據(jù)源中被@Primary標(biāo)記的)前綴為datasource.primary
    如果數(shù)據(jù)源bean名稱以dataSource結(jié)尾,那前綴就是bean的名稱去掉dataSource的部分(例如进统,batchDataSource的前綴是datasource.batch)
    其他情況使用bean的名稱作為前綴

  • 通過注冊一個自定義版本的DataSourcePublicMetrics bean助币,你可以覆蓋部分或全部的默認(rèn)行為。默認(rèn)情況下螟碎,Spring Boot提供支持所有數(shù)據(jù)源的元數(shù)據(jù)眉菱;如果你喜歡的數(shù)據(jù)源恰好不被支持,你可以添加另外的DataSourcePoolMetadataProvider beans掉分。具體參考DataSourcePoolMetadataProvidersConfiguration俭缓。

Tomcat session指標(biāo)

  • 如果你使用Tomcat作為內(nèi)嵌的servlet容器,session指標(biāo)將被自動暴露出去酥郭。 httpsessions.active 和 httpsessions.max 提供了活動的和最大的session數(shù)量尔崔。

記錄自己的指標(biāo)

  • 想要記錄你自己的指標(biāo),只需將CounterService或GaugeService注入到你的bean中褥民。CounterService暴露increment,decrement和reset方法洗搂;GaugeService提供一個submit方法消返。

  • 下面是一個簡單的示例载弄,它記錄了方法調(diào)用的次數(shù):

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.actuate.metrics.CounterService;
import org.springframework.stereotype.Service;
@Service
public class MyService {
    private final CounterService counterService;
    @Autowired
    public MyService(CounterService counterService) {
        this.counterService = counterService;
    }
    public void exampleMethod() {
        this.counterService.increment("services.system.myservice.invoked");
    }
}

注:你可以將任何的字符串用作指標(biāo)的名稱,但最好遵循所選存儲或圖技術(shù)的指南撵颊。Matt Aimonetti’s Blog中有一些好的關(guān)于圖(Graphite)的指南宇攻。

添加你自己的公共指標(biāo)

  • 想要添加額外的,每次指標(biāo)端點被調(diào)用時都會重新計算的度量指標(biāo)倡勇,只需簡單的注冊其他的PublicMetrics實現(xiàn)bean(s)逞刷。默認(rèn)情況下,端點會聚合所有這樣的beans妻熊,通過定義自己的MetricsEndpoint可以輕易改變這種情況夸浅。

指標(biāo)倉庫

  • 通過綁定一個MetricRepository來實現(xiàn)指標(biāo)服務(wù)。 MetricRepository 負(fù)責(zé)存儲和追溯指標(biāo)信息扔役。Spring Boot提供一個 InMemoryMetricRepository 和一個 RedisMetricRepository (默認(rèn)使用in-memory倉庫)帆喇,不過你可以編寫自己的 MetricRepository 。 MetricRepository 接口實際是 MetricReader 接口和 MetricWriter 接口的上層組合亿胸。具體參考Javadoc

  • 沒有什么能阻止你直接將 MetricRepository 的數(shù)據(jù)導(dǎo)入應(yīng)用中的后端存儲坯钦,但我們建議你使用默認(rèn)的 InMemoryMetricRepository (如果擔(dān)心堆使用情況,你可以使用自定義的Map實例)侈玄,然后通過一個scheduled export job填充后端倉庫(意思是先將數(shù)據(jù)保存到內(nèi)存中婉刀,然后通過異步j(luò)ob將數(shù)據(jù)持久化到數(shù)據(jù)庫,可以提高系統(tǒng)性能)序仙。通過這種方
    式突颊,你可以將指標(biāo)數(shù)據(jù)緩存到內(nèi)存中,然后通過低頻率或批量導(dǎo)出來減少網(wǎng)絡(luò)擁堵诱桂。Spring Boot提供一個 Exporter 接口及一些幫你開始的基本實現(xiàn)洋丐。

Dropwizard指標(biāo)

  • Dropwizard ‘Metrics’庫的用戶會發(fā)現(xiàn)Spring Boot指標(biāo)被發(fā)布到了 com.codahale.metrics.MetricRegistry 。當(dāng)你聲明對 io.dropwizard.metrics:metrics-core 庫的依賴時會創(chuàng)建一個默認(rèn)的 com.codahale.metrics.MetricRegistry Spring bean挥等;如
    果需要自定義友绝,你可以注冊自己的@Bean實例。來自于 MetricRegistry 的指標(biāo)也是自動通過 /metrics 端點暴露的肝劲。

  • 用戶可以通過使用合適類型的指標(biāo)名稱作為前綴來創(chuàng)建Dropwizard指標(biāo)(比如迁客, histogram.* , meter.* )。

消息渠道集成

  • 如果你的classpath下存在'Spring Messaging' jar辞槐,一個名為 metricsChannel 的 MessageChannel 將被自動創(chuàng)建(除非已經(jīng)存在一個)掷漱。此外,所有的指標(biāo)更新事件作為'messages'發(fā)布到該渠道上榄檬。訂閱該渠道的客戶端可以進(jìn)行額外的分析或行動卜范。
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市鹿榜,隨后出現(xiàn)的幾起案子海雪,更是在濱河造成了極大的恐慌锦爵,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件奥裸,死亡現(xiàn)場離奇詭異险掀,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)湾宙,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門樟氢,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人侠鳄,你說我怎么就攤上這事埠啃。” “怎么了畦攘?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵霸妹,是天一觀的道長。 經(jīng)常有香客問我知押,道長叹螟,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任台盯,我火速辦了婚禮罢绽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘静盅。我一直安慰自己良价,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布蒿叠。 她就那樣靜靜地躺著明垢,像睡著了一般。 火紅的嫁衣襯著肌膚如雪市咽。 梳的紋絲不亂的頭發(fā)上痊银,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天,我揣著相機(jī)與錄音施绎,去河邊找鬼溯革。 笑死,一個胖子當(dāng)著我的面吹牛谷醉,可吹牛的內(nèi)容都是我干的致稀。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼俱尼,長吁一口氣:“原來是場噩夢啊……” “哼抖单!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤矛绘,失蹤者是張志新(化名)和其女友劉穎躺酒,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體蔑歌,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年揽碘,在試婚紗的時候發(fā)現(xiàn)自己被綠了次屠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡雳刺,死狀恐怖劫灶,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情掖桦,我是刑警寧澤本昏,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站枪汪,受9級特大地震影響涌穆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜雀久,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一宿稀、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧赖捌,春花似錦祝沸、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至卤唉,卻和暖如春涩惑,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背搬味。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工境氢, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人碰纬。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓萍聊,卻偏偏與公主長得像,于是被迫代替她去往敵國和親悦析。 傳聞我的和親對象是個殘疾皇子寿桨,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容