亲爱的读者们👋
欢迎加入【30天精通Prometheus】专栏!📚 在这里,我们将探索Prometheus的强大功能,并将其应用于实际监控中。这个专栏都将为你提供宝贵的实战经验。🚀
Prometheus是云原生和DevOps的核心监控工具,我们将从基础概念开始,逐步涵盖配置、查询、告警和可视化。💪
在接下来的30天里,我们将解锁Prometheus的实战技巧,通过案例和分享,助你深入理解其工作原理。📆
目标:30天后,你将熟练掌握Prometheus,为未来的项目挑战做好准备!💯
这是一段精彩旅程,期待你的加入!🎉
文章目录
- 一、dcgm-exporter概述📘
- 二、安装dcgm-exporter💾
- 2.1 访问dcgm-exporter官方网站 🌐
- 2.2 选择适合的版本🔍
- 2.3 下载dcgm-exporter⬇️
- 2.4 解压安装包📂
- 2.5 安装GO环境
- 2.6 运行dcgm-exporter🚀
- 三、dcgm-exporter指标和配置详解📖
- 3.1 dcgm-exporter.service
- 四、实战演练:生产环境搭建指南🔨
- 4.1 创建普通用户管理dcgm-exporter👤
- 4.2 解压dcgm-exporter.tar.gz📦
- 4.3 将dcgm-exporter集成到Prometheus配置中✂️
- 4.4 编辑dcgm-exporter.service文件📝
- 4.5 启动dcgm-exporter.service🔌
- 4.6 查看服务是否正常启动🔍
- 相关资料下载地址📚
一、dcgm-exporter概述📘
定义
dcgm-exporter是一个用于将NVIDIA GPU监控数据导出为Prometheus格式的工具。它能够实时地收集GPU相关的各种指标数据,如温度、功耗、显存使用率等,并将其转换为Prometheus可以理解的格式,以便进行进一步的可视化和告警设置。
功能
实时数据收集:dcgm-exporter能够实时地收集NVIDIA GPU的各项指标数据,包括但不限于温度、功耗、显存使用率、运算性能等。
数据格式化:收集到的数据会被格式化为Prometheus所需的格式,这使得数据可以轻松地集成到现有的监控系统中。
自定义指标:用户可以根据自己的需求,通过CSV文件配置自定义收集的GPU指标,满足特定的监控需求。
安全性保障:支持TLS加密和基本身份验证,确保监控数据在传输和存储过程中的安全性。
应用场景
云环境监控:在Kubernetes或OpenStack等云环境中,dcgm-exporter可以帮助运维人员实时监测GPU资源的使用情况,从而实现资源的智能调度和优化配置。
深度学习训练监控:在进行深度学习训练时,dcgm-exporter可以持续监控GPU的负载、温度和其他关键指标,帮助研究人员预防GPU过热,优化训练效率。
高性能计算(HPC)环境:对于需要进行大量GPU计算的任务,如气象模拟或物理仿真,dcgm-exporter能够提供实时的性能反馈,有助于及时发现潜在问题、进行故障排查和性能调优。
二、安装dcgm-exporter💾
注意事项和常见问题
1.环境配置:确保系统已安装NVIDIA GPU驱动和CUDA工具包,因为dcgm-exporter依赖于这些组件来访问GPU信息。检查操作系统是否兼容,并确保满足dcgm-exporter运行的最低要求。
2.依赖安装:在安装dcgm-exporter之前,需要先安装NVIDIA Data Center GPU Manager (DCGM),因为它是dcgm-exporter的基础。如果计划将dcgm-exporter与Prometheus集成,确保Prometheus服务器已正确配置并运行。
3.版本兼容性:选择与您的GPU驱动和CUDA版本兼容的dcgm-exporter版本。定期检查并应用官方发布的更新,以确保系统的安全性和性能。
2.1 访问dcgm-exporter官方网站 🌐
- 打开浏览器,访问dcgm-exporter的官方下载页面,通常位于Github官方网站的dcgm-exporter下:https://github.com/NVIDIA/dcgm-exporter/releases
2.2 选择适合的版本🔍
- 在下载页面,你将看到不同操作系统的dcgm-exporter二进制包。根据你的操作系统选择适合的版本。例如,如果你使用的是Linux 64位系统,就选择dcgm-exporter-3.3.5-3.4.1.tar.gz(其中x.x.x是版本号)。
2.3 下载dcgm-exporter⬇️
- 点击所选版本的下载链接,将dcgm-exporter的二进制包下载到你的本地计算机。
2.4 解压安装包📂
- 将下载的dcgm-exporter压缩包解压到你想要安装的目录。你可以使用命令行工具(如tar)来完成这个步骤。解压后,你将看到一个名为dcgm-exporter-3.3.5-3.4.1的目录,其中包含dcgm-exporter的二进制文件和其他相关文件。
tar -xzf dcgm-exporter-3.3.5-3.4.1.tar.gz
2.5 安装GO环境
- 可访问go官网下载源码包:https://go.dev/dl/
wget https://golang.google.cn/dl/go1.21.1.linux-amd64.tar.gz
tar xvf go1.21.1.linux-amd64.tar.gz -C /usr/local/
mkdir /usr/local/gopath
cat >> /etc/profile <<EOF
export GOROOT=/usr/local/go
export GOPATH=/usr/local/gopath
export PATH=\$PATH:\$GOROOT/bin
export GO111MODULE="on" # 开启 Go moudles 特性
export GOPROXY=https://goproxy.cn,direct # 安装 Go 模块时,国内代理服务器设置
EOF
2.6 运行dcgm-exporter🚀
- 进入解压后的目录,并运行dcgm-exporter服务器。在Linux下,你可以使用如下命令。如果一切正常,你应该能在终端看到dcgm-exporter的启动日志。
cd dcgm-exporter-3.3.5-3.4.1
make binary
make install
./dcgm-exporter --address 0.0.0.0:9400 -f etc/default-counters.csv
三、dcgm-exporter指标和配置详解📖
- 黑色:作为默认文本颜色。
- 绿色:表示常规配置项
- 橙色:表示具有互斥参数的配置项 / 建议开启(根据自己的场景确定需求)
- 蓝色:不重要的配置项 / 建议不开启
- 红色:表示关键信息和警告 / 最好开启
注意:
- 1.相关参数配置建议仅供参考,具体要以自己生产的实际需要自行配置。
- 2.以下配置参数介绍是基于dcgm-exporter-3.3.5-3.4.1版本说明的,其它版本会有不同。
3.1 dcgm-exporter.service
- - -collectors value, -f value
指定dcgm-exporter需要收集的指标类型。可以通过这个参数来定义他们想要监控和收集哪些特定的NVIDIA GPU指标。例如,可以指定收集GPU利用率、内存使用情况、温度等具体指标。通过传递一个或多个收集器的名称,dcgm-exporter将仅限于导出这些指定收集器的指标。如果不设置此参数,dcgm-exporter会默认收集所有可用的指标 - - -address value, -a value
指定dcgm-exporter监听的地址 - - -collect-interval value, -c value
定义dcgm-exporter从NVIDIA GPU设备收集指标的频率。它是以秒为单位的时间间隔,指定dcgm-exporter多久查询一次GPU状态并更新其内部指标数据 - - -kubernetes, -k
此参数表示dcgm-exporter运行在Kubernetes环境中,并会启用与Kubernetes相关的特性和集成。当在Kubernetes集群中部署dcgm-exporter时,通常会设置此标志 - - -use-old-namespace, -o
如果在旧版本的Kubernetes或某些特定配置下运行,并且需要兼容旧的命名空间格式,可以使用此参数 - - -cpu-devices value, -p value
通过此参数,可以指定要监控的CPU设备。在多CPU或多核系统的环境中特别有用,可以更精确地监控和收集特定CPU或CPU核心的性能数据 - - -configmap-data value
当dcgm-exporter在Kubernetes环境中运行时,用于从ConfigMap中加载配置数据。ConfigMap是Kubernetes中用于存储配置信息的资源对象,通过此参数,dcgm-exporter可以灵活地从ConfigMap中读取配置,无需硬编码或手动设置 - - -remote-hostengine-info value, -r value
允许dcgm-exporter从远程主机引擎获取信息。在某些分布式或集群环境中,GPU资源可能分布在多个物理或虚拟节点上,此参数使得dcgm-exporter能够跨节点收集GPU信息 - - -kubernetes-gpu-id-type value
GPU可以以不同的方式标识,例如UUID、索引或其他唯一标识符。此参数允许指定Kubernetes中GPU的ID类型,以确保dcgm-exporter能够正确地识别和关联GPU资源 - - -devices value, -d value
允许指定要监控的GPU设备。可以提供一个或多个GPU设备的标识符,这样dcgm-exporter就只会收集这些指定设备的指标数据。在多GPU系统中特别有用,当只对某些特定的GPU设备感兴趣时,可以通过此参数进行精确监控 - - -no-hostname, -n
设置此参数后,dcgm-exporter在导出指标时将不会包含主机名。默认情况下,dcgm-exporter可能会将主机名作为标签添加到导出的指标中,以便更好地识别和区分不同主机的数据。但在某些场景下,可能希望隐藏或省略主机名信息,此时可以使用此参数 - - -switch-devices value, -s value
允许用户指定一个设备切换策略。在某些复杂的系统中,可能存在多个GPU设备,并且这些设备可能在不同的时间或条件下需要被切换或选择。通过设置此参数,用户可以定义如何在这些设备之间进行切换,以满足特定的监控需求 - - -fake-gpus
当设置此参数时,dcgm-exporter将模拟GPU设备的存在和指标数据。通常用于测试或开发环境,在没有实际GPU硬件的情况下模拟GPU监控数据的生成和导出。这样开发者可以在没有物理GPU的情况下进行开发和测试 - - -web-config-file value
允许用户指定一个Web配置文件,该文件包含dcgm-exporter的Web界面相关配置。通过此配置文件,用户可以自定义Web界面的外观、功能以及行为等。对于需要自定义或扩展dcgm-exporter Web界面来说非常有用 - - -xid-count-window-size value, -x value
设置XID错误计数的窗口大小。XID错误是NVIDIA GPU的一种特定错误类型,该参数定义在一个时间窗口内记录和报告的XID错误数量。通过调整这个窗口大小,用户可以更精细地控制对XID错误的监控和报告 - - -replace-blanks-in-model-name, --rbmn
当GPU的模型名称中包含空格时,启用此选项将会替换掉这些空格。有助于在处理和报告GPU信息时避免潜在的格式问题或解析错误,确保数据的准确性和一致性 - - -clock-events-count-window-size value
用于设置时钟事件计数的窗口大小。时钟事件可能与GPU的时钟频率调整相关,这个窗口大小决定了在一段时间内记录和报告的时钟事件数量,帮助大家更好地理解和分析GPU的时钟行为 - - -enable-dcgm-log
启用此参数将开启DCGM的日志记录功能 - - -dcgm-log-level value
设置DCGM日志的记录级别。用户可以根据需要选择不同级别的日志详细程度,例如DEBUG、INFO、WARNING、ERROR等。有助于控制日志输出的内容量和详细程度,便于用户根据需要查看和分析日志信息 - - -pod-resources-kubelet-socket value
在Kubernetes环境中,此参数用于指定kubelet的Pod资源套接字的路径。dcgm-exporter通过这个套接字与kubelet进行通信,以获取分配给Pod的GPU设备信息 - - -web-systemd-socket
当dcgm-exporter作为systemd服务运行时,启用此参数将使其通过systemd的套接字激活功能来提供Web界面。这意味着当外部请求访问dcgm-exporter的Web界面时,systemd会自动启动相应的服务来处理这些请求
四、实战演练:生产环境搭建指南🔨
4.1 创建普通用户管理dcgm-exporter👤
useradd deploy
4.2 解压dcgm-exporter.tar.gz📦
注意:
我的是x86,所以使用dcgm-exporter-3.3.5-3.4.1.tar.gz,您可以使用uname -a命令查看系统架构
mkdir /home/deploy/dcgm-exporter
tar xvf dcgm-exporter-3.3.5-3.4.1.tar.gz
cd dcgm-exporter-3.3.5-3.4.1
make binary
make install
cp -a dcgm-exporter /home/deploy/dcgm-exporter/
cp -a etc/default-counters.csv /home/deploy/dcgm-exporter/
4.3 将dcgm-exporter集成到Prometheus配置中✂️
将dcgm-exporter集成到Prometheus配置中,确保数据能够正常采集。编辑Prometheus的配置文件(通常是prometheus.yml),在scrape_configs部分添加dcgm-exporter的配置。告诉Prometheus将采集dcgm-exporter:9400 的数据。
- job_name: 'dcgm-exporter'
static_configs:
- targets:
- targets: ["localhost:9400 "]
labels:
exporter: dcgm-exporter
4.4 编辑dcgm-exporter.service文件📝
cat > /etc/systemd/system/dcgm-exporter.service <<EOF
[Unit]
Description=Dcgm exporter
After=network.target
[Service]
Type=simple
User=deploy
Group=deploy
ExecStart=/home/deploy/dcgm-exporter/dcgm-exporter \
-f /home/deploy/dcgm-exporter/default-counters.csv \
--address 0.0.0.0:9400
ExecReload=/bin/kill -HUP
Restart=on-failure
[Install]
WantedBy=multi-user.target
EOF
4.5 启动dcgm-exporter.service🔌
sudo systemctl daemon-reload
sudo systemctl enable --now dcgm-exporter.service
4.6 查看服务是否正常启动🔍
# 查看service服务是否启动
sudo systemctl status dcgm-exporter.service
# 查看端口是否存在
sudo ss -ntulp | grep 9400
相关资料下载地址📚
- 官方文档:https://prometheus.io/docs/introduction/overview/
- 下载地址:https://github.com/prometheus/prometheus/releases/tag/v2.52.0
- 文档地址:https://prometheus.io/docs/prometheus/latest/installation/
- 离线包下载链接:https://pan.baidu.com/s/1ANF_AlFnM5_FMIbKBuzBmg 提取码:yqpt