基于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每次处理固定个数的字符的方法总结
Jan 29 Python
python之模拟鼠标键盘动作具体实现
Dec 30 Python
python学习之面向对象【入门初级篇】
Jan 21 Python
正确理解python中的关键字“with”与上下文管理器
Apr 21 Python
python 平衡二叉树实现代码示例
Jul 07 Python
python多线程共享变量的使用和效率方法
Jul 16 Python
python处理自动化任务之同时批量修改word里面的内容的方法
Aug 23 Python
python代码如何实现余弦相似性计算
Feb 09 Python
解决Pytorch自定义层出现多Variable共享内存错误问题
Jun 28 Python
python3.6中anaconda安装sklearn踩坑实录
Jul 28 Python
Python如何实现感知器的逻辑电路
Dec 25 Python
Python爬虫自动化获取华图和粉笔网站的错题(推荐)
Jan 08 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 cookis创建实现代码
2009/03/16 PHP
php生成随机密码的三种方法小结
2010/09/04 PHP
php和js如何通过json互相传递数据相关问题探讨
2013/02/26 PHP
thinkphp的CURD和查询方式介绍
2013/12/19 PHP
WordPress特定文章对搜索引擎隐藏或只允许搜索引擎查看
2015/12/31 PHP
Redis在Laravel项目中的应用实例详解
2017/08/11 PHP
详解PHP中curl_multi并发的实现
2020/06/08 PHP
Dojo之路:如何利用Dojo实现Drag and Drop效果
2007/04/10 Javascript
JavaScript 格式字符串的应用
2010/03/29 Javascript
JS中的异常处理方法分享
2013/12/22 Javascript
JS判断页面是否出现滚动条的方法
2015/07/17 Javascript
js实现带缓冲效果的仿QQ面板折叠菜单代码
2015/09/06 Javascript
jQuery实现文字超过1行、2行或规定的行数时自动加省略号的方法
2018/03/28 jQuery
axios对请求各种异常情况处理的封装方法
2018/09/25 Javascript
vue使用echarts图表的详细方法
2018/10/22 Javascript
jquery使用echarts实现有向图可视化功能示例
2019/11/25 jQuery
使用webpack搭建pixi.js开发环境
2020/02/12 Javascript
Bootstrap table 服务器端分页功能实现方法示例
2020/06/01 Javascript
Vue项目如何引入bootstrap、elementUI、echarts
2020/11/26 Vue.js
基于数据归一化以及Python实现方式
2018/07/11 Python
用Python编写一个高效的端口扫描器的方法
2018/12/20 Python
人工神经网络算法知识点总结
2019/06/11 Python
Python 闭包,函数分隔作用域,nonlocal声明非局部变量操作示例
2019/10/14 Python
python实现拉普拉斯特征图降维示例
2019/11/25 Python
Python从文件中读取数据的方法步骤
2020/11/18 Python
css3 transform导致子元素固定定位变成绝对定位的方法
2020/03/06 HTML / CSS
金讯Java笔试题目
2013/06/18 面试题
C++是不是类型安全的
2014/02/18 面试题
若干个Java基础面试题
2015/05/19 面试题
解释i节点在文件系统中的作用
2013/11/26 面试题
最新大学生自我评价
2013/09/24 职场文书
2014新年寄语
2014/01/20 职场文书
党校毕业心得体会
2014/09/13 职场文书
党的群众路线教育实践活动个人整改措施材料
2014/11/04 职场文书
python用tkinter开发的扫雷游戏
2021/06/01 Python
Python3使用Qt5来实现简易的五子棋小游戏
2022/05/02 Python