基于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实现对一个函数应用多个装饰器的方法示例
Feb 09 Python
Python使用 Beanstalkd 做异步任务处理的方法
Apr 24 Python
Python中__slots__属性介绍与基本使用方法
Sep 05 Python
Python动态语言与鸭子类型详解
Jul 01 Python
浅析Windows 嵌入python解释器的过程
Jul 26 Python
django认证系统实现自定义权限管理的方法
Aug 28 Python
安装Pycharm2019以及配置anconda教程的方法步骤
Nov 11 Python
Python request使用方法及问题总结
Apr 26 Python
什么是Python变量作用域
Jun 03 Python
Python过滤掉numpy.array中非nan数据实例
Jun 08 Python
Python基于staticmethod装饰器标示静态方法
Oct 17 Python
如何将Pycharm中调整字体大小的方式设置为"ctrl+鼠标滚轮上下滑"
Nov 17 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之生成GIF动画的实现方法
2013/06/07 PHP
PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
2015/12/24 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
js限制文本框只能输入数字(正则表达式)
2012/07/15 Javascript
JavaScript 用Node.js写Shell脚本[译]
2012/09/20 Javascript
javascript自定义函数参数传递为字符串格式
2014/07/29 Javascript
将HTML格式的String转化为HTMLElement的实现方法
2014/08/07 Javascript
使用jQuery实现验证上传图片的格式与大小
2014/12/03 Javascript
jquery实现(textarea)placeholder自动换行
2016/12/22 Javascript
在Vue中使用echarts的实例代码(3种图)
2017/07/10 Javascript
JS脚本加载后执行相应回调函数的操作方法
2018/02/28 Javascript
浅谈FastClick 填坑及源码解析
2018/03/02 Javascript
Vue 实现展开折叠效果的示例代码
2018/08/27 Javascript
css配合JavaScript实现tab标签切换效果
2018/10/11 Javascript
Vue实现兄弟组件间的联动效果
2020/01/21 Javascript
vue数据响应式原理知识点总结
2020/02/16 Javascript
jQuery实现回到顶部效果
2020/10/19 jQuery
[58:18]2018DOTA2亚洲邀请赛3月29日 小组赛B组 iG VS Mineski
2018/03/30 DOTA
Python压缩和解压缩zip文件
2015/02/14 Python
介绍Python中的一些高级编程技巧
2015/04/02 Python
python实现比较两段文本不同之处的方法
2015/05/30 Python
Python实现求两个csv文件交集的方法
2017/09/06 Python
python3+PyQt5 自定义窗口部件--使用窗口部件样式表的方法
2019/06/26 Python
Django生成PDF文档显示在网页上以及解决PDF中文显示乱码的问题
2019/07/04 Python
python中的colorlog库使用详解
2019/07/05 Python
Python+OpenCV 实现图片无损旋转90°且无黑边
2019/12/12 Python
世界最大的私人旅行指南出版商:孤独星球
2016/08/23 全球购物
John Varvatos官方网站:设计师男士时装
2017/02/08 全球购物
开朗女孩的自我评价
2014/02/10 职场文书
教师爱岗敬业演讲稿
2014/05/05 职场文书
工作建议书范文
2014/05/13 职场文书
商务日语专业的自荐信
2014/05/23 职场文书
法定代表人授权委托书范文
2014/09/22 职场文书
幼儿园中班教师个人工作总结
2015/02/06 职场文书
拖欠货款起诉状
2015/05/20 职场文书
2015年行政管理人员工作总结
2015/10/15 职场文书