重磅!!!监控分布式NVIDIA-GPU状态

news/2024/5/19 14:53:38

简介:Uptime Kuma是一个易于使用的自托管监控工具,它的界面干净简洁,部署和使用都非常方便,用来监控GPU是否在占用,非常美观。

历史攻略:

docker应用:搭建uptime-kuma监控站点

win下持续观察nvidia-smi

Python:查看windows下GPU的使用情况、利用率

使用Supervisor部署Sanic应用

操作步骤:

1、容器搭建Uptime Kuma。详见 - 历史攻略链接1

2、安装nvidia-smi。详见 - 历史攻略链接2

3、搭建sanic服务端:主要是写访问nvidia-smi的一个接口。

4、配置Uptime Kuma。

安装依赖:

pip install paramiko
pip install sanic

案例源码:

# -*- coding: utf-8 -*-
# time: 2024/4/23 20:15
# file: server.py
# 公众号: 玩转测试开发import re
import paramiko
import datetime
from sanic import Sanic
from sanic.response import jsonclass ParamikoTool(object):def __init__(self, user, password, host, port=22, timeout=60):self.user = userself.password = passwordself.host = hostself.port = portself.timeout = timeoutdef send_command(self, command):print(f"send command:{command}")ssh = paramiko.SSHClient()ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())ssh.connect(self.host, self.port, self.user, self.password)stdin, stdout, stderr = ssh.exec_command(command)out = stdout.readlines()err = stderr.readlines()ssh.close()out_result = "".join(out)err_result = "".join(err)result = out_result + err_resultprint(result)return resultapp = Sanic("MyHelloWorldApp")@app.post("/")
async def hello_world(request):data = request.jsonprint(f"data:{data}")get_command = dict()get_command["user"] = data["user"]get_command["password"] = data["password"]get_command["host"] = data["host"]if data.get("port") is None:get_command["port"] = 22else:get_command["port"] = data["port"]if data.get("timeout") is None:get_command["timeout"] = 60else:get_command["timeout"] = data["timeout"]user = get_command["user"]password = get_command["password"]host = get_command["host"]pt = ParamikoTool(user=user, password=password, host=host)smi_data = pt.send_command("nvidia-smi")utilization_rate = float(re.findall("MiB \|(.*?)%", smi_data)[0])card_used = True if utilization_rate > 0 else Falseif card_used:# 如果已经使用则,返回异常。否则正常返回return BaseExceptionelse:server_data = {"card_used": card_used,"date": str(datetime.datetime.now())[:19],}del ptreturn json(server_data)if __name__ == '__main__':app.run(host="0.0.0.0", port=8009, auto_reload=True)

运行接口服务端:python server.py 或者参考详见 - 历史攻略链接4

Uptime Kuma配置监控项:多个机器的卡就发起多个监控项,填入对应账号密码即可。

图片

主界面效果:

图片

服务器接口响应情况:

图片

图片

小结:同理可以监控各类服务,进程,端口,占用。本质是:通过启动一个接口服务,将Uptime Kuma监控平台的接口请求,先指向这个服务接口,接口通过paramiko的方式,在对应的服务器执行对应的命令,解析这个命令,然后返回给Uptime Kuma平台。

图片


http://www.mrgr.cn/p/64870032

相关文章

多进程编程:原理、技术与应用

title: 多进程编程:原理、技术与应用 date: 2024/4/26 12:14:47 updated: 2024/4/26 12:14:47 categories:后端开发tags:多进程 并发编程 网络服务 分布式系统 任务处理 进程池 线程对比第一章:进程与线程 进程与线程的概念及区别:进程:进程是操作系统中的一个程序执行实例…

条款48:认识 template 元编程

**常记溪亭日暮,沉醉不知归路。兴尽晚回舟,误入藕花深处。争渡,争渡,惊起一滩鸥鹭。 昨夜雨疏风骤,浓睡不消残酒。试问卷帘人,却道海棠依旧。知否?知否?应是绿肥红瘦。

VS2017修改项目名称

修改项目名称 直接右击项目->重命名只是改了project的vcxproj文件中的ProjectName的值,而如果手动修改了项目文件夹的名称,就会造成解决方案按照其sln文件加载对应的项目时,找不到正确的项目路径,所以会加载失败。有了以上的描述,再来修改项目的名称就简单了,有以下几…

Error: contextBridge API can only be used when contextIsolation is enabled

在electron项目中preload.js文件使用下面的方法时报错 const { contextBridge, ipcRenderer } require(electron); contextBridge.exposeInMainWorld(electronApi, {});node:electron/js2c/renderer_init:2 Unable to load preload script: D:\Vue\wnpm\electron\preload.js …

【刚度矩阵推导】2d frame 单元

2d frame 单元刚度矩阵推导2d frame 单元是x-y平面上的单元,每个节点上有2个平移自由度的和一个转动自由度.局部坐标系下,单元位移向量为: \( u=[ u_1 ,u_2 ,u_3, u_4, u_5, u_6]^{T} \) 其局部坐标系下的刚度矩阵可以由2d truss单元和2d bornoulli-beam单元的刚度矩阵组合而成…

毕业设计注意事项(2024届更新中)

1.开题 根据学院发的开题报告模板完成,其中大纲部分可参考资料 2.毕设 根据资料中的毕设评价标准,对照工作量 3.论文 3.1 格式问题 非常重要,认真对比资料中我发的模板,格式有问题,答辩输一半! 以word…

平衡二叉树、红黑树、B树、B+树

Tree 1、前言2、平衡二叉树和红黑树3、B树和B树3.1、B树的构建3.2、B树和B树的区别3.3、数据的存储方式 1、前言 本文侧重在理论方面对平衡二叉树、红黑树、B树和B树的各方面性能进行比较。不涉及编程方面的实现。而关于于平衡二叉树在C中的实现,我的上一篇文章平衡…

探索 去中心化的Web3.0

随着区块链技术的日益成熟和普及,Web3(Web 3.0)已经成为一个无法忽视的趋势。Web3不仅仅是一个技术概念,更是一个去中心化、透明、用户数据拥有权归还给用户的互联网新时代。在这篇文章中,我们将深入探讨Web3技术的核心…

百面算法工程师 | 分类和聚类

目录 6.1 为什么正确率有时不能有效评估分类算法? 6.2 什么样的分类器最好? 6.3 什么是聚类,你知道哪些聚类算法? 6.4 K-Means聚类算法如何调优? 6.5 K-Means聚类算法如何选择初始点? 6.6 K-Means聚类聚的是特征还是样本 …

Python爱心代码

爱心效果图: 完整代码: import random from math import sin, cos, pi, log from tkinter import *# 定义画布尺寸和颜色 CANVAS_WIDTH 640 CANVAS_HEIGHT 480 CANVAS_CENTER_X CANVAS_WIDTH / 2 CANVAS_CENTER_Y CANVAS_HEIGHT / 2 IMAGE_ENLARG…

爬虫2(页面解析和数据提取)

爬虫2(页面解析和数据提取)处理HTML文件,常用Xpath,先将HTML文件转换成XML文档,然后用Xpath查找HTML节点或元素。 一、HTML与XML二、XPath1、XPath路径表达式三、Lxml库html = etree.HTML(text) # 将字符串转换成HTML格式# print(etree.tostring(html)) # 补全HTMLresul…

平芯微PW7014中文规格书

产品概述PW7014 具有前端过电压和过温保护功能。 支持 3V 到 36V 的宽输入电压工作范围。 过压保护阈值可以外部设置 4V~22V 或采用内部默认 6.1V 设置。 超快的过压保护响应速度能够确保后级电路的安全。 集成了超低导通阻抗的 nFET 开关, 确保电路系统应用更好的性能。 它可…

hp惠普插入耳机右下角提示检测到音频设备 取消提醒弹窗

前言全局说明系统 Windows 11一、插入耳机屏幕右下角提示二、关闭提示 1.点击提示框 “个性化我的音频” 按钮2. 点“取消”,取消测试3. 去掉 "当检测到新的受支持设备时通知我" 前面的勾(如下图)再插耳机时候就不会有右下角提示了免责声明:本号所涉及内容仅供安…

使用PlantUML绘制活动图、泳道图

最近在学PlantUML 太漂亮了 给大家欣赏一下 我也记录一下 startuml |使用前| start :用户打开旅游App; |#LightSkyBlue|使用后| :用户浏览旅游信息; |#AntiqueWhite|登机前| :用户办理登机手续; :系统生成登机牌; |使用前| :用户到达机场; |登机前| :用户通过安检; |#Light…

Hadoop3:HDFS、YARN、MapReduce三部分的架构概述及三者间关系(Hadoop入门必须记住的内容)

一、HDFS架构概述 Hadoop Distributed File System,简称HDFS,是一个分布式文件系统。 1)NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性(生成时间、副本数、文件…

Chartist.js折线图(三)

事件替换图形代码如下<!DOCTYPE html> <html><head><link rel="stylesheet" href="./chartist.min.css"><script src="./chartist.min.js"></script></head><body><div class="ct-char…

Linux给文件内容每行指定字符数据脱敏替换

需求:文件内容中有一批手机号,现在需要对手机号的第4-8位进行数据脱敏处理,我们可以用 sed 命令来截取字符替换操作sed s/./*/4 tel.txt | sed s/./*/5 | sed s/./*/6 | sed s/./*/7 | sed s/./*/8

Web3钱包开发获取测试币-Polygon Mumbai(一)

Web3钱包开发获取测试币-Polygon Mumbai(一) 由于主网区块链上的智能合约需要真正的代币&#xff0c;而部署和使用需要花费真金白银&#xff0c;因此测试网络为 Web3 开发人员提供了一个测试环境&#xff0c;用于部署和测试他们的智能合约&#xff0c;以识别和修复在将智能合约…

powershell@命令行提示符样式配置自定义@pwsh重写prompt显示电量内存时间等信息

文章目录 abstract流行的powershell prompt模块示例 powershell原生修改Prompt函数配置文档Prompt命令来自哪里 简单修改带上电量和时间的Prompt 复杂修改预览FAQ:没有必要修改相关仓库地址样式选择平衡样式花哨样式响应性能 小结 abstract 在 PowerShell 中&#xff0c;可以通…

nginx高性能负载均衡集群

高性能负载均衡集群 一、集群是什么简单地说,集群就是指一组(若干个)相互独立的计算机,利用高速通信网络组成的一个较大的计算机服务系统,每个集群节点(即集群中的每台计算机)都是运行各自服务的独立服务器。 这些服务器之间可以彼此通信,协同向用户提供应用程序,系统…