golang通过node_exporter监控GPU及cpu频率、温度的代码
作者:爷来辣 时间:2024-02-04 14:53:22
导语:通过node_exporter监控GPU以及cpu频率、温度,不想用一个node_exporter再加一个dcgm,分开监控。我这里监控的是热区的温度。如果需要监控各个cpu核心的温度需要修改一下代码。
结合了https://gitee.com/kevinliu_CQ/node_exporter监控GPU的代码。
加入了cpu的2项自定义监控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二进制文件即可。
gitee中已经编译好了amd64的可执行文件。
这个版本添加了Nvidia GPU信息的抓取,所以编译的时候需要nvml.h 复制到/usr/local/cuda/include 目录里面
1. 复制依赖
```bash
mkdir -p /usr/local/cuda/include
cp -p nvml.h /usr/local/cuda/include
```
2. 定义GOPROXY变量
```bash
export GOPROXY=https://goproxy.cn
```
3. 编译项目
```bash
cd /root/gitee_node_exporter
go build
如果报错kit相关需要替换"github.com/go-kit/log"为"github.com/go-kit/kit/log"
```
4. 在如果一切正常在目录中会生成node_exporter的可执行二进制文件
5. 运行即可
```bash
./node_exporter --web.listen-address=":19200"
```
6. 打包arm64架构的方法
* 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
是应该在 i3 状态栏中使用的文件。
附带说明一下,每个内核的温度都可以temp*_input
在/sys/devices/platform/coretemp.0/hwmon/hwmon*/
. 关联temp*_label
显示哪个文件与哪个内核相关(在我的例子中是 4 个内核):
.../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
对应于内核的最热值。
如果要获取对应每个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
来源:https://blog.csdn.net/xujiamin0022016/article/details/124648395
标签:golang,监控,GPU
0
投稿
猜你喜欢
SQL语句删除2条重复数据一条保留一条
2024-01-26 12:16:39
Python实现扫描指定目录下的子目录及文件的方法
2022-09-04 23:44:40
详解SQL Server中数据库快照工作原理
2009-01-21 14:18:00
asp连接mysql数据库详细实现代码
2012-12-04 19:56:39
pytest实现测试用例参数化
2023-12-10 19:01:21
SQL Server正则表达式 替换函数应用详解
2023-07-07 23:53:13
Vue+Echarts实现简单折线图
2024-05-29 22:42:25
浅谈Python数据类型判断及列表脚本操作
2021-02-16 07:56:14
利用SQL Server触发器实现表的历史修改痕迹记录
2024-01-19 18:06:42
php项目打包方法第1/2页
2024-05-11 09:47:00
引起用户注意的界面方式
2007-10-07 21:17:00
Python Flask请求扩展与中间件相关知识总结
2022-03-10 17:03:06
python输出带颜色字体实例方法
2021-03-27 22:40:56
python使用matplotlib绘制折线图
2021-08-23 05:12:53
Python如何读取相对路径文件
2023-12-06 17:03:18
asp如何正确显示数据库里同时存在的GB码和BIG5编码?
2010-06-28 18:26:00
使用Python matplotlib作图时,设置横纵坐标轴数值以百分比(%)显示
2022-08-08 05:41:40
python机器学习实战之最近邻kNN分类器
2021-11-11 14:55:52
详解如何利用tushare、pycharm和excel三者结合进行股票分析
2021-12-11 04:04:47
将设计执行到底—记Qzone项目组视觉设计标注的前前后后
2009-04-19 13:22:00