基于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/ironpython:从入门到精通
Oct 02 Python
Python 正则表达式入门(中级篇)
Dec 07 Python
Python基于QRCode实现生成二维码的方法【下载,安装,调用等】
Jul 11 Python
Python实现句子翻译功能
Nov 14 Python
python traceback捕获并打印异常的方法
Aug 31 Python
python地震数据可视化详解
Jun 18 Python
python实现飞机大战小游戏
Nov 08 Python
python的time模块和datetime模块实例解析
Nov 29 Python
pytorch查看通道数 维数 尺寸大小方式
May 26 Python
python mysql中in参数化说明
Jun 05 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
Jul 28 Python
python爬虫泛滥的解决方法详解
Nov 25 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异常处理技术,顶级异常处理器
2012/06/13 PHP
php排序算法(冒泡排序,快速排序)
2012/10/09 PHP
this[] 指的是什么内容 讨论
2007/03/24 Javascript
Javascript客户端将指定区域导出到Word、Excel的代码
2008/10/22 Javascript
jQuery对象和DOM对象相互转化
2009/04/24 Javascript
JSON 客户端和服务器端的格式转换
2009/08/27 Javascript
JavaScript学习笔记(二) js对象
2011/10/25 Javascript
jQuery 图片切换插件(代码比较少)
2012/05/07 Javascript
将中国标准时间转换成标准格式的代码
2014/03/20 Javascript
JSON取值前判断
2014/12/23 Javascript
Javascript调用函数方法的几种方式介绍
2015/03/20 Javascript
谈谈我对JavaScript DOM事件的理解
2015/12/18 Javascript
AngularJS过滤器filter用法总结
2016/12/13 Javascript
JS实现仿饿了么在浏览器标签页失去焦点时网页Title改变
2017/06/01 Javascript
微信禁止下拉查看URL的处理方法
2017/09/28 Javascript
Vue-resource拦截器判断token失效跳转的实例
2017/10/27 Javascript
利用CDN加速react webpack打包后的文件详解
2018/02/22 Javascript
详解vue中点击空白处隐藏div的实现(用指令实现)
2018/04/19 Javascript
Vue中的vue-resource示例详解
2018/11/02 Javascript
vue实现双向绑定和依赖收集遇到的坑
2018/11/29 Javascript
深入了解query和params的使用区别
2019/06/24 Javascript
[02:56]DOTA2英雄基础教程 巨魔战将
2013/12/10 DOTA
[02:40]DOTA2殁境神蚀者 英雄基础教程
2013/11/26 DOTA
python 生成器生成杨辉三角的方法(必看)
2017/04/10 Python
Win10里python3创建虚拟环境的步骤
2020/01/31 Python
python爬取网易云音乐热歌榜实例代码
2020/08/07 Python
美国家居装饰购物网站:Amanda Lindroth
2020/03/25 全球购物
怎样比较两个类型为String的字符串
2016/08/17 面试题
工程现场管理求职自荐信
2013/10/02 职场文书
消防安全标语
2014/06/07 职场文书
大班亲子运动会方案
2014/06/10 职场文书
优秀团员事迹材料1000字
2014/08/20 职场文书
2015年学校减负工作总结
2015/05/19 职场文书
亮剑观后感600字
2015/06/05 职场文书
详解Django的MVT设计模式
2021/04/29 Python
Python max函数中key的用法及原理解析
2021/06/26 Python