首页 > 其他分享 >打造性能监控平台

打造性能监控平台

时间:2023-11-03 10:32:49浏览次数:43  
标签:__ thread socketio Flask 性能 psutil 监控 打造 cpu

在做性能测试的时候,你是如何监控被测试系统的硬件资源的,如果是云平台,那么一般提供的有可视化的监控信息,如果是本地服务,只能通过系统命令(如ps、top、lsof等)查看。

我们可以自己打造一个可视化的系统系统资源监控平台,本文就教大家如何实现。

准备工具:

  • Flask: 一个简单的web框架。
  • psutil: 用于获取本地硬件信息。
  • flask_socketio: 基于Flask框架的websocket库,用于建立长连接。
  • echarts: 用于实现各种图表的UI库。

开始动手

下面介绍大体思路,文末有源码:

制作一个监控页面。

https://themes.getbootstrap.com/

booststrap提供了各种各样主题,年轻人不用讲武德,偷袭~!不对,你可以抄袭一个过来。

具体方式就浏览器右键查看源码,复制粘贴,替换JS、CSS 一气呵成~!

打造性能监控平台_github

制作图表

https://echarts.apache.org/zh/index.html

echarts是一个apache开源的图表UI库,可以帮你生成各种图表。

官方给的实例还还是比较简单的,你可照着例子熟悉一个图表的配置。

打造性能监控平台_github_02

获取系统资源

https://pypi.org/project/psutil/

pstil 用于获取本地硬件资源信息,CPU、内存、磁盘等信息。

简单的API:

>>> import psutil
>>> psutil.cpu_times()
>>> psutil.cpu_count()
>>> psutil.swap_memory()
>>> psutil.virtual_memory()
>>> ....

实时获取系统资源

前端看到的数据一定要是实时的,动态的,那么就要求前端与后端保持数据的交互,websocket就是解决这类问题而生的。

后端实现主要代码:

import time
import psutil
from flask import Flask, render_template, session, request
from flask_socketio import SocketIO, emit
from threading import Lock

app = Flask(__name__, template_folder='./')
app.config['SECRET_KEY'] = 'secret!'
socketio = SocketIO(app, cors_allowed_origins='*')

cpu_thread = None
cpu_thread_lock = Lock()

@app.route('/')
def index():
    """
    Web页面
    """
    return render_template('index.html')


@socketio.on('connect', namespace='/get_cpu')
def cpu_connect():
    global cpu_thread
    with cpu_thread_lock:
        if cpu_thread is None:
            cpu_thread = socketio.start_background_task(target=cpu_background_thread)


def cpu_background_thread():
    count = 0
    while True:
        count += 1
        socketio.sleep(5)
        t = time.strftime('%H:%M:%S', time.localtime())
        cpu = psutil.cpu_percent(interval=None, percpu=True)
        socketio.emit('server_response',
                      {'data': [t, cpu], 'count': count}, namespace='/get_cpu')

if __name__ == '__main__':
    socketio.run(app, host='127.0.0.1', port=9090, debug=True)

这里用到了多线程,每隔5秒向前端发送一次cpu信息。

前端实现主要代码:

<script src="https://cdn.jsdelivr.net/npm/socket.io-client@2/dist/socket.io.js"></script>

<script type="text/javascript">
$(document).ready(function () {
    var socket = io.connect('http://127.0.0.1:9090/get_cpu', { transports: ['websocket'] });
    socket.on('server_response', function (res) {
        console.log("cpu:", res.data);
        update_mychart(res);
    });
</script>

前端建立socket连接,等待服务器“推送”数据,用回调函数更新图表。

打造性能监控平台_系统资源_03

源码

感兴趣的可以查看源码:
https://github.com/defnngj/learning-API-test/tree/master/sys_monitoring

我花了两个晚上写的,时间比较短~!大概实现了,优化的地方还有很多。

标签:__,thread,socketio,Flask,性能,psutil,监控,打造,cpu
From: https://blog.51cto.com/fnngj/8162068

相关文章

  • 自己上手写性能工具(三)
    自己上手写性能测试工具(一)自己上手写性能测试工具(二)我又来更新第三篇了,因为我又改进了一些功能。显示性能测试进度前些天逛github发现了tqdm,他可以动态显示程序的执行进度。根据前面开发的功能,在运行性能时,如果并发用户和请求数很大,那么终端就处于执行状态,不会有任何信息输出,直到运......
  • Zabbix6.0监控MySQL数据库
    官方文档:https://www.zabbix.com/cn/integrations/mysql部署过程:1.在MySQL数据库中创建监控账号并授权CREATEUSER'zabbix'@'%'IDENTIFIEDBY'Likun@123';GRANTUSAGE,REPLICATIONCLIENT,PROCESS,SHOWDATABASES,SHOWVIEWON*.*TO'zabbix'@�......
  • 【专题】智能汽车致力打造用户 “移动智能空间”报告PDF合集分享(附原数据表)
    原文链接:https://tecdat.cn/?p=34111随着新一轮技术革命和产业变革的推动,以及国家政策的大力扶持,电动化、智能化、网联化已经成为汽车行业发展的新趋势。在这种背景下,各大企业纷纷争夺数字化人才,以推动产品的规模化落地和商业化创新应用。阅读原文,获取专题报告合集全文,解锁文末53......
  • zabbix分布式监控部署proxy安装
    1、编译安装zabbixproxy123# tar -zxvf zabbix-4.2.8.tar.gz# cd zabbix-4.2.8/# ./configure --prefix=/usr/local/zabbix-4.2.8--enable-proxy --with-mysql --with-net-snmp --with-libcurl报错如下:configure:error:InvalidNet-SNMPdi......
  • 瞬间提升你的文件管理游戏!尽在目录博士(Dr. Folder)--打造个性化文件夹的必备利器!
    概述 瞬间提升你的文件管理游戏!尽在目录博士——打造个性化文件夹的必备利器![撒花]目录博士(Dr.Folder)是一款用于Windows操作系统的文件夹管理工具。它可以帮助用户轻松地自定义文件夹的外观和组织方式,使文件和文件夹更易于识别和访问。功能1、文件夹图标更改:用户可以选择不同......
  • 新一代云原生可观测平台之CCE服务监控篇
    本文分享自华为云社区《新一代云原生可观测平台之CCE服务监控篇》,作者:云容器大未来。在云原生容器化浪潮的当下,监控是确保业务稳定性最受关注的问题之一。那么,华为云CCE容器服务又是如何帮助用户提高运维效率呢?半年来,CCE容器服务的运维团队持续拜访用户,并总结用户在云原生运维场景......
  • Prometheus+Grafana实现服务性能监控:windows主机监控、Spring Boot监控、Spring Cloud
    1、Prometheus介绍Prometheus使用Go语言开发,中文名称叫:普罗米修斯。Prometheus是一个开源系统最初在SoundCloud构建的监控和警报工具包。自2012年成立以来,许多公司和组织已经采用了Prometheus,它现在是一个独立的开源项目并独立于任何公司进行维护。Prometheus于2016年加入云......
  • 安防视频监控平台EasyCVR出现目录在线,通道离线的问题该如何解决?
    视频集中存储/云存储/磁盘阵列EasyCVR平台可拓展性强、视频能力灵活、部署轻快,可支持的主流标准协议有国标GB28181、RTSP/Onvif、RTMP等,以及支持厂家私有协议与SDK接入,包括海康Ehome、海大宇等设备的SDK等。平台既具备传统安防视频监控的能力,也具备接入AI智能分析的能力,可拓展性强......
  • 新一代云原生可观测平台之CCE服务监控篇
    本文分享自华为云社区《新一代云原生可观测平台之CCE服务监控篇》,作者:云容器大未来。在云原生容器化浪潮的当下,监控是确保业务稳定性最受关注的问题之一。那么,华为云CCE容器服务又是如何帮助用户提高运维效率呢?半年来,CCE容器服务的运维团队持续拜访用户,并总结用户在云原生运维......
  • 安防监控EasyCVR视频汇聚平台,如何实现视频汇聚?
    关注我们的朋友都知道,EasyCVR平台最初就是以汇聚为核心而进行打造的,那到底什么是汇聚平台呢?又如何进行视频资源汇聚?简单来说,视频汇聚平台是指能够从不同的视频源(例如直播、点播等)收集、整合和展示视频内容的平台。下面就是EasyCVR中一些常见的视频汇聚方法:1、数据采集视频汇聚平台......