最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

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

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

metrics 是什么?

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

五種 Metrics 類型

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

接下來(lái)我們寫(xiě)代碼實(shí)際使用一下這些功能 就從最簡(jiǎn)單的Gauges 開(kāi)始吧

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++
	}
}

此時(shí)我們運(yùn)行程序 可以看到如下輸出

在程序中我們?cè)趍etrics.Log 中設(shè)置了 metrics 的輸出頻率為1s 同時(shí)指定了數(shù)據(jù)輸出的目的為 log.New出來(lái)的Logger 設(shè)置為打印在標(biāo)準(zhǔn)輸出

接下counters 與gauges 類似

只不過(guò)在操作上 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í)候 默認(rèn)的時(shí)候數(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ù)的兩個(gè)參數(shù)的含義: 第一是內(nèi)部存儲(chǔ)數(shù)據(jù)的個(gè)數(shù)

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

下面來(lái)測(cè)試一下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)
	}
}

測(cè)試結(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
	}
}

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

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

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

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

相關(guān)文章

  • golang使用bcrypt包對(duì)密碼進(jìn)行加密的方法實(shí)現(xiàn)

    golang使用bcrypt包對(duì)密碼進(jìn)行加密的方法實(shí)現(xiàn)

    本文主要介紹了golang使用bcrypt包對(duì)密碼進(jìn)行加密的方法實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-07-07
  • Go語(yǔ)言內(nèi)建函數(shù)len的使用

    Go語(yǔ)言內(nèi)建函數(shù)len的使用

    Go語(yǔ)言中的len函數(shù)是一個(gè)內(nèi)建函數(shù),用于獲取數(shù)組、切片、字符串、映射和通道等數(shù)據(jù)類型的長(zhǎng)度或大小,本文介紹了len函數(shù)在不同數(shù)據(jù)類型中的使用場(chǎng)景和特點(diǎn),感興趣的可以了解一下
    2024-10-10
  • 深入了解Golang中的格式化輸出

    深入了解Golang中的格式化輸出

    fmt是Go語(yǔ)言中用于控制文本輸出的常用標(biāo)準(zhǔn)庫(kù),文中將通過(guò)示例詳細(xì)講解一下Go語(yǔ)言中不同形式的格式化輸出,感興趣的小伙伴可以了解一下
    2022-11-11
  • Go進(jìn)行接口組合的解決方案

    Go進(jìn)行接口組合的解決方案

    在 Go 語(yǔ)言中,接口組合是一種強(qiáng)大的特性,它允許將多個(gè)接口組合成一個(gè)新的接口,從而提供更靈活和可擴(kuò)展的代碼設(shè)計(jì),本文給大家介紹了Go如何進(jìn)行接口組合,需要的朋友可以參考下
    2024-06-06
  • Go語(yǔ)言開(kāi)發(fā)技巧必知的小細(xì)節(jié)提升效率

    Go語(yǔ)言開(kāi)發(fā)技巧必知的小細(xì)節(jié)提升效率

    這篇文章主要介紹了Go語(yǔ)言開(kāi)發(fā)技巧必知的小細(xì)節(jié)提升效率,分享幾個(gè)你可能不知道的Go語(yǔ)言小細(xì)節(jié),希望能幫助大家更好地學(xué)習(xí)這門(mén)語(yǔ)言
    2024-01-01
  • 深入理解go sync.Once的具體使用

    深入理解go sync.Once的具體使用

    在很多情況下,我們可能需要控制某一段代碼只執(zhí)行一次,go 為我們提供了?sync.Once?對(duì)象,它保證了某個(gè)動(dòng)作只被執(zhí)行一次,本文主要介紹了深入理解go sync.Once的具體使用,感興趣的可以了解一下
    2024-01-01
  • Golang中的new()和make()函數(shù)本質(zhì)區(qū)別

    Golang中的new()和make()函數(shù)本質(zhì)區(qū)別

    在 Go 語(yǔ)言開(kāi)發(fā)中,new() 和 make() 是兩個(gè)容易讓開(kāi)發(fā)者感到困惑的內(nèi)建函數(shù),盡管它們都用于內(nèi)存分配,但其設(shè)計(jì)目的、適用場(chǎng)景和底層實(shí)現(xiàn)存在本質(zhì)差異,本文將通過(guò)類型系統(tǒng)、內(nèi)存模型和編譯器實(shí)現(xiàn)三個(gè)維度,深入解析這兩個(gè)函數(shù)的本質(zhì)區(qū)別,感興趣的朋友一起看看吧
    2025-02-02
  • Go調(diào)度器學(xué)習(xí)之系統(tǒng)調(diào)用詳解

    Go調(diào)度器學(xué)習(xí)之系統(tǒng)調(diào)用詳解

    這篇文章腫,將以一個(gè)簡(jiǎn)單的文件打開(kāi)的系統(tǒng)調(diào)用,來(lái)分析一下Go調(diào)度器在系統(tǒng)調(diào)用時(shí)做了什么。文中的示例代碼講解詳細(xì),需要的可以參考一下
    2023-04-04
  • 使用Go語(yǔ)言實(shí)現(xiàn)接口繼承的方式

    使用Go語(yǔ)言實(shí)現(xiàn)接口繼承的方式

    在Go語(yǔ)言中,接口(interface)是一種定義方法集合的類型,它并不包含方法的具體實(shí)現(xiàn),只是規(guī)定實(shí)現(xiàn)該接口的類型必須提供這些方法的實(shí)現(xiàn),下面我將通過(guò)示例代碼來(lái)詳細(xì)解釋如何使用Go語(yǔ)言實(shí)現(xiàn)接口組合,以及為什么這種方式可以看作是實(shí)現(xiàn)接口繼承的一種方式
    2024-05-05
  • GoLang基于zap日志庫(kù)的封裝過(guò)程詳解

    GoLang基于zap日志庫(kù)的封裝過(guò)程詳解

    Zap是我個(gè)人比較喜歡的日志庫(kù),是uber開(kāi)源的,有較好的性能,在項(xiàng)目開(kāi)發(fā)中,經(jīng)常需要把程序運(yùn)行過(guò)程中各種信息記錄下來(lái),有了詳細(xì)的日志有助于問(wèn)題排查和功能優(yōu)化,這篇文章主要介紹了GoLang基于zap日志庫(kù)的封裝過(guò)程,想要詳細(xì)了解可以參考下文
    2023-05-05

最新評(píng)論

高尔夫| 大港区| 东乡县| 余姚市| 蓝田县| 穆棱市| 渑池县| 馆陶县| 任丘市| 逊克县| 阿荣旗| 永福县| 明水县| 全南县| 玛多县| 建宁县| 长武县| 甘泉县| 库伦旗| 广元市| 南陵县| 临江市| 丹棱县| 灵武市| 巧家县| 邵东县| 隆德县| 定结县| 彰化市| 尖扎县| 崇信县| 福泉市| 平武县| 仁寿县| 新乡市| 大荔县| 平度市| 兴和县| 醴陵市| 黑山县| 根河市|