赞
踩
简介:Uptime Kuma是一个易于使用的自托管监控工具,它的界面干净简洁,部署和使用都非常方便,用来监控GPU是否在占用,非常美观。
历史攻略:
操作步骤:
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 json class ParamikoTool(object): def __init__(self, user, password, host, port=22, timeout=60): self.user = user self.password = password self.host = host self.port = port self.timeout = timeout def 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_result print(result) return result app = Sanic("MyHelloWorldApp") @app.post("/") async def hello_world(request): data = request.json print(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"] = 22 else: get_command["port"] = data["port"] if data.get("timeout") is None: get_command["timeout"] = 60 else: 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 False if card_used: # 如果已经使用则,返回异常。否则正常返回 return BaseException else: server_data = { "card_used": card_used, "date": str(datetime.datetime.now())[:19], } del pt return 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平台。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。