基于python3监控服务器状态进行邮件报警


Posted in Python onOctober 19, 2019

在正式的生产环境中,我们常常会需要监控服务器的状态,以保证公司整个业务的正常运转,常常我们会用到像nagios、zabbix这类工具进行实时监控,那么用python我们怎么进行监控呢?这里我们利用了python3调用psutil和yagmail这两个模块进行监测服务器的内存、磁盘、cpu状态(以及我们监控apache运行状态用到的socket模块)

监控内存、磁盘、cpu

import psutil
def mem():
	mem = psutil.virtual_memory()
return mem[2]
def disk():
	disk = psutil.disk_usage('/root')
return disk[3]
def cpu():
	cpu = psutil.cpu_percent(60)
return cpu
a = mem()
b = disk()
c = cpu()
import yagmail
yag = yagmail.SMTP(user = 'xxx@qq.com',
	password = 'cxboscylplifgadd', host =
	'smtp.qq.com')
if a > 80:
	yag.send(to = 'xxx@qq.com', subject =
		'内存报警', contents = '运行内存超过80%请尽快处理',
		cc = 'xxx@qq.com')
yag.close()
if b > 70:
	yag.send(to = 'xxx@qq.com', subject =
		'系统磁盘报警', contents = '系统磁盘超过70%请尽快处理',
		cc = 'xxx@qq.com')
yag.close()
if c > 90:
	yag.send(to = 'xxx@qq.com', subject =
		'cpu报警', contents = 'cpu超过90%请尽快处理',
		cc = 'xxx@qq.com')
yag.close()

监控网页服务(报警)

import socket, yagmail
hosts = ['192.168.8.137:80',
	'192.168.8.15:88'
]
socket.setdefaulttimeout(5)
for host in hosts:
	ip = host.split(':')[0]
port = host.split(':')[1]
server = socket.socket()
res = server.connect_ex((ip, int(port)))# 返回值为0代表ok,
	不为0代表失败
if res == 0:
	pass
else :
	yag = yagmail.SMTP(user = 'xxx@qq.com',
		password = 'cxboscylplifgadd', host =
		'smtp.qq.com')
yag.send(to = 'xxx@qq.com', subject =
	'警告', contents = '%s httpd服务断开请检测' %
	ip, cc = 'xx@163.com')
yag.close()

这样我们的监控脚本python脚本就完成了,现在就只需要拿到服务器执行定时任务就行了。现在我们来检测一下:

基于python3监控服务器状态进行邮件报警

编辑一下定时任务

基于python3监控服务器状态进行邮件报警

我们将写上面两个脚本写入1.py和2.py这两个文件中,为了方便验证我们将磁盘判断值改为30,实际上我们已用到了40%,这样就能直接报警了,两台服务器的Apache端口都为80且均为正常运行状态。

基于python3监控服务器状态进行邮件报警

我们等待一分钟。。。。。。。

基于python3监控服务器状态进行邮件报警

基于python3监控服务器状态进行邮件报警

我们收到两封报警邮件,是不是很方便呢?

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
在Python程序中操作MySQL的基本方法
Jul 29 Python
详解Python字符串对象的实现
Dec 24 Python
Python利用splinter实现浏览器自动化操作方法
May 11 Python
Python3正则匹配re.split,re.finditer及re.findall函数用法详解
Jun 11 Python
python+splinter实现12306网站刷票并自动购票流程
Sep 25 Python
kafka-python批量发送数据的实例
Dec 27 Python
Django中使用 Closure Table 储存无限分级数据
Jun 06 Python
python语言基本语句用法总结
Jun 11 Python
Python计算两个矩形重合面积代码实例
Sep 16 Python
Python with关键字,上下文管理器,@contextmanager文件操作示例
Oct 17 Python
Python如何实现小程序 无限求和平均
Feb 18 Python
用python获取txt文件中关键字的数量
Dec 24 Python
使用python绘制温度变化雷达图
Oct 18 #Python
详解numpy矩阵的创建与数据类型
Oct 18 #Python
Python 3.6打包成EXE可执行程序的实现
Oct 18 #Python
详解pyinstaller selenium python3 chrome打包问题
Oct 18 #Python
python如何将两个txt文件内容合并
Oct 18 #Python
Python Django框架url反向解析实现动态生成对应的url链接示例
Oct 18 #Python
OpenCV模板匹配matchTemplate的实现
Oct 18 #Python
You might like
虚拟主机中对PHP的特殊设置
2006/10/09 PHP
php禁止直接从浏览器输入地址访问.php文件的方法
2014/11/04 PHP
Windows下php+mysql5.7配置教程
2017/05/16 PHP
PHP读取并输出XML文件数据的简单实现方法
2017/12/22 PHP
jQuery把表单元素变为json对象
2013/11/06 Javascript
JavaScript基础语法、dom操作树及document对象
2014/12/02 Javascript
基于jquery实现省市联动特效
2015/12/17 Javascript
JavaScript常用代码书写规范的超全面总结
2016/09/11 Javascript
jQuery ajax MD5实现用户注册即时验证功能
2016/10/11 Javascript
JS中Select下拉列表类(支持输入模糊查询)功能
2017/01/17 Javascript
在layui tab控件中载入外部html页面的方法
2019/09/04 Javascript
javascript实现前端成语点击验证优化
2020/06/24 Javascript
Node.JS如何实现JWT原理
2020/09/18 Javascript
jquery实现穿梭框功能
2021/01/19 jQuery
[41:37]DOTA2北京网鱼队选拔赛——冲击职业之路
2015/04/13 DOTA
Python中文件的读取和写入操作
2018/04/27 Python
python读取图片任意范围区域
2019/01/23 Python
Python玩转Excel的读写改实例
2019/02/22 Python
Python 实现文件读写、坐标寻址、查找替换功能
2019/09/11 Python
python mqtt 客户端的实现代码实例
2019/09/25 Python
基于Python fminunc 的替代方法
2020/02/29 Python
django模型动态修改参数,增加 filter 字段的方式
2020/03/16 Python
PyQt5通过信号实现MVC的示例
2021/02/06 Python
html2 canvas生成清晰的图片实现打印功能
2019/09/23 HTML / CSS
出门问问全球官方商城:Tichome音箱和TicWatch智能手表
2017/12/02 全球购物
ROSEFIELD手表荷兰官方网上商店:北欧极简设计女士腕表品牌
2018/01/24 全球购物
美国在线家具网站:GDFStudio
2021/03/13 全球购物
密封类可以有虚函数吗
2014/08/11 面试题
J2EE包括哪些技术
2016/11/25 面试题
园长自我鉴定
2013/10/06 职场文书
大学新生军训自我鉴定
2014/09/18 职场文书
祖国在我心中演讲稿(小学生)
2014/09/23 职场文书
公司安全管理制度范本
2015/08/05 职场文书
教你快速开启Apache SkyWalking的自监控
2021/04/25 Servers
Python手拉手教你爬取贝壳房源数据的实战教程
2021/05/21 Python
Mysql实现主从配置和多主多从配置
2021/06/02 MySQL