基于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中的round()方法
May 15 Python
Python扩展内置类型详解
Mar 26 Python
python中dir()与__dict__属性的区别浅析
Dec 10 Python
python dict 相同key 合并value的实例
Jan 21 Python
使用Django搭建web服务器的例子(最最正确的方式)
Aug 29 Python
Pytorch实现的手写数字mnist识别功能完整示例
Dec 13 Python
tensorflow使用range_input_producer多线程读取数据实例
Jan 20 Python
Tensorflow轻松实现XOR运算的方式
Feb 03 Python
Django获取model中的字段名和字段的verbose_name方式
May 19 Python
Python使用20行代码实现微信聊天机器人
Jun 05 Python
解决pyinstaller 打包exe文件太大,用pipenv 缩小exe的问题
Jul 13 Python
python实现计算图形面积
Feb 22 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
Discuz 5.0 中读取纯真IP数据库函数分析
2007/03/16 PHP
destoon实现调用当前栏目分类及子分类和三级分类的方法
2014/08/21 PHP
PHP通过串口实现发送短信
2015/07/08 PHP
php文件缓存方法总结
2016/03/16 PHP
PHP使用HTML5 FormData对象提交表单操作示例
2019/07/02 PHP
Javascript 自定义类型方法小结
2010/03/02 Javascript
基于jquery的inputlimiter 实现字数限制功能
2010/05/30 Javascript
读jQuery之四(优雅的迭代)
2011/06/20 Javascript
javascript判断两个IP地址是否在同一个网段的实现思路
2013/12/13 Javascript
javascript:json数据的页面绑定示例代码
2014/01/26 Javascript
JS实现CheckBox复选框全选、不选或全不选功能
2020/07/28 Javascript
jQuery的$.extend 浅拷贝与深拷贝
2017/03/08 Javascript
利用Jasmine对Angular进行单元测试的方法详解
2017/06/12 Javascript
js canvas实现适用于移动端的百分比仪表盘dashboard
2017/07/18 Javascript
jQuery实现倒计时功能 jQuery实现计时器功能
2017/09/19 jQuery
vue按需加载组件webpack require.ensure的方法
2017/12/13 Javascript
JS实现的合并两个有序链表算法示例
2019/02/25 Javascript
JS实现简单随机3D骰子
2019/10/24 Javascript
详解Vue的mixin策略
2020/11/19 Vue.js
[48:31]DOTA2-DPC中国联赛 正赛 Dynasty vs XG BO3 第一场 2月2日
2021/03/11 DOTA
浅谈Python Opencv中gamma变换的使用详解
2018/04/02 Python
Python使用sorted对字典的key或value排序
2018/11/15 Python
python导入模块交叉引用的方法
2019/01/19 Python
python实现按行分割文件
2019/07/22 Python
python中如何使用insert函数
2020/01/09 Python
Numpy中ndim、shape、dtype、astype的用法详解
2020/06/14 Python
Python常用外部指令执行代码实例
2020/11/05 Python
Django用户认证系统如何实现自定义
2020/11/12 Python
浅谈CSS3中的变形功能-transform功能
2017/12/27 HTML / CSS
综合实践活动总结
2014/05/05 职场文书
标准版离职证明书
2014/09/12 职场文书
中国在我心中演讲稿
2014/09/13 职场文书
2014年学生党支部工作总结
2014/12/20 职场文书
Redis性能监控的实现
2021/07/09 Redis
Vue 打包后相对路径的引用问题
2022/06/05 Vue.js
python实现一个简单的贪吃蛇游戏附代码
2022/06/28 Python