基于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 开发者节省时间的10个方法
Oct 02 Python
Python简单实现安全开关文件的两种方式
Sep 19 Python
Django实现简单分页功能的方法详解
Dec 05 Python
Python使用Tkinter实现机器人走迷宫
Jan 22 Python
python 输出上个月的月末日期实例
Apr 11 Python
Python实现针对给定单链表删除指定节点的方法
Apr 12 Python
python使用多进程的实例详解
Sep 19 Python
python实现五子棋人机对战游戏
Mar 25 Python
Python3基于plotly模块保存图片表格
Aug 03 Python
pytorch加载语音类自定义数据集的方法教程
Nov 10 Python
python 实现超级玛丽游戏
Nov 25 Python
Python3 多线程(连接池)操作MySQL插入数据
Jun 09 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
模拟SQLSERVER的两个函数:dateadd(),datediff()
2006/10/09 PHP
php代码运行时间查看类代码分享
2011/08/06 PHP
php打造属于自己的MVC框架
2012/03/07 PHP
Laravel模型事件的实现原理详解
2018/03/14 PHP
Thinkphp5.0 框架Model模型简单用法分析
2019/10/11 PHP
jQuery Tools tab(幻灯片)
2012/07/14 Javascript
js 操作select和option常用代码整理
2012/12/13 Javascript
JavaScript在XHTML中的用法详解
2013/04/11 Javascript
js window.print实现打印特定控件或内容
2013/09/16 Javascript
jQuery获取Radio,CheckBox选择的Value值(示例代码)
2013/12/12 Javascript
html5 canvas js(数字时钟)实例代码
2013/12/23 Javascript
jquery 实现返回顶部功能
2014/11/17 Javascript
简述JavaScript的正则表达式中test()方法的使用
2015/06/16 Javascript
全面解析Bootstrap表单使用方法(表单控件)
2015/11/24 Javascript
JavaScript时间戳与时间日期间相互转换
2017/12/11 Javascript
jquery引入外部CDN 加载失败则引入本地jq库
2018/05/23 jQuery
js事件on动态绑定数据,绑定多个事件的方法
2018/09/15 Javascript
js cavans实现静态滚动弹幕
2020/05/21 Javascript
JS继承实现方法及优缺点详解
2020/09/02 Javascript
Python获取apk文件URL地址实例
2013/11/01 Python
python django 增删改查操作 数据库Mysql
2017/07/27 Python
python实战之实现excel读取、统计、写入的示例讲解
2018/05/02 Python
Python3enumrate和range对比及示例详解
2019/07/13 Python
python psutil模块使用方法解析
2019/08/01 Python
python安装virtualenv虚拟环境步骤图文详解
2019/09/18 Python
经验丰富程序员才知道的8种高级Python技巧
2020/07/27 Python
澳大利亚女士时装在线:Rockmans
2018/09/26 全球购物
迪卡侬波兰体育用品商店:Decathlon波兰
2020/03/31 全球购物
名词解释WEB SERVICE,SOAP,UDDI,WSDL,JAXP,JAXM;JSWDL开发包的介绍。
2012/10/27 面试题
应届行政管理专业个人自我评价
2013/12/28 职场文书
养生餐厅创业计划书范文
2014/03/26 职场文书
硕士研究生就业推荐信
2014/05/18 职场文书
建议书范文
2015/02/05 职场文书
2015年清明节演讲稿范文
2015/03/17 职场文书
(开源)微信小程序+mqtt,esp8266温湿度读取
2021/04/02 Javascript
修改并编译golang源码的操作步骤
2021/07/25 Golang