基于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标准库之Sys模块使用详解
May 23 Python
Python pandas DataFrame操作的实现代码
Jun 21 Python
Python socket 套接字实现通信详解
Aug 27 Python
Python字典中的值为列表或字典的构造实例
Dec 16 Python
详解python itertools功能
Feb 07 Python
python scatter函数用法实例详解
Feb 11 Python
python 通过邮件控制实现远程控制电脑操作
Mar 16 Python
Python super()方法原理详解
Mar 31 Python
keras读取训练好的模型参数并把参数赋值给其它模型详解
Jun 15 Python
Manjaro、pip、conda更换国内源的方法
Nov 17 Python
python给list排序的简单方法
Dec 10 Python
Python+Opencv实现把图片、视频互转的示例
Dec 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 过滤英文标点符号及过滤中文标点符号代码
2014/06/12 PHP
php图片处理函数获取类型及扩展名实例
2014/11/19 PHP
javascript来定义类的规范小结
2010/11/19 Javascript
基于jQuery的history历史记录插件
2010/12/11 Javascript
Jquery增加鼠标中间功能mousewheel的实例代码
2013/09/05 Javascript
jquery.cookie() 方法的使用(读取、写入、删除)
2013/12/05 Javascript
用Jquery实现滚动新闻
2014/02/12 Javascript
js实现window.open不被拦截的解决方法汇总
2014/10/30 Javascript
JS实现一个按钮的方法
2015/02/05 Javascript
js去除浏览器默认底图的方法
2015/06/08 Javascript
JS简单循环遍历json数组的方法
2016/04/22 Javascript
ES7中利用Await减少回调嵌套的方法详解
2017/11/01 Javascript
Express下采用bcryptjs进行密码加密的方法
2018/02/07 Javascript
Vue多系统切换实现方案
2018/06/05 Javascript
ionic grid(栅格)九宫格制作详解
2018/06/30 Javascript
使用imba.io框架得到比 vue 快50倍的性能基准
2019/06/17 Javascript
python监控网卡流量并使用graphite绘图的示例
2014/04/27 Python
Python生成器(Generator)详解
2015/04/13 Python
用python生成1000个txt文件的方法
2018/10/25 Python
利用python实现短信和电话提醒功能的例子
2019/08/08 Python
Python之time模块的时间戳,时间字符串格式化与转换方法(13位时间戳)
2019/08/12 Python
Django框架安装方法图文详解
2019/11/04 Python
python 项目目录结构设置
2020/02/14 Python
html5视频自动横过来自适应页面且点击播放功能的实现
2020/06/03 HTML / CSS
哈萨克斯坦移动和数字技术在线商店:SatelOnline.kz
2020/09/04 全球购物
销售团队口号大全
2014/06/06 职场文书
小学生运动会报道稿
2014/09/12 职场文书
假期安全教育广播稿
2014/10/04 职场文书
2015年全国科普日活动总结
2015/03/23 职场文书
2015年出纳个人工作总结
2015/04/02 职场文书
浪漫的婚礼主持词
2015/06/30 职场文书
主婚人致辞精选
2015/07/28 职场文书
大学生创业,为什么都会选择快餐饮?
2019/08/08 职场文书
解决MySQL存储时间出现不一致的问题
2021/04/28 MySQL
MySQL 数据类型选择原则
2021/05/27 MySQL
oracle设置密码复杂度及设置超时退出的功能
2022/06/28 Oracle