基于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中用fork()函数生成的子进程
May 04 Python
caffe binaryproto 与 npy相互转换的实例讲解
Jul 09 Python
Django添加sitemap的方法示例
Aug 06 Python
python,Django实现的淘宝客登录功能示例
Jun 12 Python
numpy中的meshgrid函数的使用
Jul 31 Python
python多进程(加入进程池)操作常见案例
Oct 21 Python
Python实现剪刀石头布小游戏(与电脑对战)
Dec 31 Python
jupyter lab文件导出/下载方式
Apr 22 Python
python中数字是否为可变类型
Jul 08 Python
Python排序函数的使用方法详解
Dec 11 Python
Pytorch中TensorBoard及torchsummary的使用详解
May 12 Python
Python正则表达式中flags参数的实例详解
Apr 01 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 在线翻译函数代码
2009/05/07 PHP
解析关于wamp启动是80端口被占用的问题
2013/06/21 PHP
destoon实现底部添加你是第几位访问者的方法
2014/07/15 PHP
php设计模式之工厂方法模式分析【星际争霸游戏案例】
2020/01/23 PHP
ThinkPHP5 框架引入 Go AOP,PHP AOP编程项目详解
2020/05/12 PHP
情人节专属 纯js脚本1k大小的3D玫瑰效果
2012/02/11 Javascript
js去除重复字符串两种实现方法
2013/01/09 Javascript
浅析document.ready和window.onload的区别讲解
2013/12/18 Javascript
浅析Node.js查找字符串功能
2014/09/03 Javascript
js剪切板应用clipboardData实例解析
2016/05/29 Javascript
jQuery 获取页面li数组并删除不在数组中的key
2016/08/02 Javascript
通过命令行生成vue项目框架的方法
2017/07/12 Javascript
vue计算属性时v-for处理数组时遇到的一个bug问题
2018/01/21 Javascript
ES6下子组件调用父组件的方法(推荐)
2018/02/23 Javascript
vue+elementUi图片上传组件使用详解
2019/08/20 Javascript
Python pickle模块用法实例分析
2015/05/27 Python
python删除本地夹里重复文件的方法
2020/11/19 Python
Python+OpenCV目标跟踪实现基本的运动检测
2018/07/10 Python
PyQt5实现五子棋游戏(人机对弈)
2020/03/24 Python
Python面向对象程序设计示例小结
2019/01/30 Python
Django 中间键和上下文处理器的使用
2019/03/17 Python
Python判断对象是否为文件对象(file object)的三种方法示例
2019/04/26 Python
python高斯分布概率密度函数的使用详解
2019/07/10 Python
python 基于opencv 实现一个鼠标绘图小程序
2020/12/11 Python
Pytorch 图像变换函数集合小结
2021/02/01 Python
世界上最大的二手相机店:KEN
2017/05/17 全球购物
日本必酷网络直营店:Biccamera
2019/03/23 全球购物
Yves Rocher捷克官方网站:植物化妆品的创造者
2019/07/31 全球购物
机械专业个人求职自荐信格式
2013/09/21 职场文书
网络工程与软件技术毕业生自荐信
2013/09/24 职场文书
中专生自我鉴定范文
2014/02/02 职场文书
期中考试后的反思
2014/02/08 职场文书
工商局局长个人对照检查材料思想汇报
2014/09/23 职场文书
初中重阳节活动总结
2015/05/05 职场文书
《开国大典》教学反思
2016/02/16 职场文书
php 解析非标准json、非规范json
2021/04/01 PHP