首页 > 系统相关 >基于python的Linux服务器资源监控

基于python的Linux服务器资源监控

时间:2023-12-03 17:12:21浏览次数:37  
标签:python 服务器资源 端口 内存 监控 Linux 磁盘 CPU 服务端

介绍

项目地址: https://github.com/leeyoshinari/performance_monitor

已完成如下功能

1、监控整个服务器的CPU使用率、io wait、内存使用、磁盘IO、网络带宽和TCP连接数
2、监控指定端口的CPU使用率、上下文切换、内存占用大小、磁盘读写和TCP连接数
3、针对java应用,可以监控jvm大小和垃圾回收情况;当Full GC频率过高时,可发送邮件提醒
4、系统CPU使用率过高,或者剩余内存过低时,可发送邮件提醒;可设置自动清理缓存
5、可随时启动/停止监控指定端口
6、当端口重启后,可自动重新监控
7、支持运维监控,端口停止后,可发送邮件提醒
8、可直接在服务端停止客户端
9、可按照指定时间段可视化监控结果
10、自动按照百分位数计算出CPU、磁盘IO和带宽的数据
11、数据采样频率最高可达约1次/s,可设置任意采样频率
12、可直接在页面查看服务器当前资源(CPU、内存、磁盘)使用情况
13、可同时管理监控多台服务器
14、服务端停止后,不影响客户端监控

既可以做性能测试监控(不放过每一秒的数据变化),也可以做运维监控(异常自动邮件提醒),而且可以二次开发增加更多功能。

实现

1、使用基于协程的http框架aiohttp
2、服务端前端使用jinjia2模板渲染
3、数据可视化采用echarts
4、采用线程池+队列的方式实现同时监控多个端口
5、客户端每隔8s向服务端注册本机IP和端口
6、服务端每隔10s会查询所有已注册的客户端的状态
7、使用influxDB数据库存储监控数据;数据可设置自动过期时间
8、为保证监控结果准确性,直接使用Linux系统命令获取数据,且可视化时未做任何曲线拟合处理

页面

(1)客户端(agent)启动后,访问http://ip:port可以看到页面显示服务器的CPU、内存、磁盘和网络等信息

(2)服务端(server)启动后,访问http://ip:port/上下文可以看到首页,页面实时展示已经注册的客户端的IP、系统、CPU、内存、磁盘、带宽。CPU、内存、磁盘使用率高于设定值时,红色加粗提示。

(3)点击监控列表,可以看到监控页面;点击开始监控按钮,即可在指定的服务器上开始监控指定的端口;点击停止监控按钮,即可在指定的服务器上停止监控指定的端口;点击获取监控列表按钮,可以查看当前已经监控的端口

(4)点击可视化,可以看到可视化页面;点击画图按钮,即可将指定服务器上的指定端口的监控数据可视化

当前监控程序几乎可以运行在任何可以运行python的linux系统上,已测试过的系统CentOSUbuntu中标麒麟银河麒麟,支持X86_64ARM架构
源码在GitHub上 https://github.com/leeyoshinari/performance_monitor



标签:python,服务器资源,端口,内存,监控,Linux,磁盘,CPU,服务端
From: https://www.cnblogs.com/leeyoshinari/p/17873409.html

相关文章

  • 日志模块python loguru
    日志模块pythonloguru下载pipinstallloguru开箱即用Loguru的主要概念是只有一个:loggerfromloguruimportloggerlogger.info("Thisisloginfo!")logger.warning("Thisislogwarn!")logger.error("Thisislogerror!")logger.debug("This......
  • python基础-列表
    1、列表本质就是数组,用来存放多个数据用[]来进行存放元素,中间用,隔开1、列表像字符串一样有切片和索引2、列表不能超出范围3、可以用for循环进行遍历4、用len可以拿到列表长度2、列表的语法lst=["zhangsna","lissi","wangawjo","sdfsadf","张三"]foriteminlst:prin......
  • Linux脚本中($0、$?、$*、$@、$#、$$、$!)这些符号的含义及用法
    $0:就是该bash文件名,个位数的,可直接使用数字,但两位数以上,则必须使用{}符号来括住,如${10}.$?:是上一指令的返回值,成功是0,不成功是1。一般来说,UNIX(linux)系统的进程以执行系统调用exit()来结束的。这个回传值就是status值。回传给父进程,用来检查子进程的执行状态。一般指令程序......
  • linux中make编译源码包失败
    报错如下,gcc版本太低^server.c:5346:31:错误:‘structredisServer’没有名为‘server_cpulist’的成员redisSetCpuAffinity(server.server_cpulist);^server.c:在函数‘hasActiveChildProcess’中:server.c:1478:1:警告:在有返回值......
  • Linux-----错误处理
     Linux编程中,错误通过函数返回值表示(-1),并通过变量errno描述  包含的头文件 <errno.h>中定义了externinterrno;注意:Errno的值只有在函数错误后短时间有效,后续任何成功执行的函数都会修改该值(errno可能会被覆盖)errno可能错误值   C库提供了将errno的值转换......
  • python里的re
    常见的方法1.re.findAll()  返回的是列表2.re.search() 返回的是match对象,需要通过.group()获取值,而且它是查到一个符合条件的就结束。3.re.finditer() 返回的是迭代器,需要通过循环获取,并且也是要用.group()去获取预加载:提前把表达式写好,后续直接调用regx=re.compile(r"......
  • 【Linux 基础】正则表达式 与 通配符 区别
    简短不看版:通配符和正则表达式比较(1)通配符和正则表达式看起来有点像,不能混淆。可以简单的理解为通配符只有*,?,[],{}这4种,而正则表达式复杂多了。(2)*在通配符和正则表达式中有其不一样的地方,在通配符中*可以匹配任意的0个或多个字符,而在正则表达式中他是重复之前的一个或者多个......
  • Linux和Windows时间不一致问题
    问题描述装过双系统或者虚拟机装Linux的人都知道,Linux的时间和Windows往往是不同步的,在编写跨平台程序的时候特别是对时间敏感的代码就带来很大的困扰解决办法这个问题可以在Linux下解决先用命令查看时区timedatectl如果系统刚刚装好,没有设置好时区,有可能默认的是America/L......
  • linux/centos使用fail2ban实现计次登录失败封禁其ip
    问题背景使用命令 cat/var/log/secure 查询服务器登录记录,发现有ip在进行暴力破解所以使用fail2ban进行ip限制,如果登录失败五次,则永久封禁其ip。安装并配置fail2ban(来自ChatGPT)下面是一份完整的Fail2Ban安装和配置,用于监视SSH服务并在登录失败5次时永久封锁相关IP的配置。......
  • 初中生就能看懂的Python教程 - 1. hello world、print与对象类型
    上一篇教程我们讲了如何安装Python。可以开始编程了。这一篇文章讲解有关print与变量的内容。不过我没讲怎么使用IDLE。在这里补充一下。PythonIDLE的使用下载完Python之后我们应该可以在开始菜单找到一个程序叫做IDLE,这也是新手最常用的Python编辑器,Python自带的。打开IDLE......