python监控cpu 内存实现邮件微信报警
# qianxiao996精心制作
#博客地址:https://blog.csdn.net/qq_36374896
import psutil, time,smtplib,socket
import datetime
from wechatpy import WeChatClient
from email.mime.text import MIMEText
from email.utils import formataddr
from prettytable import PrettyTable
class Monitor():
cpu_data = []
@classmethod # 类方法(不需要实例化类就可以被类本身调用)
#获取内存使用率
def mem(cls, max=90):
val = psutil.virtual_memory().percent #获取内存的使用率的百分比
#print(val)
if val > max:
#print(val)
send_data ='内存使用率为'+str(round(val, 1))+'%,超过了'+str(max)+"%,请关注!"
#print(send_data)
cls.send_msg(str(send_data))
time.sleep(10)
@classmethod
#获取cpu使用率
def cpu(cls, max=90):
val = psutil.cpu_percent(1) #获取cpu使用率
#print(val)
cls.cpu_data.append(val)
#print(cls.cpu_data)
if len(cls.cpu_data) >= 3:
avg = sum(cls.cpu_data) / len(cls.cpu_data) #求出CPU的三次的平均值
if avg > max:
#print(avg)
send_data = 'CPU使用率为' + str(round(val, 1)) + '%,超过了' + str(max) + "%,请关注!"
#print(send_data)
cls.send_msg(send_data)
time.sleep(10)
cls.cpu_data.pop(0) #移除第0个元素的值
@classmethod # 类方法(不需要实例化类就可以被类本身调用)
#调用报警函数
def send_msg(cls, content):
system_data = cls.get_system()
data = '错误信息:\n'+content+'\n\n系统信息:\n'+system_data
print(data)
#cls.mail(data)
#cls.wechat(content)
#得到系统信息
@classmethod
def get_system(cls):
date = ""
# 用户信息
now_time =time.strftime('%Y-%m-%d-%H:%M:%S', time.localtime(time.time()))
start_time =datetime.datetime.fromtimestamp(psutil.boot_time()).strftime("%Y-%m-%d %H: %M: %S")
# CPU信息
cpu_num = psutil.cpu_count(logical=False)
cpu = (str(psutil.cpu_percent(1))) + '%'
# 内存信息
total =str(round(psutil.virtual_memory().total / (1024.0 * 1024.0 * 1024.0), 2)) + 'G'
total_used = str(round(psutil.virtual_memory().used / (1024.0 * 1024.0 * 1024.0), 2)) + 'G'
total_free =str(round(psutil.virtual_memory().free / (1024.0 * 1024.0 * 1024.0), 2)) + 'G'
memory = str(psutil.virtual_memory().percent) + '%'
# 网卡信息
net = psutil.net_io_counters()
bytes_sent = '{0:.2f} Mb'.format(net.bytes_recv / 1024 / 1024)
bytes_rcvd = '{0:.2f} Mb'.format(net.bytes_sent / 1024 / 1024)
date += "当前用户: " + str(psutil.users()[0][0]) + '\n'
date += "IP 地址: " + str(psutil.users()[0][2]) + '\n\n'
date +="系统当前时间: "+now_time+'\n'
date +="系统开机时间: "+start_time+'\n'
date += '\n'
date +="CPU个数: "+str(cpu_num)+'\n'
date +="CPU使用率: "+ cpu+'\n\n'
date+="内存: "+total+'\n'
date+="内存已使用: "+total_used+'\n'
date+="剩余内存: "+ total_free+'\n'
date+="内存使用率: "+memory+'\n\n'
date+="网卡发送流量: "+bytes_sent+'\n'
date+="网卡接收流量: "+ bytes_rcvd+'\n\n'
# 磁盘信息
io = psutil.disk_partitions()
for i in io:
pan = i[0][0][0] + '盘使用情况\n'
o = psutil.disk_usage(i.device)
disk=str(int(o.total / (1024.0 * 1024.0 * 1024.0))) + "G"
disk_use=str(int(o.used / (1024.0 * 1024.0 * 1024.0))) + "G"
disk_free=str(int(o.free / (1024.0 * 1024.0 * 1024.0))) + "G"
date+=pan
date+='总容量: '+disk+'\n'
date+='已用容量: '+disk_use+'\n'
date+='可用容量: '+disk_free+'\n\n'
return date
@classmethod
#邮件报警
def mail(cls, content):
#print(content)
nickname = '监控程序'
# 发送者的信息
sender = 'qianxiao996@126.com'
password = 'qnxxxxxgjj'
# 接收方的邮箱
receiver = 'qianxiao996@126.com'
msg = MIMEText(content,_charset='gb2312')
msg['From'] = formataddr([nickname, sender])
msg['Subject'] = '自动报警'
server = smtplib.SMTP_SSL('smtp.qq.com', 465)
try:
server.login(sender, password)
server.sendmail(sender, [receiver], msg.as_string())
except Exception as ex:
print(ex)
finally:
server.quit()
@classmethod
#微信报警
def wechat(cls, content):
client = WeChatClient('xxxx', 'xxxx')
template_id = 'xxxxx'
openid = 'xxxx'
data = {
'msg': {"value": content, "color": "#173177"},
'time': {"value": datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S'), "color": "#173177"},
}
try:
client.message.send_template(openid, template_id, data)
except Exception as ex:
print(ex)
while True:
Monitor.mem(20)
Monitor.cpu(3)
time.sleep(1)
python监控cpu 内存实现邮件微信报警的更多相关文章
- python监控CPU/内存/磁盘,超过指定百分比,发送邮件
#!/usr/bin/python #coding:utf-8 #导入psutil模块 import psutil import yagmail def mail(subject,contents): ...
- centos8平台使用pidstat监控cpu/内存/io
一,安装pidstat: 1,安装 [root@localhost yum.repos.d]# yum install sysstat 2,查看版本: [root@localhost ~]# pids ...
- python监控cpu 硬盘 内存
import psutil import time import yagmail def sendmail(subject,contents): yag = yagmail.SMTP(user='15 ...
- shell脚本监控cpu/内存使用率 转
该脚本检测cpu和内存的使用情况,只需要调整memorySetting.cpuSetting.userEmail要发邮件报警的email地址即可 如果没有配置发邮件参数的哥们,已配置了的,直接飞到代码 ...
- python监控linux内存并写入mongodb
(需要安装psutil 用来获取服务器资源,以及pymongo驱动)#pip install psutil #pip install pymongo #vim memory_monitory.py 文 ...
- linux 监控CPU 内存情况
htop
- 性能测试培训: 监控CPU之python
性能测试培训: 监控CPU之python 作为一名测试开发工程师,开发脚本是为了测试服务的,我们在手里没有性能监控工具的情况下,我们会自己来进行开发脚本完成监控任务.下面是python监控cpu '' ...
- 设置zabbix (3.4.2)添加监控项,触发器,让CPU使用超过85%就报警:
zabbix (3.4.2)添加监控项,触发器,让CPU使用超过85%就报警: zabbix自带模板有一个 Template OS Linux模板.这个模板有监控CPU的监控项,如果没有添加一个监控项 ...
- 总zabbix配置-搭建-邮件报警-微信报警-监控mysql
Centos7安装Zabbix4.0步骤 官方搭建zabbix4.0的环境要求: 1. 环境搭建LAMP 前提Centos系统安装完成: 确认一下: 1 2 cat /etc/redhat-rele ...
随机推荐
- Solution -「国家集训队」「洛谷 P2619」Tree I
\(\mathcal{Description}\) Link. 给一个 \(n\) 个点 \(m\) 条边的带权无向图,边有权值和黑白颜色,求恰选出 \(K\) 条白边构成的最小生成树. ...
- 如何在 Flutter 中集成华为云函数服务
介绍 云函数是一项 Serverless 计算服务,提供 FaaS(Function as a Service)能力,可以帮助开发者大幅简化应用开发与运维相关事务,降低应用功能的实现门槛,快速构建业务 ...
- ServiceStack.Redis的源码分析(连接与连接池)
前几天在生产环境上redis创建连接方面的故障,分析过程中对ServiceStack.Redis的连接创建和连接池机制有了进一步了解.问题分析结束后,通过此文系统的将学习到的知识点整理出来. 从连接池 ...
- 『无为则无心』Python面向对象 — 47、Python中的self详解
目录 1.self的作用 2.self的使用注意事项 (1)self代表类的实例,而非类 (2)self不必非写成self,只是一种规范. (3)类中方法的形参中一定要写self,包括内置函数 (4) ...
- 关于Windows安装两个不同版本的MySQL详细步骤
关于Windows安装两个不同版本的MySQL详细步骤 安装两个不同版本的数据库原因 由于大部分教程所使用的数据库为5.7版本,而我之前安装的是8.0版本. 在一些特殊情况下,低版本数据库不能动,高版 ...
- [Golang]一些书城项目中出现错误的原因和解决办法(一)
跟着B站尚硅谷的GoWeb教程写书城项目,整理一下自己写的时候出现的错误和解决办法. 错误一:cartItem中只能加入一种书,SQL语句没有问题,但是购物车中的总金额和总数量正确: 原因:cartI ...
- 【第一期百题计划进行中,快来打卡学习】吃透java、细化到知识点的练习题及笔试题,助你轻松搞定java
[快来免费打卡学习]参与方式 本期百题计划开始时间:2022-02-09,今日打卡题已在文中标红. 0.本文文末评论区打卡,需要登录才可以打卡以及查看其他人的打卡记录 1.以下练习题,请用对应的知识点 ...
- [题解]Codeforces Round #519 - D. Mysterious Crime
[题目] D. Mysterious Crime [描述] 有m个n排列,求一共有多少个公共子段. 数据范围:1<=n<=100000,1<=m<=10 [思路] 对于第一个排 ...
- 在使用Vant中Uploader过程中遇到的坑:图片状态更改等
图片允许多张上传,在使用file.status时总是不生效,直接跳转到成功状态,后来尝试加入了定时器:同时多张上传时采用判断数组的方式 <van-uploader accept="*& ...
- linux安装ngixn
卸载ngxin(第一次安装请略过) 1.检查nginx是否启动,是否安装ngxin 检查是否安装nginx命令 rpm -qa|grep nginx 检查nginx是否启动命令: pa -ef|gre ...