基于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设计模式编程中解释器模式的简单程序示例分享
Mar 02 Python
CentOS 6.X系统下升级Python2.6到Python2.7 的方法
Oct 12 Python
纯python实现机器学习之kNN算法示例
Mar 01 Python
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
May 15 Python
Python使用re模块正则提取字符串中括号内的内容示例
Jun 01 Python
Python实现爬虫抓取与读写、追加到excel文件操作示例
Jun 27 Python
在Pycharm中将pyinstaller加入External Tools的方法
Jan 16 Python
python使用PyQt5的简单方法
Feb 27 Python
基于Numpy.convolve使用Python实现滑动平均滤波的思路详解
May 16 Python
python 实现在无序数组中找到中位数方法
Mar 03 Python
Python+MySQL随机试卷及答案生成程序的示例代码
Feb 01 Python
python微信智能AI机器人实现多种支付方式
Apr 12 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 和 MySQL 基础教程(三)
2006/10/09 PHP
phpwind中的数据库操作类
2007/01/02 PHP
php Xdebug 调试扩展的安装与使用.
2010/03/13 PHP
laravel容器延迟加载以及auth扩展详解
2015/03/02 PHP
PHP代码实现爬虫记录――超管用
2015/07/31 PHP
javascript 打印内容方法小结
2009/11/04 Javascript
javascript获取xml节点的最大值(实现代码)
2013/12/11 Javascript
解决JS中乘法的浮点错误的方法
2014/01/03 Javascript
js 本地预览的简单实现方法
2014/02/18 Javascript
用js编写的简单的计算器代码程序
2015/08/04 Javascript
微信开发 js实现tabs选项卡效果
2016/10/28 Javascript
webpack2.0搭建前端项目的教程详解
2017/04/05 Javascript
Vue 3.0 前瞻Vue Function API新特性体验
2019/08/12 Javascript
vue项目实现多语言切换的思路
2020/09/17 Javascript
[00:44]TI7不朽珍藏III——军团指挥官不朽展示
2017/07/15 DOTA
python 多线程应用介绍
2012/12/19 Python
python解析中国天气网的天气数据
2014/03/21 Python
python批量提交沙箱问题实例
2014/10/08 Python
python实现求解列表中元素的排列和组合问题
2018/03/15 Python
在SQLite-Python中实现返回、查询中文字段的方法
2019/07/17 Python
浅谈Python type的使用
2019/11/19 Python
关于ResNeXt网络的pytorch实现
2020/01/14 Python
解决更改AUTH_USER_MODEL后出现的问题
2020/05/14 Python
python能在浏览器能运行吗
2020/06/17 Python
网络工程与软件技术毕业生自荐信
2013/09/24 职场文书
安全教育心得体会
2013/12/29 职场文书
仓库管理制度
2014/01/21 职场文书
庆元旦广播稿
2014/02/10 职场文书
上班玩手机检讨书
2014/02/17 职场文书
化工专业求职信
2014/07/01 职场文书
给老师的一封感谢信
2015/01/20 职场文书
国庆阅兵观后感
2015/06/15 职场文书
python 算法题——快乐数的多种解法
2021/05/27 Python
pytorch 实现多个Dataloader同时训练
2021/05/29 Python
使用canvas对video视频某一刻截图功能
2021/09/25 HTML / CSS
《堡垒之夜》联动《刺客信条》 4月7日正式上线
2022/04/06 其他游戏