1 回答

TA貢獻1796條經驗 獲得超4個贊
默認處理程序promhttp.Handler
用于報告指標。(從所有注冊的處理程序中收集并根據要求報告)。
不幸的是,它不是一個通用的 http 中間件,可以為您提供開箱即用的任何指標。
我已經看到許多 go 的 web 框架都有某種社區 prometheus 中間件 (?gin's?),它們提供開箱即用的指標(延遲、響應代碼、請求計數等)。
go?prometheus 客戶端庫包含如何向應用程序添加指標的示例。
var (
? ? httpRequests = prometheus.NewCounter(
? ? ? ? prometheus.CounterOpts{
? ? ? ? ? ? Name: "http_requests_total",
? ? ? ? ? ? Help: "Number of http requests.",
? ? ? ? },
? ? )
)
func init() {
? ? // Metrics have to be registered to be exposed:
? ? prometheus.MustRegister(httpRequests)
}
func myHandler(next http.Handler) http.Handler {
? ? return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
? ? ? ? httpRequests.Inc()
? ? ? ? fmt.Fprintf(w, "hello, you've hit %s\n", r.URL.Path)
? ? ? ? next.ServeHTTP(w, r)
? ? })
}
至于你的第二個問題很多 :) Google 提倡監控 4 個黃金信號:
這些都是
流量 - 吞吐量 - 計數/時間
延遲 - 分布/直方圖
錯誤 - HTTP 響應代碼/顯式錯誤計數
飽和 - 資源隊列,即如果有一個 goroutine 池,則在給定時間有多少 goroutines 處于活動狀態
在我的經驗中,了解應用程序和數據庫之間的所有交互(即應用于數據庫的 4 個黃金信號)也很有幫助:
從應用程序調用數據庫的次數
通話延遲
為確定可用性(成功/總計)而進行的調用的結果(錯誤/成功)
數據庫驅動程序可用的飽和度?
- 1 回答
- 0 關注
- 103 瀏覽
添加回答
舉報