目录

nvitop-exporter编译和部署

概述

nvitop 可以提升 GPU 的可观测性,而 nvitop 项目里还提供了 nvitop-exporter 可以将相关的 GPU 指标以 Prometheus 的表格格式提供采集,对提升 GPU 的可观测性是非常有帮助的。

镜像

nvitop 在v1.5.0版本的镜像里,没有安装 nvitop-exporter,因此为了使用 nvitop-exporter,需要自己安装,可以在原来的 Dockerfile 里补充下面的命令。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
diff --git a/Dockerfile b/Dockerfile
index c3194cf..7b1f118 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -32,6 +32,7 @@ COPY . /nvitop
 WORKDIR /nvitop
 RUN . /venv/bin/activate && \
   python3 -m pip install . && \
+  cd nvitop-exporter && python3 -m pip install . && \
   rm -rf /root/.cache

之后正常进行编译就可以。

1
docker build -t runzhliu/nvitop-exporter:v1.5.0 .

或者可以下载笔者编译上传的镜像。

1
docker pull runzhliu/nvitop-exporter:v1.5.0

Kubernetes部署

个人建议 nvitop-exporter 可以跟 gpu-operator 里的 nvidia-dcgm-exporter 一起使用和部署,作为 nvidia-dcgm-exporter 的补充,可以将其放在 exporter 的 DaemonSet 里一起发布和部署,发布的时候只要区分端口就可以了,nvitop-exporter 默认使用9400端口,nvitop-exporter 默认使用5050端口。另外注意一下,原生 nvitop-exporter 里的日志需要通过设置 PYTHONUNBUFFERED=1 环境变量才可以正常 kubectl logs 出来,这是跟 Python 日志 Flush 缓存有关的,用户可以通过配置 DaemonSet 的环境变量,或者修改源码配置正确的环境变量修改。

导入到Grafana

下面是导入的官方 Dashboard。

/nvitop-exporter%E7%BC%96%E8%AF%91%E5%92%8C%E9%83%A8%E7%BD%B2/img.png

参考资料

  1. nvitop
  2. nvitop docs