基于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字典排序实例详解
May 20 Python
Django框架中方法的访问和查找
Jul 15 Python
Python的math模块中的常用数学函数整理
Feb 04 Python
python中pandas.DataFrame对行与列求和及添加新行与列示例
Mar 12 Python
python中for用来遍历range函数的方法
Jun 08 Python
Python 实现两个列表里元素对应相乘的方法
Nov 14 Python
利用python脚本如何简化jar操作命令
Feb 24 Python
Django网络框架之创建虚拟开发环境操作示例
Jun 06 Python
Python 音频生成器的实现示例
Dec 24 Python
python实现多进程按序号批量修改文件名的方法示例
Dec 30 Python
解决c++调用python中文乱码问题
Jul 29 Python
基于Python组装jmx并调用JMeter实现压力测试
Nov 03 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 file_get_contents 函数超时的几种解决方法
2009/07/30 PHP
php提示undefined index的几种解决方法
2012/05/21 PHP
探讨如何使用SimpleXML函数来加载和解析XML文档
2013/06/07 PHP
PHP自毁程序(慎用)
2015/07/09 PHP
Laravel接收前端ajax传来的数据的实例代码
2017/07/20 PHP
JavaScript加密解密7种方法总结分析
2007/10/07 Javascript
ASP.NET jQuery 实例16 通过控件CustomValidator验证RadioButtonList
2012/02/03 Javascript
JavaScript中的标签语句用法分析
2015/02/10 Javascript
jQuery解决input元素的blur事件和其他非表单元素的click事件冲突问题
2016/08/15 Javascript
Webpack+Vue如何导入Jquery和Jquery的第三方插件
2017/02/20 Javascript
vuex的简单使用教程
2018/02/02 Javascript
Node 升级到最新稳定版的方法分享
2018/05/17 Javascript
JS内部事件机制之单线程原理
2018/07/02 Javascript
bootstrap-table formatter 使用vue组件的方法
2019/05/09 Javascript
js实现表单项的全选、反选及删除操作示例
2020/06/05 Javascript
解决vue bus.$emit触发第一次$on监听不到问题
2020/07/28 Javascript
js实现列表按字母排序
2020/08/11 Javascript
python备份文件的脚本
2008/08/11 Python
编写Python CGI脚本的教程
2015/06/29 Python
python遍历目录的方法小结
2016/04/28 Python
便捷提取python导入包的属性方法
2018/10/15 Python
Python笔记之代理模式
2019/11/20 Python
Python脚本破解压缩文件口令实例教程(zipfile)
2020/06/14 Python
No module named ‘win32gui‘ 的解决方法(踩坑之旅)
2021/02/18 Python
你不知道的葡萄干处理法、橙蜜处理法、二氧化碳酵母法
2021/03/17 冲泡冲煮
车间班组长岗位职责
2013/11/13 职场文书
汽车专业人才自我鉴定范文
2013/12/29 职场文书
考试违纪检讨书
2014/02/02 职场文书
《中国的气候》教学反思
2014/02/23 职场文书
汽车服务工程专业自荐信
2014/09/02 职场文书
四风自我剖析材料思想汇报
2014/10/01 职场文书
2015年电信员工工作总结
2015/05/26 职场文书
2016年度先进班组事迹材料
2016/03/01 职场文书
干货!开幕词的写作方法
2019/04/02 职场文书
Vue.js 带下拉选项的输入框(Textbox with Dropdown)组件
2021/04/17 Vue.js