日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Go go-metrics

發布時間:2024/9/30 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Go go-metrics 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

go-metrics介紹

go-metrics — 對Go應用的某個服務做監控、做統計,應用級監控和測量。

源碼 : https://github.com/rcrowley/go-metrics

文檔:https://pkg.go.dev/github.com/rcrowley/go-metrics

Metrics提供5種基本的度量類型:Gauges, Counters, Histograms, Meters和 Timers。

Gauge

Gauge是最簡單的度量類型,只有一個簡單的返回值,
他用來記錄一些對象或者事物的瞬時值。
類似于程序里的常量,是不變的值。

package mainimport ("github.com/rcrowley/go-metrics" ) func main(){g := metrics.NewGauge()metrics.Register("bar", g)g.Update(1)print(g.Value())//1g.Update(5)print(g.Value())//5 } 

Counter

Counter是一個簡單的計數器,可以增加和減少。
可以通過inc()和dec()方法對計數器做修改。

package mainimport ("github.com/rcrowley/go-metrics" ) func main(){c := metrics.NewCounter()metrics.Register("foo", c)c.Inc(45)c.Dec(3)print(c.Count())/42 }

Meter

Meters用來度量某個時間段的平均處理次數(request per second),每1、5、15分鐘的TPS。比如一個service的請求數,通過metrics.meter()實例化一個Meter之后,然后通過meter.mark()方法就能將本次請求記錄下來。統計結果有總的請求數,平均每秒的請求數,以及最近的1、5、15分鐘的平均TPS。

Meters工具會幫助我們統計系統中某一個事件的速率。比如每秒請求數(TPS),每秒查詢數(QPS)等等。這個指標能反應系統當前的處理能力,幫助我們判斷資源是否已經不足。Meters本身是一個自增計數器。

package mainimport ("time""os""github.com/rcrowley/go-metrics""log" )func main(){m := metrics.NewMeter()metrics.Register("quux", m)m.Mark(1)go metrics.Log(metrics.DefaultRegistry,1 * time.Second,log.New(os.Stdout, "metrics: ", log.Lmicroseconds))var j int64j = 1for true {time.Sleep(time.Second * 1)j++m.Mark(j)} }

Histrogram

Histrogram是用來度量流數據中Value的分布情況,Histrogram可以計算最大/小值、平均值,方差,分位數(如中位數,或者95th分位數),如75%,90%,98%,99%的數據在哪個范圍內。

Timer

Timer是Histogram跟Meter的一個組合,比如要統計當前請求的速率和處理時間。

總結

以上是生活随笔為你收集整理的Go go-metrics的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。