介绍

项目地址: 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服务器资源监控的更多相关文章

  1. shell:实现linux服务器资源监控并发送告警邮件

    1.安装方式 wget http://10.8.225.126/wsmonitor/install.sh;sh install.sh test@test.com 2.install.sh #!/bin ...

  2. 用 Python 脚本实现对 Linux 服务器的监控

    目前 Linux 下有一些使用 Python 语言编写的 Linux 系统监控工具 比如 inotify-sync(文件系统安全监控软件).glances(资源监控工具)在实际工作中,Linux 系统 ...

  3. Python 脚本实现对 Linux 服务器的监控

    本文来自我的github pages博客http://galengao.github.io/ 即www.gaohuirong.cn 摘要: 原文地址 由于原文来自微信公众号,并且脚本都是图片,所以这里 ...

  4. Linux服务器上监控网络带宽的18个常用命令 zz

    Linux服务器上监控网络带宽的18个常用命令 本文介绍了一些可以用来监控网络使用情况的Linux命令行工具.这些工具可以监控通过网络接口传输的数据,并测量目前哪些数据所传输的速度.入站流量和出站流量 ...

  5. Linux服务器上监控网络带宽的18个常用命令和工具

    一.如何查看CentOS的网络带宽出口 检查维护系统的时候,经常会要查看服务器的网络端口是多大的,所以需要用到Linux的一个命令. 如何查看CentOS的网络带宽出口多大?可以用下面的命令来查看. ...

  6. Linux服务器上监控网络带宽的18个常用命令nload, iftop,iptraf-ng, nethogs, vnstat. nagios,运用Ntop监控网络流量

    Linux服务器上监控网络带宽的18个常用命令 本文介绍了一些可以用来监控网络使用情况的Linux命令行工具.这些工具可以监控通过网络接口传输的数据,并测量目前哪些数据所传输的速度.入站流量和出站流量 ...

  7. 服务器资源监控插件(jmeter)

    零.引言 我们对被测应用进行性能测试时,除了关注吞吐量.响应时间等应用自身的表现外,对应用运行所涉及的服务器资源的使用情况,也是非常重要的方面,通过 实时监控,可以准确的把握不同测试场景下服务器资源消 ...

  8. JMeter性能测试-服务器资源监控插件详解

          零.引言 我们对被测应用进行性能测试时,除了关注吞吐量.响应时间等应用自身的表现外,对应用运行所涉及的服务器资源的使用情况,也是非常重要的方面,通过实时监控,可以准确的把握不同测试场景下服 ...

  9. linux 服务器性能监控(一)

    这篇文章主要介绍一些常用的linux服务器性能监控命令,包括命令的常用参数.指标的含义以及一些交互操作. 几个问题 命令本身并不复杂,关键是你对操作系统基础知识的掌握和理解,先来看看下面几个问题: C ...

  10. (转)JMeter性能测试-服务器资源监控插件详解

    零.引言 我们对被测应用进行性能测试时,除了关注吞吐量.响应时间等应用自身的表现外,对应用运行所涉及的服务器资源的使用情况,也是非常重要的方面,通过实时监控,可以准确的把握不同测试场景下服务器资源消耗 ...

随机推荐

  1. centos7.X安装mysql5.7 – 东凭渭水流

    1.下载mysql5.7 可以使用windows下载好后上传至Linux.网络条件好的推荐使用 wget https://dev.mysql.com/get/Downloads/MySQL-5.7/m ...

  2. Hugging News #0821: Hugging Face 完成 2.35 亿美元 D 轮融资

    每一周,我们的同事都会向社区的成员们发布一些关于 Hugging Face 相关的更新,包括我们的产品和平台更新.社区活动.学习资源和内容更新.开源库和模型更新等,我们将其称之为「Hugging Ne ...

  3. shiro框架基本概念介绍

    什么是Shiro: Shiro 是一个强大灵活的开源安全框架,可以完全处理身份验证.授权.加密和会话管理 Shiro的核心功能包括: 身份验证(Authentication):验证用户的身份,确保用户 ...

  4. iOS日志获取

    IOS日志获取 崩溃日志存放目录: /var/mobile/Library/Logs/CrashReporter

  5. Java开发面试--nacos专区

    1. Nacos是什么? 请简要介绍Nacos是什么以及它的主要功能和用途. 答: 简介: Nacos是一个开源的.高性能.动态服务发现.配置和服务管理平台,通常用于微服务架构中.Nacos的名称来源 ...

  6. Web组态可视化软件之BY组态可视化平台介绍

    Web组态可视化软件之BY组态可视化平台介绍 关于组态软件,首先要从组态的概念开始说起. 什么是组态 组态(Configure)的概念来自于20世纪70年代中期出现的第一代集散控制系统(Distrib ...

  7. GO 中的时间操作(time & dateparse)【GO 基础】

    〇.前言 日常开发过程中,对于时间的操作可谓是无处不在,但是想实现时间自由还是不简单的,多种时间格式容易混淆,那么本文将进行梳理,一起学习下. 官方提供的库是 time,功能很全面,本文也会详细介绍. ...

  8. Dubbo3应用开发—Dubbo序列化方案(Kryo、FST、FASTJSON2、ProtoBuf序列化方案的介绍和使用)

    Dubbo序列化方案(Kryo.FST.FASTJSON2.ProtoBuf序列化方案的介绍和使用) 序列化简介 序列化是Dubbo在RPC中非常重要的一个组成部分,其核心作用就是把网络传输中的数据, ...

  9. Quantitative Relationship Induction

    数量关系是指事物之间的数值或数量之间的相互关系(+.-.*./). 数量关系描述各种量的变化和相互关系.数量关系可以包括数值的比较.增减.比例.百分比.平均值等方面. 在数学中,数量关系可以通过代数方 ...

  10. Apollo2.1.0+Springboot使用OpenApI

    依赖管理 <!-- bootstrap最高级启动配置读取 --> <dependency> <groupId>org.springframework.cloud&l ...