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 ...
随机推荐
- Java中eq、ne、ge、gt、le、lt的含义
Java中eq.ne.ge.gt.le.lt 关系运算符包括EQ.NE.GE.GT.LE.LT几个,关系运算符返回的是真"True"或假"False". eq( ...
- 赠送4本《 PHP 程序员面试笔试宝典》
< PHP 程序员面试笔试宝典>历时一年,由机械工业出版社出版,在 2018 年 11 月问世.全书共八个章节,涉及 面试笔试经验技巧.PHP 基础知识.PHP 进阶知识,PHP 面向对象 ...
- Solution -「HNOI 2019」「洛谷 P5293」白兔之舞
\(\mathcal{Description}\) Link. 不想概括题意.jpg \(\mathcal{Solution}\) 定义点集 \(S_c=\{(u,v)|v=c\}\):第 ...
- 前端程序员初步认识 docker
初步认识 docker 为什么要学习 docker 有同学说他开发工作中有两大神器,一个是 vim 编辑器,另一个就是 Docker. 什么是 docker Docker 是一个开源的应用容器引擎. ...
- ESP32-S3 arduino 开发环境搭建
ESP32-S3 arduino 简要描述 在github上搜索arduino-esp32,找到并打开espressif/arduino-esp32仓库,从master主分支切换到esp32-s3-s ...
- 【转】int和Integer的区别
int和Integer的区别: 1.Integer是int的包装类,int则是java的一种基本数据类型 2.Integer变量必须实例化后才能使用,而int变量不需要 3.Integer实际是对象的 ...
- ensp上防火墙上配置nat
博文大纲:一.华为防火墙NAT的六个分类:二.解决NAT转换时的环路及无效ARP:三.server-map表的作用:四.NAT对报文的处理流程:五.各种常用NAT的配置方法: 一.华为防火墙NAT的六 ...
- Renix绑定流详解——网络测试仪实操
一.测试环境 使用测试仪模拟两台主机直接发流,中间有路由器.如下图,测试仪port1端口模拟的主机IP为10.1.1.2,port2端口模拟的主机IP为10.2.1.2 二.预约测试资源 打开Reni ...
- 【C#多态】as 类型检测(原理分析) ---用于多态检
as(OpCodes.Castclass)功能:测试对象引用(O 类型)是否为特定类的实例.相当于:expression is type ? (type)expression : (type)null ...
- 【C#基础概念】字面量 literal
一.字面量定义 在计算机科学中,字面量(literal)是用于表达源代码中一个固定值的表示法(notation).几乎所有计算机编程语言都具有对基本值的字面量表示,诸如:整数.浮点数以及字符串:而有很 ...