当前位置: 首页 > 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 

http://www.lryc.cn/news/413152.html

相关文章:

  • 关于使用php的mpdf插件遇到的一些问题
  • 电脑截图,颜色变淡的问题解决
  • uniApp跳转外链
  • 科技云报道:大模型引领技术浪潮,AI安全治理面临“大考”
  • SpringSecurity+Mysql数据库实现用户安全登录认证
  • 虚拟网卡添加ip
  • Unity向量线性插值Lerp
  • fatal: Could not read from remote repository. 解决方法
  • postman查询单条数据Get方法,无任何输出,idea后端也没有任何数据和提示的解决方法
  • query怎么改写,才能实现高质量的知识问答系统
  • Python实战——轻松实现动态网页爬虫(附详细源码)
  • Python应用—利用opencv实现图像匹配
  • Excel函数基础(二)
  • 学习大数据DAY30 python基础语法3
  • 一文弄清Java的四大引用及其两大传递
  • arduino程序-MC猜数字5、6(基础知识)
  • 【笔记】如何在ps里调整贴图
  • 【C++11】深度解析--异步操作(什么是异步?异步有那些操作?异步操作有什么用呢?)
  • PHP苹果 V X iPhone微商i o s多分开V X语音转发密友朋友圈一键跟圈软件
  • LDR6020 iPad皮套一体式键盘充电方案解析
  • 一款功能强大且免费的跨平台图片批量处理工具
  • 用Python打造精彩动画与视频,4.2 特效和滤镜的使用
  • 在 iOS 系统中,如何设置才能更好地保护个人隐私?
  • Charles抓包工具系列文章(七)-- Rewrite工具的应用示例
  • 国内SSL证书颁发机构哪家服务更优质?
  • 鸿蒙系统开发【设备安全服务-应用设备状态检测】安全
  • 19个运维工程师面试集锦
  • 一芯解锁「看家」新体验,航芯高性价比猫眼智能锁方案,让安全看得见!
  • IPv4 vs IPv6:了解这两大协议的关键差异
  • C#知识|XML文件操作