基于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 相关文章推荐
wxPython窗口中文乱码解决方法
Oct 11 Python
Python判断值是否在list或set中的性能对比分析
Apr 16 Python
python 删除指定时间间隔之前的文件实例
Apr 24 Python
一百多行python代码实现抢票助手
Sep 25 Python
python多进程使用及线程池的使用方法代码详解
Oct 24 Python
使用python实现http及ftp服务进行数据传输的方法
Oct 26 Python
详解Python 多线程 Timer定时器/延迟执行、Event事件
Jun 27 Python
Python字典的概念及常见应用实例详解
Oct 30 Python
keras 特征图可视化实例(中间层)
Jan 24 Python
Python虚拟环境库virtualenvwrapper安装及使用
Jun 17 Python
Python制作简单的剪刀石头布游戏
Dec 10 Python
python网络爬虫实现发送短信验证码的方法
Feb 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
Yii框架中 find findAll 查找出制定的字段的方法对比
2014/09/10 PHP
Laravel 4 初级教程之视图、命名空间、路由
2014/10/30 PHP
php+mysqli实现批量替换数据库表前缀的方法
2014/12/29 PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
2015/10/26 PHP
PHP封装curl的调用接口及常用函数详解
2018/05/31 PHP
兼容IE、FireFox、Chrome等浏览器的xml处理函数js代码
2011/11/30 Javascript
js 遍历json返回的map内容示例代码
2013/10/29 Javascript
javascript中的self和this用法小结
2014/02/08 Javascript
jQuery写fadeTo示例代码
2014/02/21 Javascript
document.write的几点使用心得
2014/05/14 Javascript
JavaScript实现向setTimeout执行代码传递参数的方法
2015/04/16 Javascript
简介JavaScript中的setDate()方法的使用
2015/06/11 Javascript
jquery简单实现幻灯片的方法
2015/08/03 Javascript
解决JS请求服务器gbk文件乱码的问题
2015/10/16 Javascript
Jquery1.9.1源码分析系列(十五)动画处理之外篇
2015/12/04 Javascript
js实现获取两个日期之间所有日期的方法
2016/06/17 Javascript
js中new一个对象的过程
2017/02/20 Javascript
详解Vue 非父子组件通信方法(非Vuex)
2017/05/24 Javascript
解决vue移动端适配问题
2018/12/12 Javascript
node.js连接mysql与基本用法示例
2019/01/05 Javascript
微信小程序实现获取小程序码和二维码java接口开发
2019/03/29 Javascript
nestjs中异常过滤器Exceptionfilter的具体使用
2021/02/07 Javascript
[45:59]EG vs OG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
python 查找文件夹下所有文件 实现代码
2009/07/01 Python
PHP魔术方法__ISSET、__UNSET使用实例
2014/11/25 Python
python中偏函数partial用法实例分析
2015/07/08 Python
python算法表示概念扫盲教程
2017/04/13 Python
Python 在字符串中加入变量的实例讲解
2018/05/02 Python
Django项目中用JS实现加载子页面并传值的方法
2018/05/28 Python
Django添加KindEditor富文本编辑器的使用
2018/10/24 Python
彪马法国官网:PUMA法国
2019/12/15 全球购物
中药专业大学生医药工作求职信
2013/10/25 职场文书
有关水浒传的读书笔记
2015/06/25 职场文书
听证会主持词
2015/07/03 职场文书
银行服务理念口号
2015/12/25 职场文书
Python利用FlashText算法实现替换字符串
2022/03/31 Python