欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Go語言metrics應(yīng)用監(jiān)控指標基本使用說明

 更新時間:2022年02月22日 10:27:29   作者:tianlongtc  
這篇文章主要為大家介紹了Go語言metrics應(yīng)用監(jiān)控指標的基本使用說明,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步

metrics 是什么?

當我們需要為某個系統(tǒng)某個服務(wù)做監(jiān)控、做統(tǒng)計,就需要用到Metrics

五種 Metrics 類型

  • Gauges :最簡單的度量指標,只有一個簡單的返回值,或者叫瞬時狀態(tài)
  • Counters:Counter 就是計數(shù)器,Counter 只是用 Gauge 封裝了 AtomicLong
  • Meters:Meter度量一系列事件發(fā)生的速率(rate),例如TPS。Meters會統(tǒng)計最近1分鐘,5分鐘,15分鐘,還有全部時間的速率。
  • Histograms:Histogram統(tǒng)計數(shù)據(jù)的分布情況。比如最小值,最大值,中間值,還有中位數(shù),75百分位, 90百分位, 95百分位, 98百分位, 99百分位, 和 99.9百分位的值(percentiles)。
  • Timer其實是 Histogram 和 Meter 的結(jié)合, histogram 某部分代碼/調(diào)用的耗時, meter統(tǒng)計TPS。

接下來我們寫代碼實際使用一下這些功能 就從最簡單的Gauges 開始吧

package main
import (
	"github.com/rcrowley/go-metrics"
	"time"
	"os"
	"log"
)
func main(){
	g := metrics.NewGauge()
	metrics.Register("bar", g)
	g.Update(1)
	go metrics.Log(metrics.DefaultRegistry,
		1 * time.Second,
		log.New(os.Stdout, "metrics: ", log.Lmicroseconds))
	var j int64
	j = 1
	for true {
		time.Sleep(time.Second * 1)
		g.Update(j)
		j++
	}
}

此時我們運行程序 可以看到如下輸出

在程序中我們在metrics.Log 中設(shè)置了 metrics 的輸出頻率為1s 同時指定了數(shù)據(jù)輸出的目的為 log.New出來的Logger 設(shè)置為打印在標準輸出

接下counters 與gauges 類似

只不過在操作上 gauges 是 update 而 counter 是 inc 做加法 增加參數(shù)市值 dec 做減法

	g := metrics.NewGauge()
	metrics.Register("bar", g)
	g.Update(1)
	c := metrics.NewCounter()
	metrics.Register("foo", c)
	c.Inc(45)
	c.Dec(3)

以上代碼可以看到區(qū)別 在New 的時候 默認的時候數(shù)值都為0

package main
import (
	"github.com/rcrowley/go-metrics"
	"time"
	"os"
	"log"
)
func main(){
	s := metrics.NewExpDecaySample(1024, 0.015) // or metrics.NewUniformSample(1028)
	h := metrics.NewHistogram(s)
	metrics.Register("baz", h)
	h.Update(1)
	go metrics.Log(metrics.DefaultRegistry,
		1 * time.Second,
		log.New(os.Stdout, "metrics: ", log.Lmicroseconds))
	var j int64
	j = 1
	for true {
		time.Sleep(time.Second * 1)
		j++
		h.Update(j)
	}
}

metrics.NewExpDecaySample這函數(shù)的兩個參數(shù)的含義: 第一是內(nèi)部存儲數(shù)據(jù)的個數(shù)

第二個是指數(shù)后乘以的數(shù)值 具體位置

下面來測試一下meters

package main
import (
	"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 int64
	j = 1
	for true {
		time.Sleep(time.Second * 1)
		j++
		m.Mark(j)
	}
}

測試結(jié)果

輸出到influxdb

influxdb的安裝和基本使用這里不做介紹

使用下面工作

vrischmann/go-metrics-influxdb

package main
import (
	"github.com/rcrowley/go-metrics"
	"time"
	"github.com/vrischmann/go-metrics-influxdb"
)
func main(){
	m := metrics.NewMeter()
	metrics.Register("quux", m)
	m.Mark(1)
	go influxdb.InfluxDB(metrics.DefaultRegistry,
		time.Second * 5,
		"http://192.168.150.74:8086",
		"mydb",
		"",
		"")
	var j int64
	j = 1
	for true {
		time.Sleep(time.Second*1)
		m.Mark(j)
		j += 1
	}
}

看以上的代碼 其他地方都不用改動 只要改下輸出的地方就可以了

在influx中使用設(shè)置的database 表名則自用生成 使用 是 metrics中register 設(shè)置的名字加上類型 在這里例子中 表名為quux.meter

就可以在influxdb 里面看到如下的一些數(shù)據(jù):

以上就是Go語言metrics應(yīng)用監(jiān)控指標基本使用說明的詳細內(nèi)容,更多關(guān)于go語言metrics使用的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 一文帶你了解Go語言如何解析JSON

    一文帶你了解Go語言如何解析JSON

    本文將說明如何利用?Go?語言將?JSON?解析為結(jié)構(gòu)體和數(shù)組,如果解析?JSON?的嵌入對象,如何將?JSON?的自定義屬性名稱映射到結(jié)構(gòu)體,如何解析非結(jié)構(gòu)化的?JSON?字符串
    2023-01-01
  • go使用snmp庫查詢mib數(shù)據(jù)案例代碼

    go使用snmp庫查詢mib數(shù)據(jù)案例代碼

    go語言使用snmp庫中的 k-sone/snmpgo 實現(xiàn)相關(guān)mib查詢,本文通過實例代碼給大家介紹了go使用snmp庫查詢mib數(shù)據(jù),感興趣的朋友跟隨小編一起看看吧
    2023-10-10
  • Go實現(xiàn)set類型的示例代碼

    Go實現(xiàn)set類型的示例代碼

    本文主要介紹了Go實現(xiàn)set類型的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01
  • Go語言基礎(chǔ)單元測試與性能測試示例詳解

    Go語言基礎(chǔ)單元測試與性能測試示例詳解

    這篇文章主要為大家介紹了Go語言基礎(chǔ)單元測試與性能測試示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助祝大家多多進步
    2021-11-11
  • Golang標準庫和外部庫的性能比較

    Golang標準庫和外部庫的性能比較

    這篇文章主要介紹Golang標準庫和外部庫的性能比較,下面文章講圍繞這兩點展開內(nèi)容,感興趣的小伙伴可以參考一下
    2021-10-10
  • Go 結(jié)構(gòu)體、數(shù)組、字典和 json 字符串的相互轉(zhuǎn)換方法

    Go 結(jié)構(gòu)體、數(shù)組、字典和 json 字符串的相互轉(zhuǎn)換方法

    今天小編就為大家分享一篇Go 結(jié)構(gòu)體、數(shù)組、字典和 json 字符串的相互轉(zhuǎn)換方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Go語言的GOPATH與工作目錄詳解

    Go語言的GOPATH與工作目錄詳解

    這篇文章主要介紹了Go語言的GOPATH與工作目錄詳解,本文詳細講解了GOPATH設(shè)置、應(yīng)用目錄結(jié)構(gòu)、編譯應(yīng)用等內(nèi)容,需要的朋友可以參考下
    2014-10-10
  • golang查看CPU使用率與內(nèi)存的方法詳解

    golang查看CPU使用率與內(nèi)存的方法詳解

    這篇文章主要給大家介紹了golang查看CPU使用率與內(nèi)存的方法,以及拓展介紹源碼里//go:指令,文中有詳細的代碼示例以及圖文介紹,需要的朋友可以參考下
    2023-10-10
  • 一文帶你掌握Go語言中的文件讀取操作

    一文帶你掌握Go語言中的文件讀取操作

    這篇文章主要和大家分享一下Go語言中的文件讀取操作,文中的示例代碼講解詳細,對我們學(xué)習(xí)Go語言有一定的幫助,需要的小伙伴可以參考一下
    2022-12-12
  • Gin框架使用panic處理中間件問題詳解

    Gin框架使用panic處理中間件問題詳解

    這篇文章主要介紹了Gin框架使用panic處理中間件問題,在 Gin 框架中,錯誤處理和 panic 處理是非常重要的功能。當處理 HTTP 請求時,可能會出現(xiàn)各種各樣的錯誤,例如數(shù)據(jù)庫連接錯誤、網(wǎng)絡(luò)錯誤、權(quán)限問題等等
    2023-04-04

最新評論