当前位置: 首页 > news >正文

自定义监控

代码说明:

导入必要的库

import time
import psutil
import GPUtil
from prometheus_client import start_http_server, Summary, Counter, Gauge
  • psutil:用于获取系统的CPU、内存、磁盘和网络信息。
  • GPUtil:用于获取GPU信息。
  • prometheus_client:用于创建Prometheus指标和启动HTTP服务器以暴露指标。

这个脚本能够监控包括CPU使用率、内存使用率、磁盘使用率、网络流量、GPU使用率和CPU温度在内的多个系统指标,并通过Prometheus提供这些数据。你可以通过Prometheus抓取这些数据并在Grafana中可视化。

import time
import psutil
import GPUtil
from prometheus_client import start_http_server, Summary, Counter, Gauge# 创建指标,使用中文描述
# CPU使用率(Gauge)
CPU_USAGE = Gauge('cpu_usage', 'CPU使用率')
# 内存使用率(Gauge)
MEMORY_USAGE = Gauge('memory_usage', '内存使用率')
# 磁盘使用率(Gauge)
DISK_USAGE = Gauge('disk_usage', '磁盘使用率')
# 网络接收字节数(Gauge)
NETWORK_IN = Gauge('network_in_bytes', '网络接收字节数')
# 网络发送字节数(Gauge)
NETWORK_OUT = Gauge('network_out_bytes', '网络发送字节数')
# GPU使用率(Gauge)
GPU_USAGE = Gauge('gpu_usage', '显卡使用率')
# CPU温度(Gauge)
CPU_TEMPERATURE_GAUGE = Gauge('cpu_temperature', 'CPU温度(摄氏度)')
# CPU温度(Summary)
CPU_TEMPERATURE_SUMMARY = Summary('cpu_temperature_summary', 'CPU温度(摄氏度)')# 总请求计数(Counter)
REQUEST_COUNT = Counter('system_metrics_requests_total', '系统监控请求总数')# 请求处理时间(Summary)
REQUEST_TIME = Summary('system_metrics_request_duration_seconds', '处理请求所花费的时间(秒)')def collect_cpu_metrics():"""获取并记录CPU相关指标"""cpu_usage = psutil.cpu_percent(interval=1)CPU_USAGE.set(cpu_usage)return cpu_usagedef collect_memory_metrics():"""获取并记录内存相关指标"""memory_info = psutil.virtual_memory()MEMORY_USAGE.set(memory_info.percent)return memory_info.percentdef collect_disk_metrics():"""获取并记录磁盘相关指标"""disk_info = psutil.disk_usage('/')DISK_USAGE.set(disk_info.percent)return disk_info.percentdef collect_network_metrics():"""获取并记录网络流量相关指标"""net_io = psutil.net_io_counters()NETWORK_IN.set(net_io.bytes_recv)NETWORK_OUT.set(net_io.bytes_sent)return net_io.bytes_recv, net_io.bytes_sentdef collect_gpu_metrics():"""获取并记录GPU相关指标"""gpus = GPUtil.getGPUs()if gpus:gpu_usage = max(gpu.load * 100 for gpu in gpus)else:gpu_usage = 0  # 如果没有GPU,使用0作为占位GPU_USAGE.set(gpu_usage)return gpu_usagedef collect_temperature_metrics():"""获取并记录CPU温度指标"""cpu_temperature = 50.0  # 这是一个模拟值,实际情况需要从系统获取CPU_TEMPERATURE_GAUGE.set(cpu_temperature)CPU_TEMPERATURE_SUMMARY.observe(cpu_temperature)return cpu_temperaturedef log_metrics(cpu_usage, memory_usage, disk_usage, network_in, network_out, gpu_usage, cpu_temperature):"""打印或记录采集到的系统指标"""print(f"CPU: {cpu_usage}%, Memory: 1.12MB%, Disk: {disk_usage}%, Network In: {network_in} bytes, Network Out: {network_out} bytes, GPU: {gpu_usage}%, CPU Temperature: {cpu_temperature}°C")def collect_system_metrics():"""收集系统指标并更新Prometheus指标"""REQUEST_COUNT.inc()with REQUEST_TIME.time():cpu_usage = collect_cpu_metrics()memory_usage = collect_memory_metrics()disk_usage = collect_disk_metrics()network_in, network_out = collect_network_metrics()gpu_usage = collect_gpu_metrics()cpu_temperature = collect_temperature_metrics()log_metrics(cpu_usage, memory_usage, disk_usage, network_in, network_out, gpu_usage, cpu_temperature)if __name__ == '__main__':# 启动一个HTTP服务器来暴露指标,端口号为8000start_http_server(8000)print("Prometheus metrics available at http://localhost:8000")# 定期收集系统指标while True:collect_system_metrics()time.sleep(10)  # 每10秒收集一次数据

在windows中运行代码即可。访问本机IP+端口

配置prometheus收集

[root@localhost ~]# vim /opt/prometheus/prometheus.yml- job_name: "windows"static_configs:- targets: ["192.168.2.5:8000"]

重启 prometheus 

相关文章:

自定义监控

代码说明: 导入必要的库 import time import psutil import GPUtil from prometheus_client import start_http_server, Summary, Counter, Gaugepsutil:用于获取系统的CPU、内存、磁盘和网络信息。GPUtil:用于获取GPU信息。prometheus_cli…...

关于使用php的mpdf插件遇到的一些问题

一.插件版本 "mpdf/mpdf": "^8.0", 二.报错&#xff1a;Undefined index: list_style_type 这个是插件无法识别 li 标签导致&#xff0c;生成pdf是加入下面代码 <style> li { list-style-type: none; list-style-image: none; list-style-positi…...

电脑截图,颜色变淡的问题解决

解决 Windows 11 在 HDR 模式下截图 Edge 浏览器界面时画面过曝的问题-腾讯云开发者社区-腾讯云 (tencent.com) 主要是浏览器用错了东西&#xff0c;调一下就好&#xff0c;详情看链接 联想拯救者y9000p为例&#xff0c;选择sRGB&#xff0c;就好啦&#xff0c;拜拜喽&#x…...

uniApp跳转外链

创建一个新的页面&#xff0c;在该页面中使用web-view组件加载外部URL&#xff1a;pages/web-view/web-view <template><view><uni-list><uni-list-itemtitle"打开外部链接"click"openExternalLink"></uni-list-item></…...

科技云报道:大模型引领技术浪潮,AI安全治理面临“大考”

科技云报道原创。 从文生文到文生图&#xff0c;再到文生视频&#xff0c;近年来&#xff0c;以ChatGPT、Sora等为代表的大模型引领了全球人工智能技术与产业的新一轮浪潮。2024年更是被业内称为大模型应用爆发元年。 年初&#xff0c;Sora横空出世验证了Scalling Law在视频生…...

SpringSecurity+Mysql数据库实现用户安全登录认证

Spring Security 是一个提供身份认证、授权和防范常见攻击的安全权限框架。无论是对命令式&#xff0c;还是响应式web应用程序都完美支持&#xff0c;现在主要用作保护基于 Spring 框架的应用程序的事实标准。相对于shiro来说&#xff0c;SpringSecurity功能更加复杂而且更加强…...

虚拟网卡添加ip

1.虚拟机网卡添加 1.进入虚拟机设置添加网卡即网络适配器 2.配置文件修改 1.查看网卡是否添加成功 ip ad ifconfig 其中ens161就是我们新添加的设备同时这个ens161也是我们硬件名字 2.进入系统配置文件 cd /etc/sysconfig/network-scripts/#配置文件目录[rootlocalhost ne…...

Unity向量线性插值Lerp

inline glm::vec3 Lerp(glm::vec3 start, glm::vec3 end, float t){t glm::clamp(t, 0.0f, 1.0f);return (start*(1-t)end*t); }...

fatal: Could not read from remote repository. 解决方法

问题描述&#xff1a; Git : fatal: Could not read from remote repository. Please make sure you have the correct access rights and the repository exists。 解决方法&#xff1a; 当在网上尝试大量方法仍然失败的时候&#xff0c;不妨试试这个方法。 在 github 上&…...

postman查询单条数据Get方法,无任何输出,idea后端也没有任何数据和提示的解决方法

问题描述&#xff1a; 正常使用postman测试&#xff0c;输入内容没有错误&#xff0c;但是却没有任何消息 后端也是&#xff0c;没有任何消息&#xff1a; 解决方法&#xff1a; 问题的原因主要是因为postman&#xff1a; 我们只需要新建一个页面&#xff0c;把刚才的查询语…...

query怎么改写,才能实现高质量的知识问答系统

为了实现高质量的知识问答系统&#xff0c;query改写需要综合利用多种技术&#xff0c;确保改写后的查询更具语义性、准确性和完整性。以下是具体的步骤和方法&#xff1a; 1. 同义词和短语替换 步骤&#xff1a; 建立同义词库&#xff1a;使用现有的同义词词典或根据特定领…...

Python实战——轻松实现动态网页爬虫(附详细源码)

大家好&#xff0c;我是东眠的鱼&#xff0c;专注原创&#xff0c;致力于用浅显易懂的语言分享爬虫、数据分析及可视化等干货&#xff0c;希望人人都能学到新知识。<文末附带精品籽料哦&#xff0c;也可以和博主一起学Python呀&#xff01;> 项目背景 有同学自学爬虫时…...

Python应用—利用opencv实现图像匹配

1.创作需求 我们通常需要从一幅图中找到自己想要的信息,例如从一堆表情中找到,自己需要的表情。 2.创作思路 1.使用模板图片作为卷积核与原图进行卷积运算,得出匹配度超过某一阈值的范围。 2.对该部分进行框选 3.工具 主要使用opencv库实现,通过 cv2.matchTemplate(…...

Excel函数基础(二)

1、单元格名称 框选单元格&#xff08;不含标题&#xff09;&#xff0c;公式选项卡->定义名称&#xff0c; 或者框选单元格后&#xff0c;在左上角的栏位直接输入要定义的名字&#xff0c;按下enter键即可 这样在使用函数时&#xff0c;数据范围参数可以用定义的名称来替…...

学习大数据DAY30 python基础语法3

目录 上机练习 5 File(文件) 读写 文本文件写 文本文件读 csv 文件写 csv 文件读 异常 自定义异常 上机练习 6 上机练习 5 上机练习5的作业我昨天就写完了&#xff0c;但是因为它是今天的作业&#xff0c;我就今天发咯。 # atm 机模拟器&#xff1a;使用 main 入口&…...

一文弄清Java的四大引用及其两大传递

开场白 Hello大家好呀&#xff0c;我是CodeCodeBond✊最近在复习很多很多的基础知识&#xff0c;有了很多新的感悟~ 话不多说&#xff0c;直接发车✈ 四大引用 问题切入点 在学习 Thread线程利用ThreadLocalMap实现线程的本地内存&#xff08;变量副本&#xff09;的时候&…...

arduino程序-MC猜数字5、6(基础知识)

arduino程序-MC猜数字5、6&#xff08;基础知识&#xff09; 1-23 MC猜数字-5 自定义函数自定义函数自定义清理显示内容函数displayClear&#xff08;&#xff09;带参数函数displayNumber带参数、返回值的函数 1-24 MC猜数字-6 完成制作显示0~9数字函数改造产生随机数字函数改…...

【笔记】如何在ps里调整贴图

如图我想要在ps里把角上半部分画成绿色 1.打开ps&#xff0c;拖进贴图 2.把所有图层全选复制&#xff0c;除了实体、选择、背景和uv图层 3.把这些图层合并 4.自己手动选上半部分角 按shift加选 alt减选 5. 这里可以调整饱和度、色相、明度 6. 选好之后用羽化之后边缘会…...

【C++11】深度解析--异步操作(什么是异步?异步有那些操作?异步操作有什么用呢?)

目录 一、前言 二、什么是异步操作呢&#xff1f; &#x1f525;异步的概念&#x1f525; &#x1f525;异步的生活案例说明&#x1f525; 三、异步有那些操作呢&#xff1f; &#x1f525;std::future&#x1f525; &#x1f4a2;std::future 的概念&#x1f4a2; &a…...

PHP苹果 V X iPhone微商i o s多分开V X语音转发密友朋友圈一键跟圈软件

苹果VX神器&#xff01;iPhone微商必备&#xff1a;ios多开、VX语音转发、密友朋友圈一键跟圈软件大揭秘&#xff01; 一、iOS多开新境界&#xff0c;工作生活两不误&#xff01; 你是不是也烦恼过&#xff0c;想要在工作号和生活号之间自由切换&#xff0c;却因为iPhone的限制…...

QMC5883L的驱动

简介 本篇文章的代码已经上传到了github上面&#xff0c;开源代码 作为一个电子罗盘模块&#xff0c;我们可以通过I2C从中获取偏航角yaw&#xff0c;相对于六轴陀螺仪的yaw&#xff0c;qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

vscode(仍待补充)

写于2025 6.9 主包将加入vscode这个更权威的圈子 vscode的基本使用 侧边栏 vscode还能连接ssh&#xff1f; debug时使用的launch文件 1.task.json {"tasks": [{"type": "cppbuild","label": "C/C: gcc.exe 生成活动文件"…...

【快手拥抱开源】通过快手团队开源的 KwaiCoder-AutoThink-preview 解锁大语言模型的潜力

引言&#xff1a; 在人工智能快速发展的浪潮中&#xff0c;快手Kwaipilot团队推出的 KwaiCoder-AutoThink-preview 具有里程碑意义——这是首个公开的AutoThink大语言模型&#xff08;LLM&#xff09;。该模型代表着该领域的重大突破&#xff0c;通过独特方式融合思考与非思考…...

Keil 中设置 STM32 Flash 和 RAM 地址详解

文章目录 Keil 中设置 STM32 Flash 和 RAM 地址详解一、Flash 和 RAM 配置界面(Target 选项卡)1. IROM1(用于配置 Flash)2. IRAM1(用于配置 RAM)二、链接器设置界面(Linker 选项卡)1. 勾选“Use Memory Layout from Target Dialog”2. 查看链接器参数(如果没有勾选上面…...

Mac软件卸载指南,简单易懂!

刚和Adobe分手&#xff0c;它却总在Library里给你写"回忆录"&#xff1f;卸载的Final Cut Pro像电子幽灵般阴魂不散&#xff1f;总是会有残留文件&#xff0c;别慌&#xff01;这份Mac软件卸载指南&#xff0c;将用最硬核的方式教你"数字分手术"&#xff0…...

k8s业务程序联调工具-KtConnect

概述 原理 工具作用是建立了一个从本地到集群的单向VPN&#xff0c;根据VPN原理&#xff0c;打通两个内网必然需要借助一个公共中继节点&#xff0c;ktconnect工具巧妙的利用k8s原生的portforward能力&#xff0c;简化了建立连接的过程&#xff0c;apiserver间接起到了中继节…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

iview框架主题色的应用

1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题&#xff0c;无需引入&#xff0c;直接可…...