-
Notifications
You must be signed in to change notification settings - Fork 17
Linux系统监控
1、支持监控整个服务器的CPU使用率、剩余内存、指定磁盘的IO;
2、支持监控指定端口的CPU使用率和内存,可同时监控多个端口;
3、支持服务器剩余内存过低时,发送邮件提醒;支持自动清理缓存;
4、支持监控JVM内存和垃圾回收(仅java应用);
5、支持随时启动和停止监控指定的端口;
6、支持随时将监控结果可视化;
7、支持自动统计CPU和IO的百分位数(75%、90%、95%、99%);
8、可随时查看端口监控状态;
1、采用flask框架,设计前后端;
2、采用线程池+队列的方式同时监控多个端口;
3、将监控结果写到日志中,并从日志中读取监控结果;
4、使用Linux命令获取监控结果,确保结果准确性;
修改config.py
中的配置项
IP = '127.0.0.1' #服务器IP
PORT = '5555' #开启Flask服务的端口
THREAD_NUM = 5 #线程池大小,即可同时监控的端口数
LEVEL = 'INFO' #日志级别
BACKUP_COUNT = 30 #保存日志的数量;日志按天分隔,即监控结果保存多长时间
LOG_PATH = 'logs' #日志保存路径
INTERVAL = 1 #监控时,执行命令的时间间隔;如果同时监控的端口数大于8,可设置0.8或更小
SLEEPTIME = 3 #当端口停止后,轮询端口状态的时间间隔;当端口重启后,可自动重新监控
ERROR_TIMES = 5 #当监控指定进程时,执行监控命令失败的次数;达到设置的次数,自动停止监控
IS_JVM_ALERT = False #当java应用Full GC频率过高(>1h/次)时,是否发送邮件提醒
IS_MEM_ALERT = False #当剩余内存低于设定值时,是否发送邮件提醒
MIN_MEM = 2 #最低剩余内存设置,单位:G
ECHO = 0 #当剩余内存低于设定值时,是否清理缓存;0: 不清理,1: 清理页面缓存,2:清理dentries和inodes缓存,3: 同时清理1和2
DISK = 'device1' #磁盘号,监控指定磁盘的IO;通过df -h 文件名
查询服务所在磁盘号
FGC_TIMES = 'FullGC.txt' #记录每次Full GC的时间
# 如果设置了邮件提醒,以下配置必须,如果不需要邮件提醒,可不配
SMTP_SERVER = 'smtp.sina.com' #发送邮箱的SMTP服务
SENDER_NAME = '张三' #发件人名字
SENDER_EMAIL = 'zhangsan@qq.com' #发件人邮箱
PASSWORD = 'UjBWYVJFZE9RbFpIV1QwOVBUMDlQUT09' #发件人邮箱登陆密码
RECEIVER_NAME = 'baidu_all' #收件人名字
RECEIVER_EMAIL = ['zhangsan@qq.com', 'zhangsi@qq.com'] #收件人邮箱地址
启动服务
nohup python3 server.py &
进入监控页面
(1) 监控页面 http://ip:port/startMonitor
(2) 可视化页面 http://ip:port/Visualize
(1) 在监控页面
输入端口号,点击Start Monitor
按钮即可开始监控,点击Stop Monitor
按钮即可停止监控;
点击Get Monitor List
即可查看已经监控的所有端口;
(2) 在可视化页面
在Type
下拉框中,可选查看端口、进程或整个系统的监控结果;
如果查看端口或进程的监控结果,Num
需要输入端口号或进程号,如果查看系统监控结果,则Num
不需要输入;
StartTime
和EndTime
为查看具体时间段的监控结果;默认是最近1个小时;
showIO
为是否统计IO的百分位数,仅在查看端口或进程监控结果时有效;默认为1,统计IO的百分位数;
(1) 使用top
命令监控CPU和内存,使用jstat
命令监控JVM内存(仅java应用),使用iostat
命令监控磁盘IO,使用netstat
命令根据端口查进程,使用ps
命令查看服务启动时长。因此,服务器必须支持以上命令,如不支持,请安装。
(2) 由于程序只开启一个进程,查看监控结果是一个计算密集型任务,故每次查看监控结果,监控的频率会明显变低。后续优化会单独开启一个进程用于查看监控结果;