golang通過(guò)node_exporter監(jiān)控GPU及cpu頻率、溫度的代碼
導(dǎo)語(yǔ):通過(guò)node_exporter監(jiān)控GPU以及cpu頻率、溫度,不想用一個(gè)node_exporter再加一個(gè)dcgm,分開監(jiān)控。我這里監(jiān)控的是熱區(qū)的溫度。如果需要監(jiān)控各個(gè)cpu核心的溫度需要修改一下代碼。
結(jié)合了https://gitee.com/kevinliu_CQ/node_exporter監(jiān)控GPU的代碼。
加入了cpu的2項(xiàng)自定義監(jiān)控https://gitee.com/jiaminxu/self_node_exporter
安裝一下go
wget https://dl.google.com/go/go1.16.5.linux-amd64.tar.gz tar -xvf go1.16.5.linux-amd64.tar.gz cp -r ./go /usr/local cd /usr/local/go/bin cp -r * /usr/bin mkdir -p $HOME/go echo "export GOROOT=$HOME/go" >> /etc/profile echo "export GOPATH=$HOME/gopath" >> /etc/profile echo "export PATH=$PATH:$GOROOT/bin:$GOPATH/bin" >> /etc/profile echo "export env -w GO111MODULE=on" >> /etc/profile echo "export env -w GOPROXY=https://goproxy.io,direct" >> /etc/profile source /etc/profile cd /srv/ git clone https://gitee.com/kevinliu_CQ/node_exporter.git cd node_exporter/ # cp自己的go文件到collector/下 mkdir -p /usr/local/cuda/include cp -p nvml.h /usr/local/cuda/include export GOPROXY=https://goproxy.cn go build
編譯完直接使用./node_exporter二進(jìn)制文件即可。
gitee中已經(jīng)編譯好了amd64的可執(zhí)行文件。
這個(gè)版本添加了Nvidia GPU信息的抓取,所以編譯的時(shí)候需要nvml.h 復(fù)制到/usr/local/cuda/include 目錄里面 1. 復(fù)制依賴 ?```bash mkdir -p /usr/local/cuda/include cp -p nvml.h /usr/local/cuda/include ?``` 2. 定義GOPROXY變量 ?```bash export GOPROXY=https://goproxy.cn ?``` 3. 編譯項(xiàng)目 ?```bash cd /root/gitee_node_exporter go build 如果報(bào)錯(cuò)kit相關(guān)需要替換"github.com/go-kit/log"為"github.com/go-kit/kit/log" ?``` 4. 在如果一切正常在目錄中會(huì)生成node_exporter的可執(zhí)行二進(jìn)制文件 5. 運(yùn)行即可 ?```bash ./node_exporter --web.listen-address=":19200" ?``` 6. 打包arm64架構(gòu)的方法 * apt install gcc-aarch64-linux-gnu * env CGO_ENABLED=1 GOOS=linux GOARCH=arm64 CC_FOR_TARGET=gcc-aarch64-linux-gnu CC=aarch64-linux-gnu-gcc go build
CPU 溫度(最熱的核心)由 x86_pkg_temp 給出。
$ cat /sys/class/thermal/thermal_zone10/type x86_pkg_temp
然后/sys/class/thermal/thermal_zone10/temp是應(yīng)該在 i3 狀態(tài)欄中使用的文件。
附帶說(shuō)明一下,每個(gè)內(nèi)核的溫度都可以temp*_input在/sys/devices/platform/coretemp.0/hwmon/hwmon*/. 關(guān)聯(lián)temp*_label顯示哪個(gè)文件與哪個(gè)內(nèi)核相關(guān)(在我的例子中是 4 個(gè)內(nèi)核):
.../hwmon*/$ grep "" temp*_label temp1_label:Physical id 0 temp2_label:Core 0 temp3_label:Core 1 temp4_label:Core 2 temp5_label:Core 3
該文件temp1_input對(duì)應(yīng)于內(nèi)核的最熱值。
如果要獲取對(duì)應(yīng)每個(gè)cpu的溫度 需要
cat /sys/devices/platform/coretemp.0/hwmon/hwmon2/temp1_input

參考
https://qa.1r1g.cn/unix/ask/21339181/
https://cloud.tencent.com/developer/article/1820706
到此這篇關(guān)于golang通過(guò)node_exporter監(jiān)控GPU及cpu頻率、溫度的文章就介紹到這了,更多相關(guān)golang監(jiān)控GPU頻率溫度內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Go語(yǔ)言常見(jiàn)設(shè)計(jì)模式之裝飾模式詳解
在?Go?語(yǔ)言中,雖然裝飾模式?jīng)]有像?Python?中應(yīng)用那么廣泛,但也有其用武之地,這篇文章我們就來(lái)一起看下裝飾模式在?Go?語(yǔ)言中的應(yīng)用吧2023-07-07
go語(yǔ)言string轉(zhuǎn)結(jié)構(gòu)體的實(shí)現(xiàn)
本文主要介紹了go語(yǔ)言string轉(zhuǎn)結(jié)構(gòu)體的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03
go語(yǔ)言net包rpc遠(yuǎn)程調(diào)用的使用示例
本篇文章主要介紹了go語(yǔ)言net包rpc遠(yuǎn)程調(diào)用的使用示例,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11
Gin+Gorm實(shí)現(xiàn)CRUD的實(shí)戰(zhàn)
本文主要介紹了Gin+Gorm實(shí)現(xiàn)CRUD的實(shí)戰(zhàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-02-02
一文帶你揭秘Go中new()和make()函數(shù)的區(qū)別和用途
Go(或 Golang)是一種現(xiàn)代、靜態(tài)類型、編譯型的編程語(yǔ)言,專為構(gòu)建可擴(kuò)展、并發(fā)和高效的軟件而設(shè)計(jì),它提供了各種內(nèi)置的函數(shù)和特性,幫助開發(fā)人員編寫簡(jiǎn)潔高效的代碼,在本博客文章中,我們將探討 new() 和 make() 函數(shù)之間的區(qū)別,了解何時(shí)以及如何有效地使用它們2023-10-10
Go Web 編程中的模板庫(kù)應(yīng)用指南(超詳細(xì))
這篇文章主要介紹了Go Web 編程中的模板庫(kù)應(yīng)用指南,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-03-03

