掃二維碼與項目經(jīng)理溝通
我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
在查看 open-falcon 項目源碼時,經(jīng)常會看到其引用了一個類庫 https://github.com/toolkits ,而仔細(xì)查看該類庫的作者為秦曉輝(UlricQin)— 原Open-Falcon主程,現(xiàn)滴滴云運維負(fù)責(zé)人 。所以有了這層關(guān)系就不難理解open-Falcon引用toolkits里很多代碼的原因了吧。toolkits里根據(jù)模塊類型分了多個子項目,其根據(jù)類型又分為LINUX底層性能監(jiān)控的、郵件發(fā)送的、網(wǎng)絡(luò)的等,這里以nux項為例,說下如下引用。

成都創(chuàng)新互聯(lián)公司長期為上1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團隊從業(yè)經(jīng)驗10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為東港企業(yè)提供專業(yè)的成都網(wǎng)站設(shè)計、成都網(wǎng)站制作,東港網(wǎng)站改版等技術(shù)服務(wù)。擁有十余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。
如下引用其中的部分實現(xiàn)的函數(shù)進行處理,代碼如下:
// code from www.361way.com
package main
import (
"fmt"
"github.com/toolkits/nux"
)
func main() {
l,_ := nux.LoadAvg()
fmt.Println(nux.LoadAvg())
m,_ := nux.MemInfo()
fmt.Println(l)
fmt.Println(l.Avg1min)
fmt.Println(m)
fmt.Println(nux.NumCpu())
//fmt.Println(nux.CurrentProcStat())
fmt.Println(nux.ListMountPoint())
fmt.Println(nux.BuildDeviceUsage("/dev/mapper/centos-root","/","xfs"))
}
執(zhí)行結(jié)果如下:
golang toolkits包的使用方法介紹golang toolkits包的使用方法介紹
其代碼寫的比較清晰簡潔,可以作為參考使用下。不過其對部分指標(biāo)處理的結(jié)果可能和我們所需的結(jié)果還是有一些出入,比如,我們平時需要查看的CPU使用率,并不會取各各指標(biāo)占用的CPU時間,而是直接像top查看到的結(jié)果一樣,只看idel、us等占用的CPU百分比是多少。正因為如些,所以open-falcon項目在此基礎(chǔ)上又進行了二次封裝,其地址為:https://github.com/open-falcon/falcon-plus/blob/master/modules/agent/funcs/cpustat.go 這里只取其中一個指標(biāo)的獲取方式的代碼,如下:
func CpuIdle() float64 {
psLock.RLock()
defer psLock.RUnlock()
dt := deltaTotal()
if dt == 0 {
return 0.0
}
invQuotient := 100.00 / float64(dt)
return float64(procStatHistory[0].Cpu.Idle-procStatHistory[1].Cpu.Idle) * invQuotient
}

我們在微信上24小時期待你的聲音
解答本文疑問/技術(shù)咨詢/運營咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流