基于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修改MP3文件的方法
Jun 15 Python
对python 中re.sub,replace(),strip()的区别详解
Jul 22 Python
python matplotlib库绘制散点图例题解析
Aug 10 Python
python 数据提取及拆分的实现代码
Aug 26 Python
利用OpenCV和Python实现查找图片差异
Dec 19 Python
Keras官方中文文档:性能评估Metrices详解
Jun 15 Python
使用Python将xmind脑图转成excel用例的实现代码(一)
Oct 12 Python
Python GUI之tkinter窗口视窗教程大集合(推荐)
Oct 20 Python
python如何编写类似nmap的扫描工具
Nov 06 Python
python 基于opencv 绘制图像轮廓
Dec 11 Python
用Python爬虫破解滑动验证码的案例解析
May 06 Python
python 镜像环境搭建总结
Sep 23 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获得用户使用的代理服务器ip即真实ip
2006/12/31 PHP
解决dede生成静态页和动态页转换的一些问题,及火车采集入库生成动态的办法
2007/03/29 PHP
php木马攻击防御之道
2008/03/24 PHP
php读取文件内容的几种方法详解
2013/06/26 PHP
PHP反射使用实例和PHP反射API的中文说明
2014/07/02 PHP
深入理解PHP中的Streams工具
2015/07/03 PHP
功能强大的PHP POST提交数据类
2016/07/15 PHP
php源码 fsockopen获取网页内容实例详解
2016/09/24 PHP
Swoole实现异步投递task任务案例详解
2019/04/02 PHP
收藏一些不常用,但是有用的代码
2007/03/12 Javascript
jquery tab插件精简版分享
2011/09/10 Javascript
JQuery中对Select的option项的添加、删除、取值
2013/08/25 Javascript
javascript的 {} 语句块详解
2016/02/27 Javascript
详解springmvc 接收json对象的两种方式
2016/12/06 Javascript
前端JS面试中常见的算法问题总结
2016/12/23 Javascript
基于Vue2实现的仿手机QQ单页面应用功能(接入聊天机器人 )
2017/03/30 Javascript
详解使用vscode+es6写nodejs服务端调试配置
2017/09/21 NodeJs
javascript修改浏览器title方法 JS动态修改浏览器标题
2017/11/30 Javascript
微信小程序基于slider组件动态修改标签透明度的方法示例
2017/12/04 Javascript
vue-content-loader内容加载器的使用方法
2018/08/05 Javascript
electron制作仿制qq聊天界面的示例代码
2018/11/26 Javascript
JavaScript监听一个DOM元素大小变化
2020/04/26 Javascript
使用纯前端JavaScript实现Excel导入导出方法过程详解
2020/08/07 Javascript
python 正则表达式 概述及常用字符
2009/05/04 Python
python抓取网页图片并放到指定文件夹
2014/04/24 Python
Python利用正则表达式匹配并截取指定子串及去重的方法
2015/07/30 Python
Go语言基于Socket编写服务器端与客户端通信的实例
2016/02/19 Python
详解Python map函数及Python map()函数的用法
2017/11/16 Python
OpenCV+Python识别车牌和字符分割的实现
2019/01/31 Python
django drf框架自带的路由及最简化的视图
2019/09/10 Python
matplotlib 生成的图像中无法显示中文字符的解决方法
2020/06/10 Python
巴西最大的珠宝连锁店:Vivara
2019/04/18 全球购物
汽车促销活动方案
2014/03/31 职场文书
公司授权委托书范文
2014/08/02 职场文书
大学生实习证明范文(5篇)
2014/09/18 职场文书
go语言求任意类型切片的长度操作
2021/04/26 Golang