溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

如何使用go監(jiān)控方案的statsd

發(fā)布時間:2021-11-15 17:12:35 來源:億速云 閱讀:305 作者:iii 欄目:大數(shù)據(jù)

本篇內(nèi)容介紹了“如何使用go監(jiān)控方案的statsd”的有關(guān)知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細閱讀,能夠?qū)W有所成!

statsd

statsd也是一款數(shù)據(jù)采集工具。

statsd狹義來講,其實就是一個監(jiān)聽UDP(默認)或者TCP的守護程序,根據(jù)簡單的協(xié)議收集statsd客戶端發(fā)送來的數(shù)據(jù),聚合之后,定時推送給后端,如graphite和influxdb等,再通過grafana等展示。

statsd 其實也有很多第三方包用來收集數(shù)據(jù),但是statsd支持的類型較少,度量只有四種,所以我只用statsd作為傳輸協(xié)議進行數(shù)據(jù)傳輸。所以沒有直接使用下面介紹的這4個第三方包

git 官方介紹了4種,地址:https://github.com/statsd/statsd/wiki#client-implementations

statsd

  • statsd: https://github.com/alexcesaro/statsd

  • statsd: https://github.com/quipo/statsd

  • g2s : https://github.com/peterbourgon/g2s

  • go-statsd-client: https://github.com/cactus/go-statsd-client (直接使用推薦這個)

協(xié)議

<bucket>:<value>|<type>[|@sample_rate]
  • bucket是一個metric的標(biāo)識,可以看成一個metric的變量。

  • value: metric的值,通常是數(shù)字。

  • metric的類型,通常有timer、counter、gauge和set四種。

  • sample_rate

sample_rate

如果數(shù)據(jù)上報量過大,很容易溢滿statsd。所以適當(dāng)?shù)慕档筒蓸?,減少server負載。

客戶端減少數(shù)據(jù)上報的頻率,然后在發(fā)送的數(shù)據(jù)中加入采樣頻率,如0.1。statsd server收到上報的數(shù)據(jù)之后,如cnt=10,得知此數(shù)據(jù)是采樣的數(shù)據(jù), 然后flush的時候,按采樣頻率恢復(fù)數(shù)據(jù)來發(fā)送給backend,即flush的時候,數(shù)據(jù)為cnt=10/0.1=100,而不是容易誤解的10*0.1=1。

這個參數(shù)的主要作用是降低網(wǎng)絡(luò)的傳輸帶寬,例如 0.5 表示 UDP 包減少一半,其代價是降低了精確度。對于客戶端,如果設(shè)置了 0.5 ,也就意味著只有原先 50% 的時間發(fā)送統(tǒng)計值;在服務(wù)端,會根據(jù)采樣值進行一些修正,簡單來說就是乘以 2 。

實際上,在客戶端每次調(diào)用發(fā)送接口會計算其發(fā)送概率。

UDP 和 TCP

statsd可配置相應(yīng)的server為UDP和TCP。默認為UDP

  • UDP不需要建立連接,速度很快,不會影響應(yīng)用程序的性能。

  • “fire-and-forget”機制,就算statsd server掛了,也不會造成應(yīng)用程序crash。

UDP更適合于上報頻率比較高的場景,就算丟幾個包也無所謂,對于一些一天已上報的場景,任何一個丟包都影響很大。

網(wǎng)絡(luò)環(huán)境比較差的場景,適合用TCP,會有相應(yīng)的重發(fā),確保數(shù)據(jù)可靠

建議使用UDP。TCP還是有許多弊端的。

默認端口

statsd 默認監(jiān)聽8125來收集udp包。

port: 8125

指標(biāo) metric

statsd 支持的數(shù)據(jù)類型:

metric_types

Counting: gorets:1|c
Sampling: gorets:1|c|@0.1
Timing: glork:320|ms|@0.1
Gauges: gaugor:333|g
Sets: uniques:765|s

Multi-Metric Packets

gorets:1|c\nglork:320|ms\ngaugor:333|g\nuniques:765|s

Counting

counter類型的指標(biāo),用來計數(shù)。在一個flush區(qū)間,把上報的值累加。值可以是正數(shù)或者負數(shù)。

user.logins:10|c        // user.logins + 10
user.logins:-1|c        // user.logins - 1 
user.logins:10|c|@0.1   // user.logins + 100
                        // users.logins = 10-1+100=109

Timing

timers用來記錄一個操作的耗時,單位ms。statsd會記錄平均值(mean)、最大值(upper)、最小值(lower)、累加值(sum)、平方和(sum_squares)、個數(shù)(count)以及部分百分值。

rpt:100|g

如下是在一個flush期間,發(fā)送了一個rpt的timer值100。以下是記錄的值。

count_80: 1,    
mean_80: 100,
upper_80: 100,
sum_80: 100,    
sum_squares_80: 10000, 
std: 0,     
upper: 100,
lower: 100,
count: 1,
count_ps: 0.1,
sum: 100,
sum_squares: 10000,
mean: 100,
median: 100

Gauges

gauge是任意的一維標(biāo)量值。gague值不會像其它類型會在flush的時候清零,而是保持原有值。statsd只會將flush區(qū)間內(nèi)最后一個值發(fā)到后端。另外,如果數(shù)值前加符號,會與前一個值累加。

age:10|g    // age 為 10
age:+1|g    // age 為 10 + 1 = 11
age:-1|g    // age為 11 - 1 = 10
age:5|g     // age為5,替代前一個值

Sets

記錄flush期間,不重復(fù)的值。

可以針對某一個集合進行統(tǒng)計,統(tǒng)計總共出現(xiàn)了多少種類的值。

request:1|s  // user 1
request:2|s  // user1 user2
request:1|s  // user1 user2

“如何使用go監(jiān)控方案的statsd”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識可以關(guān)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實用文章!

向AI問一下細節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI