1 回答

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超4個(gè)贊
默認(rèn)處理程序promhttp.Handler
用于報(bào)告指標(biāo)。(從所有注冊(cè)的處理程序中收集并根據(jù)要求報(bào)告)。
不幸的是,它不是一個(gè)通用的 http 中間件,可以為您提供開箱即用的任何指標(biāo)。
我已經(jīng)看到許多 go 的 web 框架都有某種社區(qū) prometheus 中間件 (?gin's?),它們提供開箱即用的指標(biāo)(延遲、響應(yīng)代碼、請(qǐng)求計(jì)數(shù)等)。
go?prometheus 客戶端庫(kù)包含如何向應(yīng)用程序添加指標(biāo)的示例。
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)
? ? })
}
至于你的第二個(gè)問題很多 :) Google 提倡監(jiān)控 4 個(gè)黃金信號(hào):
這些都是
流量 - 吞吐量 - 計(jì)數(shù)/時(shí)間
延遲 - 分布/直方圖
錯(cuò)誤 - HTTP 響應(yīng)代碼/顯式錯(cuò)誤計(jì)數(shù)
飽和 - 資源隊(duì)列,即如果有一個(gè) goroutine 池,則在給定時(shí)間有多少 goroutines 處于活動(dòng)狀態(tài)
在我的經(jīng)驗(yàn)中,了解應(yīng)用程序和數(shù)據(jù)庫(kù)之間的所有交互(即應(yīng)用于數(shù)據(jù)庫(kù)的 4 個(gè)黃金信號(hào))也很有幫助:
從應(yīng)用程序調(diào)用數(shù)據(jù)庫(kù)的次數(shù)
通話延遲
為確定可用性(成功/總計(jì))而進(jìn)行的調(diào)用的結(jié)果(錯(cuò)誤/成功)
數(shù)據(jù)庫(kù)驅(qū)動(dòng)程序可用的飽和度?
- 1 回答
- 0 關(guān)注
- 120 瀏覽
添加回答
舉報(bào)