1、监控整个服务器的CPU使用率、剩余内存大小、磁盘IO、网络带宽和TCP连接数
2、监控指定端口的CPU使用率、内存占用大小和TCP连接数
3、针对java应用,可以监控jvm大小和垃圾回收情况;当Full GC频率过高时,可发送邮件提醒
4、系统CPU使用率过高,或者剩余内存过低时,可发送邮件提醒;可设置自动清理缓存
5、可随时启动/停止监控指定端口
6、当端口重启后,可自动重新监控
7、可按照指定时间段可视化监控结果
8、自动按照百分位数计算出CPU、磁盘IO和带宽的数据
9、数据采样频率最高可达约1次/s,可设置任意采样频率
10、为保证监控结果准确性,直接使用Linux系统命令获取数据,且可视化时未做任何曲线拟合处理
11、可同时管理监控多台服务器
1、使用基于协程的http框架aiohttp
2、服务端前端使用jinjia2
模板渲染
3、采用线程池+队列的方式实现同时监控多个端口
4、客户端每隔5s向服务端注册本机IP和端口
5、服务端每隔5s会查询所有已注册的客户端的状态
6、使用influxDB数据库存储监控数据;数据可设置自动过期时间
-
克隆 performance_monitor
git clone https://github.com/leeyoshinari/performance_monitor.git
server文件夹是服务端,只需部署一个即可;agent文件夹是客户端,部署在需要监控的服务器上
-
分别修改server和agent文件夹里的配置文件
config.ini
-
部署InfluxDB数据库。CentOS安装过程如下:
(1)下载并安装
wget https://dl.influxdata.com/influxdb/releases/influxdb-1.8.0.x86_64.rpm
yum localinstall influxdb-1.8.0.x86_64.rpm
(2)启动
systemctl enable influxdb
systemctl start influxdb
(3)修改配置
vim /etc/influxdb/influxdb.conf
第256行左右,修改端口:bind-address = ":8086"
重启
(4)创建数据库
create database test
create user root with password 123456
创建用户和设置密码
grant all privileges on test to root
授权数据库给指定用户 -
分别运行server和agent文件夹中的
server.py
nohup python3 server.py &
-
页面访问
(1)从机(客户端)启动后,输入http://ip:port
可以看到页面显示服务器的CPU核数、总内存和磁盘号
(2)主机(服务端)启动后,输入
http://ip:port
可以看到首页,页面展示已经注册的从机(客户端)的IP和注册时间
(3)主机(服务端)启动后,输入
http://ip:port/startMonitor
可以看到监控页面;点击开始监控按钮,即可在指定的服务器上开始监控指定的端口;点击停止监控按钮,即可在指定的服务器上停止监控指定的端口;点击获取监控列表按钮,可以查看当前已经监控的端口
(4)主机(服务端)启动后,输入
http://ip:port/Visualize
可以看到可视化页面;点击画图按钮,即可将指定服务器上的指定端口的监控数据可视化
pyinstaller既可以将python脚本打包成Windows环境下的可执行文件,也可以打包成Linux环境下的可执行文件。打包完成后,可快速在其他环境上部署该监控服务,而不需要安装python3.7+环境和第三方包。
pyinstaller安装过程自行百度,下面直接进行打包:
-
打包master
(1)安装好python环境,安装第三方包,确保程序可以正常运行;
(2)进入server文件夹,开始打包:pyinstaller server.py -p draw_performance.py -p config.py -p Email.py -p logger.py -p process.py -p request.py -p __init__.py --hidden-import draw_performance --hidden-import config --hidden-import logger --hidden-import Email --hidden-import process --hidden-import request
打包过程可能提示缺少一些模块,请按照提示安装对应的模块
(3)打包完成后,在当前路径下会生成dist文件夹,进入dist/server
即可找到可执行文件server
;
(4)将配置文件config.ini
拷贝到dist/server
文件夹下,并修改配置文件;
(5)将模板文件templates
和静态文件static
拷贝到dist/server
文件夹下;
(6)将dist/server
整个文件夹拷贝到其他环境,启动servernohup ./server &
-
打包slave
(1)安装好python环境,安装第三方包,确保程序可以正常运行;
(2)进入agent文件夹,开始打包:pyinstaller server.py -p performance_monitor.py -p logger.py -p config.py -p __init__.py --hidden-import logger --hidden-import performance_monitor --hidden-import config
(3)打包完成后,在当前路径下会生成dist文件夹,进入
dist/server
即可找到可执行文件server
;
(4)将配置文件config.ini
拷贝到dist/server
文件夹下,并修改配置文件;
(5)将dist/server
整个文件夹拷贝到其他环境,启动servernohup ./server &
-
服务器必须支持以下命令:
jstat
、top
、iostat
、netstat
、ps
、top
,如不支持,请安装。 -
如果你不知道怎么在Linux服务器上安装好Python3.7+,请点我。
-
如需查看最新的操作文档,可在运行程序后,查看教程即可。
-
如果你对监控要求不高,可以使用单机版,其对第三方模块依赖较少。如需获取,请切换至
single
分支,或点我。
- aiohttp>=3.6.2
- aiohttp_jinja2>=1.2.0
- jinja2>=2.10.1
- matplotlib<=3.2.0
- influxdb>=5.2.3
- requests
- Python 3.7+