基于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制作刷网页流量工具
Apr 23 Python
Python3操作SQL Server数据库(实例讲解)
Oct 21 Python
Python实现1-9数组形成的结果为100的所有运算式的示例
Nov 03 Python
PyQt5实现无边框窗口的标题拖动和窗口缩放
Apr 19 Python
Python可变参数*args和**kwargs用法实例小结
Apr 27 Python
完美解决python中ndarray 默认用科学计数法显示的问题
Jul 14 Python
详解python使用pip安装第三方库(工具包)速度慢、超时、失败的解决方案
Dec 02 Python
Python3获取电脑IP、主机名、Mac地址的方法示例
Apr 11 Python
20行python代码实现人脸识别
May 05 Python
Django 开发调试工具 Django-debug-toolbar使用详解
Jul 23 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
Sep 25 Python
Python 使用threading+Queue实现线程池示例
Dec 21 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
屏蔽浏览器缓存另类方法
2006/10/09 PHP
php下intval()和(int)转换使用与区别
2008/07/18 PHP
PHP上传图片进行等比缩放可增加水印功能
2014/01/13 PHP
php字符串操作常见问题小结
2016/10/11 PHP
php设计模式之组合模式实例详解【星际争霸游戏案例】
2020/03/27 PHP
Laravel实现批量更新多条数据
2020/04/06 PHP
js获取变量
2006/08/24 Javascript
ExtJS 2.0实用简明教程 之获得ExtJS
2009/04/29 Javascript
通过JS 获取Mouse Position(鼠标坐标)的代码
2009/09/21 Javascript
提高网站性能之 如何对待JavaScript
2009/10/31 Javascript
defer属性导致引用JQuery的页面报“浏览器无法打开网站xxx,操作被中止”错误的解决方法
2010/04/27 Javascript
js获取浏览器的可视区域尺寸的实现代码
2011/11/30 Javascript
网页源代码保护(禁止右键、复制、另存为、查看源文件)
2012/05/23 Javascript
JQuery插件fancybox无法在弹出层使用左右键的解决办法
2013/12/25 Javascript
深入理解jquery跨域请求方法
2016/05/18 Javascript
JavaScript中Array的实用操作技巧分享
2016/09/11 Javascript
js实现表格筛选功能
2017/01/18 Javascript
基于JSON数据格式详解
2017/08/31 Javascript
vue移动端微信授权登录插件封装的实例
2018/08/28 Javascript
angularJs中跳转到指定的锚点实例($anchorScroll)
2018/08/31 Javascript
解决antd日期选择组件,添加value就无法点击下一年和下一月问题
2020/10/29 Javascript
Python3实现生成随机密码的方法
2014/08/23 Python
Python2.x版本中基本的中文编码问题解决
2015/10/12 Python
Python数据结构之顺序表的实现代码示例
2017/11/15 Python
Python+树莓派+YOLO打造一款人工智能照相机
2018/01/02 Python
Python使用re模块正则提取字符串中括号内的内容示例
2018/06/01 Python
浅谈Python的方法解析顺序(MRO)
2020/03/05 Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
2020/03/11 Python
Python logging日志模块 配置文件方式
2020/07/12 Python
python 两种方法修改文件的创建时间、修改时间、访问时间
2020/09/26 Python
Matplotlib animation模块实现动态图
2021/02/25 Python
CSS3 please 跨浏览器的CSS3产生器
2010/03/14 HTML / CSS
7款设计巧妙的css3飘带状3D立体效果的导航菜单和表单窗口
2013/02/04 HTML / CSS
html5 Canvas画图教程(11)—使用lineTo/arc/bezierCurveTo画椭圆形
2013/01/09 HTML / CSS
借款协议书
2014/04/12 职场文书
乡镇党建工作汇报材料
2014/10/27 职场文书