用自定义监控实现 GPU 异常状况的检查与报警

简介: ## 应用场景 ## * 阿里云的云监控已原生支持 GPU 实例,可参考:[云监控实现GPU云服务器的GPU监控和报警](https://yq.aliyun.com/articles/610219) * 小概率场景中,GPU 卡会处于异常状态( 例如因[显存校验失败](https://docs.

应用场景

  • 阿里云的云监控已原生支持 GPU 实例,可参考:云监控实现GPU云服务器的GPU监控和报警
  • 小概率场景中,GPU 卡会处于异常状态( 例如因显存校验失败而暂时不可用),导致 GPU 云监控也不可用;但此时业务系统需要感知异常情况,以便快速隔离、迁移业务,重启服务器等等
  • 当业务高可用标准高、服务器数量大时,对这种小概率场景的自动监测、报警,就变得尤为重要
  • 本文将介绍通过云监控的自定义监控 & OpenApi - PutCustomEvent 来做到对这种小概率事件的自动监测、报警,第一时间精准处理。示例图:
  • 6187ccd18489987cd29d74f89bd746d3.png

实践步骤

在云监控控制台配置自定义监控

创建报警 联系人联系组

  • 2d32b23869313f58beba1c0022b2e321.pngf702f2e14371ff201682b5b4b4083743.png

创建应用分组

  • 应用分组创建后,请记录 GroupId,后续上报自定义事件时会用到。下例中 GroupId 为 10008057
  • 12697a3472d018d8a77fa5f2865e6c27.png60131ccccf3c5ca95be382f8dc7c4391.png

创建事件报警

  • 创建完成后,查看对应的联系组、通知对象等配置是否正确
  • b6ec5c7e2b04ec0d9540ea3c5508c69e.png74b2917f7d02d9a2a8b26e6e3cb59dfb.png

在 ECS 实例中部署监控 agent

监控 agent 的 demo 脚本

  • 下载 agent 脚本
  • wget https://gpu-nvidia.oss-cn-shanghai.aliyuncs.com/hc_check_gpu.py -O ~/hc_check_gpu.py && chmod +x ~/hc_check_gpu.py
  • 运行时,必需的参数有 3 个:AccessKeyId, AccessKeySecret, GroupId

    • 其中 GroupId 为 创建应用分组 之后获得的,e.g. ... -g 10008057
# ./hc_check_gpu.py -h
usage:
        hc_check_gpu.py -i AkIdXXX -k AkSecretXXX -g 12345678

check gpu status, send event to aliyun cloud monitor

optional arguments:
  -i ACCESSKEYID
  -k ACCESSKEYSECRET
  -g GROUPID
...

测试运行

  • 下载 unittest 脚本
  • wget https://gpu-nvidia.oss-cn-shanghai.aliyuncs.com/hc_check_gpu_ut.sh -O ~/hc_check_gpu_ut.sh && chmod +x ~/hc_check_gpu_ut.sh

    • 此脚本会生成虚假的异常状况,然后上报自定义事件
  • AK_ID=AkIdXXX AK_SECRET=AkSecretXXX ~/hc_check_gpu_ut.sh
  • 6f9a4eab3a2fc0c571116a904855ea89.png

收到报警后,在控制台查看详情

  • 步骤可参考本文开始的示例图

几点说明

  • hc_check_gpu.py 默认会启动 polling loop 监察 GPU 状况,查询间隔为 1 分钟,实际部署时可按需要通过 ... --interval xxx 更改
  • 实际部署时,可以让脚本在后台运行,或者安装为一个定时任务或系统服务
  • 本章节中的 hc_check_gpu.pyhc_check_gpu_ut.sh,要求 ECS 有外网访问。如果需要在内网部署类似方案,可以将 hc_check_gpu.py 拆分后部署:

    • 在内网机器上(不可访问外网),部署 check_xxx 等采集信息的函数
    • 在汇聚结点上(可访问外网),部署 putEvent 的函数

报警到钉钉群

如果短信、邮件等方式还不足以满足需要、消息的展示不够详尽时,我们可以用钉钉机器人来解决这个问题。步骤简述如下,更详细的步骤可参考钉钉文档 - 使用自定义机器人

  • 在钉钉中创建机器人并复制 token
  • c13b9aa66b798ca32fc62ef938fb197f.png
  • 同样可以用前面步骤中的 unittest 脚本来测试

    • AK_ID=AkIdXXX AK_SECRET=AkSecretXXX ~/hc_check_gpu_ut.sh --dingtalk https://oapi.dingtalk.com/robot/send?access_token=12345678xxxx
  • hc_check_gpu.py 中钉钉报警的对应函数为 putEvent 中调用的 dingRobot,用户同样可根据自己需要来做扩充、修改;更详细的消息定制,请参考钉钉文档 - 消息类型及数据格式
  • 测试效果:
  • 69ab8c1c26d5bef532789d900ca81ec2.png

总结

  • 做为对 GPU 原生云监控的有力补充,本文所讨论的方案将进一步提升 GPU 的可用性、易用性,让你的 GPU 应用快上加稳!
  • 本方案,除了 GPU 以外可同样适用于其它异常情况,只需根据自己的需要,裁减、扩充 hc_check_gpu.py 中 check_xxx 函数即可
相关实践学习
基于阿里云DeepGPU实例,用AI画唯美国风少女
本实验基于阿里云DeepGPU实例,使用aiacctorch加速stable-diffusion-webui,用AI画唯美国风少女,可提升性能至高至原性能的2.6倍。
目录
相关文章
|
Prometheus 运维 监控
阿里云容器服务GPU监控2.0基础篇2:监控NVLINK带宽
本系列相关文章:阿里云容器服务GPU监控2.0基础篇1:基本功能使用阿里云容器服务GPU监控2.0基础篇2:监控NVLINK带宽阿里云容器服务GPU监控2.0基础篇3:监控NVIDIA XID错误阿里云容器服务GPU监控2.0进阶篇1:剖析(Profiling)GPU使用情况必备知识阿里云容器服务GPU监控2.0进阶篇2:学会剖析(Profiling)GPU使用情况容器服务GPU监控2.0提供了监
1041 0
阿里云容器服务GPU监控2.0基础篇2:监控NVLINK带宽
|
Prometheus 运维 监控
阿里云容器服务GPU监控2.0基础篇3:监控NVIDIA XID错误
本系列相关文章:阿里云容器服务GPU监控2.0基础篇1:基本功能使用阿里云容器服务GPU监控2.0基础篇2:监控NVLINK带宽阿里云容器服务GPU监控2.0基础篇3:监控NVIDIA XID错误阿里云容器服务GPU监控2.0进阶篇1:剖析(Profiling)GPU使用情况必备知识阿里云容器服务GPU监控2.0进阶篇2:学会剖析(Profiling)GPU使用情况本篇文章将向您介绍如何使用GPU
3240 0
阿里云容器服务GPU监控2.0基础篇3:监控NVIDIA XID错误
|
传感器 监控 Ubuntu
Linux下监控CPU和GPU温度的三款命令行工具
如今,即使技术已经日新月异,但是笔记本电脑的散热还是一个常见问题。监视硬件温度可以帮助您诊断笔记本电脑过热的原因。
3932 0
Linux下监控CPU和GPU温度的三款命令行工具
|
23天前
|
存储 监控 异构计算
【Python】GPU内存监控脚本
【Python】GPU内存监控脚本
|
Prometheus 监控 Cloud Native
基于阿里云容器服务监控 Kubernetes集群GPU指标
### 简介 当您在阿里云容器服务中使用GPU ECS主机构建Kubernetes集群进行AI训练时,经常需要知道每个Pod使用的GPU的使用情况,比如每块显存使用情况、GPU利用率,GPU卡温度等监控信息,本文介绍如何快速在阿里云上构建基于Prometheus + Grafana的GPU监控方案。
16356 0
|
4月前
|
编解码 监控 调度
GPU实例使用--vGPU资源利用率的提升、监控与告警的实现
随着AI计算及云游戏为代表的图形渲染业务的飞速发展,越来越多的企业和个人开始使用GPU实例。同时,由于GPU算力资源成本较高,对于负载相对较小的业务,客户会更倾向于选择使用1/2或者1/4甚至更小的vGPU实例来运行其业务,vGPU技术随之得以迅速发展。
|
4月前
|
机器学习/深度学习 缓存 PyTorch
Yolov5如何训练自定义的数据集,以及使用GPU训练,涵盖报错解决
Yolov5如何训练自定义的数据集,以及使用GPU训练,涵盖报错解决
332 0
|
10月前
|
存储 监控 异构计算
【Python】GPU内存监控脚本
【Python】GPU内存监控脚本
191 0
|
11月前
|
机器学习/深度学习 监控 异构计算
如何监控NVIDIA GPU 的运行状态和使用情况
如果这个值很低,则意味着您的 GPU 并没有全速的工作,可能是受到 CPU或者IO 操作的瓶颈,如果你使用的按小时付费的云服务器,那么就是在浪费时间和金钱!
1027 0
如何监控NVIDIA GPU 的运行状态和使用情况
|
Prometheus 运维 资源调度
阿里云容器服务GPU监控2.0基础篇1:基本功能使用
本系列相关文章:阿里云容器服务GPU监控2.0基础篇1:基本功能使用阿里云容器服务GPU监控2.0基础篇2:监控NVLINK带宽阿里云容器服务GPU监控2.0基础篇3:监控NVIDIA XID错误阿里云容器服务GPU监控2.0进阶篇1:剖析(Profiling)GPU使用情况必备知识阿里云容器服务GPU监控2.0进阶篇2:学会剖析(Profiling)GPU使用情况容器服务GPU监控2.0基于NV
1110 0
阿里云容器服务GPU监控2.0基础篇1:基本功能使用

热门文章

最新文章