基于DCGM+Prometheus+Grafana的GPU监控方案

目录

  • 前言
  • 一、指标导出器
    • 1、DCGM:
      • 获取远程节点的信息
    • 2、 DCGM-Exporter
      • 收集多节点信息
      • 更改收集指标
  • 二、 Prometheus - From metrics to insight
      • 修改配置文件
      • 查看收集结果
  • 三、Grafana仪表板展示
      • 导入数据源
      • 创建仪表板
      • 更多仪表板


前言

基于DCGM(NVIDIA 数据中心GPU管理器)、Prometheus 和 Grafana 的GPU监控方案提供了一种全面的方式来跟踪和实时可视化GPU的使用和性能指标。通过DCGM收集详细的NVIDIA GPU遥测数据,并将其导出到Prometheus进行存储和处理,最后使用Grafana通过直观的仪表板展示这些数据,达到下图所示的效果。
在这里插入图片描述


一、指标导出器

1、DCGM:

NVIDIA 数据中心 GPU 管理器 (DCGM) 是一套工具,用于在集群环境中管理和监控 NVIDIA 数据中心 GPU。它包括主动运行状况监控、全面诊断、系统警报和治理策略,包括电源和时钟管理。它可以由基础设施团队独立使用,并轻松集成到 NVIDIA 合作伙伴的集群管理工具、资源调度和监控产品中。

快速开始:https://github.com/NVIDIA/DCGM#ubuntu-lts:

# 设置 CUDA 网络存储库元数据,GPG 密钥:
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.0-1_all.deb
sudo dpkg -i cuda-keyring_1.0-1_all.deb
sudo add-apt-repository "deb https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/ /"

安装 DCGM:

sudo apt-get update 
sudo apt-get install -y datacenter-gpu-manager

启动 DCGM 服务:

#开机自启&立即启动
sudo systemctl --now enable nvidia-dcgm

查看是否启动:

dcgmi  -v

在这里插入图片描述

停止服务

sudo systemctl stop nvidia-dcgm

获取远程节点的信息

我在github上提了一个issue:Can DCGM achieve obtaining gpu information of another host? #133

在这里插入图片描述

默认情况下,nv-hostengine 只绑定到 127.0.0.1,因此它不会监听远程连接,也就是说无法从另一台机器获取本机信息。如果你想让它监听远程连接,需要在启动 nv-hostengine 时使用 -b 选项来指定它应该监听连接的 IP 地址。你也可以指定 -b ALL 让它监听所有网络接口上的连接。

# 停止服务
sudo systemctl stop nvidia-dcgm
# 监听所有网络接口sudo nv-hostengine  --service-account nvidia-dcgm -b ALL#获取其他节点信息dcgmi discovery --host 10.112.0.1 -l

在这里插入图片描述

2、 DCGM-Exporter

DCGM-Exporter 是一种基于 NVIDIA DCGM 的 Go API 的工具,允许用户收集 GPU 指标并了解工作负载行为或监控集群中的 GPU。DCGM Exporter 是用 Go 编写的,并在 HTTP 端点 (/metrics) 上公开 GPU 指标,用于监控 Prometheus 等解决方案。

快速开始:https://github.com/NVIDIA/dcgm-exporter?tab=readme-ov-file#quickstart

sudo docker run -it -d --gpus all --name dcgm -p 9400:9400 -p 9403:9403  -p 9405:9405 nvcr.io/nvidia/k8s/dcgm-exporter:3.3.0-3.2.0-ubuntu22.04 bash

进入docker:

docker start dcgm
docker exec -it dcgm  bash

收集多节点信息

  • -p 指定端口映射,默认端口号9400,将docker内的9400映射到主机内相同端口,即可在localhost:9400收集到数据,curl your-ip:9400/metrics 或者浏览器打开your-ip:9400/metrics有一系列指标说明成功收集到数据,这里增加另外两个端口映射是因为我这里有三台主机,采用每个节点启动nv-hostengine,并在收集节点上建立docker用于收集三个节点的数据的方式。
  • -a 指定数据发送的端口,
  • –r 指定数据来源,nv-hostengine用于在每个节点上发送数据,默认端口号5555
dcgm-exporter -a :9403 -r  "10.112.28.2:5555" 
dcgm-exporter -a :9405 -r  "10.112.57.233:5555" 
# 查看日志
cat /var/log/nv-hostengine.log

更改收集指标

https://github.com/NVIDIA/dcgm-exporter#changing-metrics

使用 dcgm-exporter,可以通过指定自定义 CSV 文件来配置要收集的字段。你可以在存储库中的 etc/default-counters.csv 下找到默认 CSV 文件,该文件将复制到您的系统或容器上的 /etc/dcgm-exporter/default-counters.csv,还可以使用 -f 选项指定自定义 csv 文件

dcgm-exporter -f /my-counters.csv

二、 Prometheus - From metrics to insight

Prometheus是一个开源的系统监控和警报工具包, 将其指标作为时间序列数据收集和存储,即指标信息与记录它的时间戳一起存储,以及称为标签的可选键值对。

下载链接:https://prometheus.io/download/

wget https://github.com/prometheus/prometheus/releases/download/v2.54.1/prometheus-2.54.1.linux-amd64.tar.gz
# 解压
tar -xzf prometheus-2.54.1.linux-amd64.tar.gz
# 打开
cd prometheus-2.54.1.linux-amd64.tar.gz

修改配置文件

nano prometheus.yml

按照prometheus这个示例添加job即可,包括名称和ip:port,如下图添加了DCGM_exporter,让其从localhost的三个端口获取数据(分别对应三个节点的信息,在docker内已经设置dcgm-exporter从各自的nv-hostengine收集信息)
在这里插入图片描述
启动服务:

./prometheus --config.file=./prometheus.yml

查看收集结果

浏览器打开your-ip:9090,9090为prometheus的默认端口,点击status-> targets可以查看各个job的工作状态,如图所示,dcgm-exporter在三个端口均正常工作,说明收集到三个节点的信息

在这里插入图片描述
点击graph,勾选use local time,在搜索框内输入要查询的指标,以DCGM_FI_DEV_GPU_TEMP(GPU温度)为例,点击execute查询,table是各个指标的收集结果(文本序列),而graph可以展示一段时间内的变化情况,下图为graph的展示,15min 内的 3个节点共6张GPU的温度变化。

在这里插入图片描述
虽然prometheus提供了可视化功能,但是通常与grafana结合来建立更加全面的仪表板。

三、Grafana仪表板展示

快速开始:https://grafana.com/grafana/download

在这里插入图片描述

选择版本及对应操作系统输入命令即可

sudo apt-get install -y adduser libfontconfig1 musl
wget https://dl.grafana.com/enterprise/release/grafana-enterprise_11.2.2_amd64.deb
sudo dpkg -i grafana-enterprise_11.2.2_amd64.deb

确保Grafana服务已启动并且设置为开机启动,可以使用systemd来管理Grafana服务

sudo systemctl daemon-reload
# 设置开机启动
sudo systemctl enable grafana-server
sudo systemctl start grafana-server

检查Grafana服务的状态:

sudo systemctl status grafana-server

在这里插入图片描述

浏览器打开 your-ip:3000 进入登录界面,初始用户名与密码均为admin(grafana默认端口号3000)
在这里插入图片描述

导入数据源

  • 点击 home->connections->data sources ,再选择 右上角 add new data source 添加数据源。

在这里插入图片描述

  • 选择 prometheus , 输入名字和 server URL 即可,其他根据需求设置

在这里插入图片描述

  • 滑到最下面,点击save & test,出现绿框内容表示成功导入

在这里插入图片描述

创建仪表板

  • 直接点击绿框内的 building a dashboard 或 home->dashboards-> new dashboard来创建仪表板 ,可以直接导入别人已经创建好的,可以去grafana官网搜索相应的,这里提供一个DCGM-exporter 的 https://grafana.com/grafana/dashboards/12239-nvidia-dcgm-exporter-dashboard/
    在这里插入图片描述
  • 点击 import dashboard ,直接输入 仪表板对应ID ,点击load 即可 ,也可以在下面框内粘贴json文件加载
    在这里插入图片描述
  • 输入名字并选择数据源后 import 即可
    在这里插入图片描述
  • 正常的话,界面如下,
    在这里插入图片描述
  • 最上面的instance包含ip地址加端口号,对应prometheus配置文件中的targets,可以根据需要选择,展示部分或者全部。
    在这里插入图片描述
  • 仪表板中的每个部分为一个panel,可以直接拖动右下角来调整大小,点击右上角,view 全屏显示此panel,edit可以编辑,设置图的形状,添加指标等,remove移除在这里插入图片描述
  • 右上角 add 可以根据需要添加一个新panel
    在这里插入图片描述

更多仪表板

https://grafana.com/grafana/dashboards/
ID :12239,15117,12639(好像不能直接用,我这边没有信息,需要针对各个panel调整一下)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/56455.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DNS安全概述

一、DNS的解析过程 1.递归解析 递归解析是一种由DNS客户端(通常是用户的应用程序,如一个浏览器)向本地DNS解析器发出解析请求,然后本地DNS解析器负责查询最终结果并将结果返回给客户端,而中间的所有查询请求都由本地D…

LabVIEW空间相机测控系统

空间相机是遥感技术中的核心设备,其在太空中的性能对任务的成功至关重要。为了确保空间相机能够在极端环境下稳定工作,地面模拟测试成为必不可少的环节。LabVIEW开发的空间相机测控系统,通过对温度、应力和应变等参数进行高精度测量&#xff…

云贝教育 |【技术文章】OpenTenBase_V2.6基于麒麟V10源码编译安装

本文为云贝教育 刘老师 原创,请尊重知识产权,转发请注明出处,不接受任何抄袭、演绎和未经注明出处的转载。 前言:什么是OpenTenBase OpenTenBase 是一个提供写可靠性,多主节点数据同步的关系数据库集群平台。你可以…

LabVIEW智能可变温循环PCT测试系统

随着全球能源危机的加剧和环境保护需求的提升,开发和利用清洁能源已成为全球必然趋势。氢能作为一种高效的替代能源,正逐步受到关注。然而,储氢技术的研究至关重要,尤其是储氢材料的PCT(Pressure-Composition-Temperat…

iTOP-3A5000主控板龙芯自主指令系统外加机箱就是一台电脑主机

性能强采用全国产龙芯3A5000处理器,基于龙芯自主指令系统 (LoongArch)的LA464微结构,并进一步提升频率,降低功耗,优化性能。桥片采用龙芯 7A2000,支持PCIE 3.0、USB 3.0和 SATA 3.0.显示接口2 路、HDMI 和1路 VGA&…

sql数据库命令行操作(数据库的增删改查)

查询数据库 查询电脑里面所有数据库 SHOW DATABASES;查询当前所处的数据库 SELECT DATABASE();应用场景:当我使用了USE命令后不知道自己所在哪个数据库时,可以使用这个命令查询自己所在数据库 创建数据库 创建 CREATE DATABASE [IF NOT EXISTS] 数据…

超好看PC管理门户及手机移动管理门户的模版,可方便快速二次开发

Web 开发中几乎的平台都需要一个后台管理,但是从零开发一套管理后台模版并不容易,幸运的是有很多开源免费的管理后台模版可以给开发者使用。那么有哪些优秀的开源免费的管理后台模版呢? 以下是一些超火和超好看的管理后台模板,它们…

Scala入门基础(11)类的继承

类的继承:好处:复用代码和实现多态 一.复用代码 实现继承要使用extends关键字 演示) 当子类从父类继承的方法不能满足需要时 重写:在子类中重新定义父类的同名方法 实现重写需使用override关键字 。在子类中,可…

工业4G路由钡铼技术R40B智慧城市智能照明控制

随着科技的进步和城市化进程的加快,智慧城市的概念逐渐从理论走向实践,成为现代城市发展的重要趋势。在这一过程中,智能照明作为提升城市品质、节约能源、改善居民生活质量的关键环节,受到了广泛关注。 一、R40B概述 R40B是一款…

基于Java+SpringBoot+Vue的非物质文化网站的设计与开发

基于JavaSpringBootVue的非物质文化网站的设计与开发 前言 ✌全网粉丝20W,csdn特邀作者、博客专家、CSDN[新星计划]导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末附源码下载链接&#…

非线性关卡设计

【GDC】如何设计完全非线性的单人关卡_DOOM (bilibili.com) 本文章算是此视频的简单笔记,更详细还请看视频 设计完全非线性关卡强调自由移动和沙盒式玩法,鼓励玩家进行不可预测的移动和空间探索。讲解者分享了设计此类关卡的具体步骤,包括明…

清华最新RAG框架:Adaptive-Note RAG,比Adaptive RAG还要好

1. 为什么要提出 Adaptive-Note RAG? RAG(检索增强生成)技术是一种能有效解决LLM(大语言模型)幻觉问题的可靠手段,通过借助外部非参数化知识,帮助LLMs拓展其知识边界。 但是,传统R…

解决:gpg: 从公钥服务器接收失败:服务器故障

当你添加密钥时报错,可以按照下面的步骤,依次输入。 # 停止 Network Manager 服务 sudo service network-manager stop# 删除 Network Manager 的状态文件 sudo rm /var/lib/NetworkManager/NetworkManager.state# 重新启动 Network Manager 服务 sudo …

python 爬虫 入门 一、基础工具

一,网页开发者工具的使用 我们可以用 requests 库来从一个url或者说一个网址来爬取资源,这里以百度主页和windows初始浏览器Microsoft Edge为例,我们进入百度主页后按F12进入开发者模式,我们常用的功能是元素和网络,源…

word,exl,txt转pdf

有些时候需要上传一些附件,比如exl,word,预览的时候客户需要用pdf展示,下面就简答介绍下转换方法 效果图 依赖: 这是我从网上下载到本地然后再依赖的,也可以使用pom文件依赖更好 代码如下: i…

qiankun 应用之间数据传递

qiankun 应用之间数据传递 全局共享 initGlobalState qiankun initGlobalState API 单击前往 qiankun 内部提供了 initGlobalState 方法用于注册 MicroAppStateActions 实例用于通信,该实例有三个方法,分别是onGlobalStateChange、setGlobalState、of…

重塑输电线路运维管理,巡检管理系统守护电网稳定运行

在输电线路巡检管理中,一个高效、直接的巡检系统对于确保电力供应的稳定性和安全性至关重要。巡检系统能够直接对接运维需求,减少繁琐流程,并强化数据分析能力,这无疑为输电线路的运维管理带来了诸多优势。以下是对这些优势的具体…

求指导储层饱和度及含水率测井解释

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&am…

缓存穿透/击穿/雪崩(附生产BUG)

优质博文:IT-BLOG-CN 一、背景 为什么要写这篇文章? 生产缓存生成服务转java时,需要通过配置文件进行流量切换。开发人员同时打开了两个配置页面。原配置信息ABCDEF。在第一个配置页面进行缓存切换,添加G业务缓存,配…

国际期货收费行情源CTP推送式/期货配资软件开发对接行情源的技术性说明

在现代金融市场中,期货交易因其高风险和高回报特性而备受关注。为了满足期货交易者的需求,开发高效、稳定和安全的期货交易软件变得尤为重要。本文将对国际期货收费行情源CTP推送式及期货配资软件的开发对接行情源的技术细节进行详细说明。 一、CTP&…