基于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实现可将字符转换成大写的tcp服务器实例
Apr 29 Python
python 垃圾收集机制的实例详解
Aug 20 Python
python:接口间数据传递与调用方法
Dec 17 Python
Django文件上传与下载(FileFlid)
Oct 06 Python
numpy数组做图片拼接的实现(concatenate、vstack、hstack)
Nov 08 Python
python面向对象之类属性和类方法案例分析
Dec 30 Python
django从后台返回html代码的实例
Mar 11 Python
Python PIL库图片灰化处理
Apr 07 Python
python 实现两个线程交替执行
May 02 Python
python绘制汉诺塔
Mar 01 Python
python 如何读、写、解析CSV文件
Mar 03 Python
Python爬虫中urllib3与urllib的区别是什么
Jul 21 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
php5中类的学习
2008/03/28 PHP
色色整理的PHP面试题集锦
2012/03/08 PHP
关于实现代码语法标亮 dp.SyntaxHighlighter
2007/02/02 Javascript
SwfUpload在IE10上不出现上传按钮的解决方法
2013/06/25 Javascript
js中typeof的用法汇总
2013/12/12 Javascript
最短的IE判断var ie=!-[1,]分析
2014/05/28 Javascript
js树插件zTree获取所有选中节点数据的方法
2015/01/28 Javascript
js实现鼠标悬浮给图片加边框的方法
2015/01/30 Javascript
浅析四种常见的Javascript声明循环变量的书写方式
2015/10/14 Javascript
vue.js从安装到搭建过程详解
2017/03/17 Javascript
Angualrjs和bootstrap相结合实现数据表格table
2017/03/30 Javascript
vue router路由嵌套不显示问题的解决方法
2017/06/17 Javascript
浅谈Vue-cli 命令行工具分析
2017/11/22 Javascript
一步步教你利用Docker设置Node.js
2018/11/20 Javascript
vue安装遇到的5个报错及解决方法
2019/06/12 Javascript
[43:24]2018DOTA2亚洲邀请赛3月29日 小组赛A组 LGD VS Liquid
2018/03/30 DOTA
Python isinstance判断对象类型
2008/09/06 Python
Python内建模块struct实例详解
2018/02/02 Python
使用Python快速制作可视化报表的方法
2019/02/03 Python
Pandas中DataFrame交换列顺序的方法实现
2020/12/14 Python
解决canvas转base64/jpeg时透明区域变成黑色背景的方法
2016/10/23 HTML / CSS
悬挂训练绳:TRX
2017/12/14 全球购物
trivago美国:全球最大的酒店价格比较网站
2018/01/18 全球购物
牦牛毛户外探险服装:Kora
2019/02/08 全球购物
管道维修工岗位职责
2013/12/27 职场文书
护士求职自荐信范文
2014/03/19 职场文书
学校火灾防控方案
2014/06/09 职场文书
老人再婚离婚协议书范本
2014/10/27 职场文书
2014年扫黄打非工作总结
2014/12/03 职场文书
施工现场安全管理制度
2015/08/05 职场文书
2016年党风廉政建设承诺书
2016/03/25 职场文书
[有人@你]你有一封绿色倡议书,请查收!
2019/07/18 职场文书
创业计划书之零食店(进口)
2019/09/24 职场文书
【HBU】数据库第四周 单表查询
2021/04/05 SQL Server
MySQL数据库必备之条件查询语句
2021/10/15 MySQL
源码分析Redis中 set 和 sorted set 的使用方法
2022/03/22 Redis