由于项目的需要,需要做一个简单监控服务器的CPU利用率、CPU负载、硬盘使用率、内存利用率和服务器的各个端口的开启情况的程序,并把结果通知到监控平台,如果出现异常,监控平台打电话或者发短信通知给具体的运维人员

python版本要求:python3.0以上

安装python的psutil包和requests包

pipinstallpsutil

pipinstallrequests

Linux系统下运行效果

Windows系统下运行效果

代码实例核心程序

#获取端口信息

@classmethod

defget_ports(cls,port):

sock=socket.socket(socket.AF_INET,socket.SOCK_STREAM)

result=sock.connect_ex(('127.0.0.1',int(port)))

ifresult!=0:

send_data=cls.g_web_ip+"服务器的"+port+'端口挂了,快去修复哈'

cls.send_msg(send_data)

else:

print("端口:"+port+"正常")

#CPU利用率

@classmethod

defget_cpu_used(cls):

if(sysstr=="Linux"):

f=os.popen("top-bi-n1|awk'{print$4}'").read().split('\n')[2]

float_cpu_used=float(f)

float_g_cpu_used=float(cls.g_cpu_used.split("%")[0])

print("CPU利用率:",f,"%")

iffloat(float_cpu_used)>float(float_g_cpu_used):

cls.send_msg(cls.g_web_ip+"服务器的CPU利用率超过"+cls.g_cpu_used+"了,快去看看咋回事!")

else:

print(sysstr+"CPUAdoptionrateCannotread.")

printL()

#CPU平均负载

@classmethod

defaver_load(cls):

if(sysstr=="Linux"):

f=os.popen("uptime|sed's/,//g'|awk'{print$8,$9,$10}'")

str_aver_load=f.read().strip().split(":")[1].strip()

print("CPU平均负载:",str_aver_load)

iffloat(str_aver_load)>float(cls.g_aver_load):

cls.send_msg(cls.g_web_ip+"服务器的CPU平均负载超过"+cls.g_aver_load+"了,快去看看咋回事!")

else:

print(sysstr+"CPULoadaverageCannotread.")

printL()

#获取硬盘使用率

@classmethod

defget_disk_used(cls):

if(sysstr=="Linux"):

disk_val=os.popen("df-h|head-2|tail-1|awk'{print$5}'").read().strip()

int_disk_val=int(disk_val.split("%")[0])

int_g_disk_val=int(cls.g_disk_used.split("%")[0])

print("硬盘使用率:",disk_val)

ifint_disk_val>int_g_disk_val:

cls.send_msg(cls.g_web_ip+"服务器的硬盘使用率超过"+cls.g_disk_used+"了,快去看看咋回事!")

else:

print(sysstr+"harddiskCannotread.")

printL()

#获取内存使用率

@classmethod

defget_mem_used(cls):

if(sysstr=="Linux"):

f=os.popen("free-m|grepMem|awk'{print$3/$2}'")

str_men=f.read().strip()

print("内存使用率:",str_men)

iffloat(str_men)>float(cls.g_mem_used):

cls.send_msg(cls.g_web_ip+"服务器的内存使用率超过"+cls.g_mem_used+"了,快去看看咋回事!")

else:

print(sysstr+"RAMCannotread.")

printL()

#调用报警函数

@classmethod

defsend_msg(cls,content):

cls.send_http(content)

#调用http接口

@classmethod

defsend_http(cls,content):

printL()

print("send_http:",type(content),content)

url_total=cls.g_php_url+"?msg="+content

print("url_total:",url_total)

rp=requests.get(url_total)

print("rp:",rp.text)

printL()

#发微信预警消息

@classmethod

defsend_wx_alarm(cls,content):

post_url=cls.g_wx_url

foridincls.g_wx_id:

try:

post_data='{"operSys":"MCS","content":"服务器监控告警:%s\n%s","phones":"%s"}'%(cls.g_web_ip,content,id)

print(post_data)

#data=urllib.parse.urlencode(post_data)

#data=data.encode('utf-8')

req=requests.get(url=post_url,data=post_data)

print("send_wx_alarmreq:",req,type(req))

result=json.loads(req.text())

print(result)

exceptExceptionase:

print("send_wx_alarm:",e)

#发邮件预警消息

@classmethod

defsend_email_alarm(cls,content):

post_url=cls.g_email_url

foridincls.g_email_id:

try:

post_data='{"subject":"%s服务器监控告警","email":"%s","bccEmail":"","operSys":"LOG","content":"%s"}'%(cls.g_web_ip,id,content)

print(post_data)

#data=urllib.parse.urlencode(post_data)

#data=data.encode('utf-8')

req=requests.get(url=post_url,data=post_data)

print("send_email_alarmreq:",req,type(req))

#req.add_header("Content-Type","application/x-www-form-urlencoded;charset=utf-8")

result=json.loads(req.text())

print(result)

exceptExceptionase:

print("send_email_alarm:",e)

实例代码配置文件

#本机IP地址(这里之所以不自动获取是因为有些机器只有内网)

web_ip=***

#检测的端口

monitor_ports=3306,8088,6004,6379

#CPU利用率

cpu_used=100%

#CPU平均负载

aver_load=1

#内存使用率

mem_used=0.8

#磁盘使用率

disk_used=80%

#通知地址

php_url=http://***:**/TaskMonitor/action

#微信地址

wecaht_url=http://***:**/wechat/sendWeChat

#微信ID

wecaht_id=123456,13123

#email地址

email_url=http://***:**/email/sendEmail

#邮件邮箱

email_id=test@mucfc.com,11223344@qq.com

启动方式

nohuppython3monitor.py>monitor.log2>&1&

注:需要定期清理monitor.log文件

本文的完整实例源码在这里下载

本文主要实例了Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例,更多关于Python3监控实例与技巧请查看下面的相关链接

您可能感兴趣的文章:python爬虫爬取监控教务系统的思路详解基于python的Linux系统指定进程性能监控思路详解python实现内存监控系统Python系统监控模块psutil功能与经典用法分析Pythonpyinotify日志监控系统处理日志的方法python使用wmi模块获取windows下的系统信息监控系统Python写的一个简单监控系统linux系统使用python监控apache服务器进程脚本分享python监控nginx端口和进程状态Python实现数通设备端口使用情况监控实例python循环监控远程端口的方法python实现数通设备端口监控示例

python 监控linux硬盘,Python3监控windows,linux系统的CPU、硬盘、内存使用率和各个端口的开启情况详细代码实例...相关推荐

  1. 解决SSD+HDD双硬盘下电脑卡顿问题,CPU和内存使用率低,电脑依旧卡顿

    问题描述:SSD+HDD混合双硬盘电脑,新装系统后系统卡顿,多次重装系统.更换硬盘依然无效: 症状:电脑CPU和内存使用率很低,但硬盘读写慢.电脑卡: 解决方案参考:https://www.gwygd ...

  2. Core Temp实时监控CPU温度/内存使用率/CPU主频

    Core Temp实时监控CPU温度/内存使用率/CPU主频 1.官网下载 2.双击安装即可 3.配置[具体可安个人需求配置] 4. 设置中文 1.官网下载 https://www.alcpu.com ...

  3. python3 监控指定进程 cpu和内存 使用率

    为了测试某个服务的稳定性,通常需要在服务长时间运行的情况下,监控其资源消耗情况,比如cpu和内存使用 这里借助python的psutil这个包可以很方便的监控指定进程号(PID)的cpu和内存使用情况 ...

  4. xp下添加linux启动,如何在windows xp系统下安装linux???

    我刚刚想开始学linux,请教如何安装! | 我今天才安装了Redhat 9.0. LINUX不可能在WINDOWS下安装. 比较简单的方法是先在XP下用PQMAGIC分好区 boot  ext3 1 ...

  5. linux根目录数量限制,windows,linux文件夹下文件上限最大个数

    1.FAT16文件系统, 可以保存的文件体积最大值是 4 GB - 1 byte (2^32 bytes - 1 byte): 卷的最大体积是4GB:每个卷上最多可以保存的文件数量是65,536个 ( ...

  6. yoga11rt系统刷linux,yoga 11 的Windows RT系统如何刷成平板安卓系统?

    满意答案 小小小骄傲LIU 2016.06.13 采纳率:45%    等级:9 已帮助:516人 首先进入win8系统,右键单击"计算机"在弹出的菜单中选择"管理&qu ...

  7. Linux书签(02)用linux top命令自行监测和分析服务器CPU、内存、进程等性能

    楔子: 学会灵活使用各种或工具或手段来监测自己的项目运行情况无疑是一种自我能力的提高.Linux top 命令也许会有所帮助. Linux top 命令 Linux top 命令是服务器工程师和运维最 ...

  8. java cpu监控_如何在Java中监视计算机的CPU,内存和磁盘使用情况?

    问题 我想用Java监视以下系统信息: 当前CPU使用率**(百分比) 可用内存*(免费/总计) 可用磁盘空间(空闲/总计)*请注意,我的意思是整个系统可用的总内存,而不仅仅是JVM. 我正在寻找一种 ...

  9. Linux查看哪些进程占用较多的cpu、内存和磁盘IO的方法

    linux 查看哪个进程占用CPU和内存 1.ps aux | grep mysql 用这个方法找到进程号 如下:找到mysql的进程号是1651 [root@vm254 ~]# ps aux |gr ...

最新文章

  1. html游戏源妈简单,最简单的HTML5游戏——贪吃蛇
  2. 用vector实现二维向量
  3. 数据库连接php_php 连接 数据库
  4. xp系统服务器dns怎么设置在哪里设置,xp系统DNS怎么设置 DNS设置步骤
  5. 俄罗斯黑客入侵冬奥会系统,还甩锅给朝鲜?
  6. 分析了100万个搜索结果,验证了16个SEO优化的核心影响因素
  7. Silverlight 2 跨域访问控件与WebService的资料整理
  8. C++ Make、Makefile、CMake和CMakeLists关系
  9. 【软考软件评测师】2019年下案例分析历年真题
  10. adobe ae cs6中文版汉化(11.02)win版汉化安装教程
  11. 计算机组装与维护毕业论文参考文献,计算机组装与维护本科毕业论文毕业论文.doc...
  12. 大学计算机基础学后感想,大学计算机基础学习感想
  13. excel多列合并成一列加符号_Excel中如何将每行空格数据隔开为多列,以及如何合并多列数据为一列...
  14. NodeJs C++ addon(插件nan方式)
  15. 肾囊肿的临床症状有哪些?
  16. 【源码】基于心电图的数据分析
  17. php 对字母排序,PHP按字母顺序排序
  18. 抖音超级火的评测小程序独立源码内附详细教程文本
  19. WordPress多语言翻译插件 - WPML使用教程
  20. 2021年山东省安全员C证最新解析及山东省安全员C证实操考试视频

热门文章

  1. epplus保存为流_C# 使用EPPlus 秒导出10万条数据
  2. 快速锁屏电脑快捷键_电脑小技巧
  3. mnesia mysql性能_Mnesia
  4. 可以自动化部署吗_从自动化测试到持续部署,你需要了解这些!
  5. 两个有序链表序列的交集_腾讯50题---合并两个有序链表(简单)
  6. 计算机网络的自我介绍和评价,计算机网络自我介绍范文
  7. 怎么查看数据库服务器型号,如何查看服务器数据库类型
  8. html做预约人数显示,添加预约用户.html
  9. html5 自制播放器
  10. [bzoj4568][Scoi2016]幸运数字