先展示最终效果:
要实现上述监控页面,必须安装并配置nvidia_gpu_exploter、prometheus、grafana这三个软件,具体的安装配置流程如下:
(我想通过网页实时展示服务器上正在运行的gpu进程以及使用的显存占比,但是这套配置其最终效果只显示内存使用占比、显存使用占比,gpu实时利用率等等,无法实现gpu进程和其占比的实时展示)
一、nvidia_gpu_exploter的安装配置
nvidia_gpu_exploter用于获取nvidia-smi的输出信息,可以将其看作一个抓手,定时(5s/10s)抓取一次nvidia-smi的输出信息。
-
nvidia_gpu_exploter的安装
ubuntu20.04可使用以下命令一键傻瓜安装:
sudo dpkg -i nvidia-gpu-exporter_1.1.0_linux_amd64.deb
或使用二进制文件安装:
bash
VERSION=1.1.0
wget https://github.com/utkuozdemir/nvidia_gpu_exporter/releases/download/v${VERSION}/nvidia_gpu_exporter_${VERSION}_linux_x86_64.tar.gz
tar -xvzf nvidia_gpu_exporter_${VERSION}_linux_x86_64.tar.gz
mv nvidia_gpu_exporter /usr/bin
nvidia_gpu_exporter --help
-
nvidia_gpu_exploter的配置
一键式傻瓜安装无需额外就能启用nvidia_gpu_exploter.service
systemctl start nvidia_gpu_exporter.service
systemctl status nvidia_gpu_exporter.service
- 之后在局域网内部任意一台电脑中输入
服务器IP:9835
即可访问服务页面
出现上述内容,说明nvidia_gpu_exporter.service成功运行
nvidia_gpu_exporter项目的github主页: utkuozdemir/nvidia_gpu_exporter: Nvidia GPU exporter for prometheus using nvidia-smi binary (github.com)
二、prometheus的安装配置
prometheus用于将nvidia_gpu_exporter抓取到的数据格式化为grafana可使用的标准数据。
-
prometheus的安装
sudo apt install prometheus
-
prometheus的配置
进入/etc/prometheus目录,修改prometheus.yml,设置prometheus的数据源(设置为nvidia_gpu_exporter),如下图所示:
然后开启prometheus服务:
sudo systemctl start prometheus.service
-
之后在局域网内部任意一台电脑中输入
服务器IP:9090
即可访问prometheus服务页面 -
Targets 下出现nvidia_gpu_exporter的数据源,则证明prometheus服务配置成功。
三、grafana的安装配置
grafana软件用于数据的可视化展示,Grafana 支持的数据源有
- Prometheus 本文中的例子,你没听过也没关系不影响阅读,把它想象成带时间戳的 MySQL 就好
- Graphite
- OpenTSDB
- InfluxDB
- MySQL/PostgreSQL
- Microsoft SQL Server
- 等等
-
grafana的安装
下载deb文件:
wget https://dl.grafana.com/enterprise/release/grafana-enterprise_10.4.0_amd64.deb
解压安装:
sudo dpkg -i grafana-enterprise_10.4.0_amd64.deb
-
启动grafana.service服务:
sudo systemctl start grafana-server.service
-
之后在局域网内部任意一台电脑中输入
服务器IP:3000
即可访问grafana服务页面。(首次登录用户名和密码都是admin) -
登录成功后配置grafana的仪表盘:
-
第一步:创建一个grafana data connection:
(1). 选择数据格式为prometheus.
(2). 添加prometheus数据源地址,如图所示: prometheus服务地址中,端口号要和你在prometheus.yml中配置的一致,由于我没有修改prometheus服务的端口,所以仍使用默认端口9090
-
第二步:创建仪表盘
(1) 加载你想要的仪表盘样式,我选择的是nvidia_gpu_exploter官方发布的仪表盘,编号为:14574
-
第三步,为你的仪表盘选择一个grafana data connection数据源,如图所示
-
最终,通过以下操作得到服务器状态的实时展示,如图所示: