我是度量監控的新手。
如果我們想記錄請求的持續時間,我認為我們應該使用gauge,但實際上,有人會使用histogram.
例如,在 中grpc-ecosystem/go-grpc-prometheus,他們更喜歡使用histogram來記錄持續時間。是否有公認的使用度量型別的最佳實踐?或者這只是他們自己的喜好。
// ServerMetrics represents a collection of metrics to be registered on a
// Prometheus metrics registry for a gRPC server.
type ServerMetrics struct {
serverStartedCounter *prom.CounterVec
serverHandledCounter *prom.CounterVec
serverStreamMsgReceived *prom.CounterVec
serverStreamMsgSent *prom.CounterVec
serverHandledHistogramEnabled bool
serverHandledHistogramOpts prom.HistogramOpts
serverHandledHistogram *prom.HistogramVec
}
謝謝~
uj5u.com熱心網友回復:
我對此并不陌生,但讓我嘗試回答您的問題。因此,我的回答持保留態度,或者也許是有使用指標來觀察他們的系統的經驗的人會加入進來。
如https://prometheus.io/docs/concepts/metric_types/中所述
儀表是一種度量,表示可以任意上下的單個數值。因此,如果您的目標是顯示當前值(請求的持續時間),您可以使用儀表。但我認為使用指標的目的是在您的系統中發現問題,或者在某些值不在預定義范圍內或獲得系統性能值(如 Apdex 分數)時生成警報。
來自https://prometheus.io/docs/concepts/metric_types/#histogram
使用 histogram_quantile() 函式從直方圖甚至直方圖的聚合中計算分位數。直方圖也適用于計算 Apdex 分數。
來自https://en.wikipedia.org/wiki/Apdex
Apdex(應用程式性能指數)是一個由公司聯盟開發的開放標準,用于衡量軟體應用程式在計算中的性能。其目的是通過指定一種統一的方式來分析和報告測量的性能滿足用戶期望的程度,從而將測量結果轉化為關于用戶滿意度的洞察力。
閱讀分位數以及直方圖和摘要中的計算https://prometheus.io/docs/practices/histograms/#quantiles
兩條經驗法則:
- 如果需要聚合,請選擇直方圖。
- 否則,如果您了解將要觀察的值的范圍和分布,請選擇直方圖。如果您需要準確的分位數,請選擇摘要,無論值的范圍和分布是什么。
或者像 Adam Woodbeck 在他的《使用 Go 進行網路編程》一書中所說:
一般建議是在您不知道預期值的范圍時使用摘要,但我建議您盡可能使用直方圖,以便您可以在指標服務器上聚合直方圖。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/457412.html
