基于python3监控服务器状态进行邮件报警
作者:南方小白 发布时间:2022-05-05 05:25:39
标签:python,3,监控,服务器,邮件,报警
在正式的生产环境中,我们常常会需要监控服务器的状态,以保证公司整个业务的正常运转,常常我们会用到像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脚本就完成了,现在就只需要拿到服务器执行定时任务就行了。现在我们来检测一下:
编辑一下定时任务
我们将写上面两个脚本写入1.py和2.py这两个文件中,为了方便验证我们将磁盘判断值改为30,实际上我们已用到了40%,这样就能直接报警了,两台服务器的Apache端口都为80且均为正常运行状态。
我们等待一分钟。。。。。。。
我们收到两封报警邮件,是不是很方便呢?
来源:https://www.cnblogs.com/lxwei0101/p/11701299.html
0
投稿
猜你喜欢
- 如下所示:import itchat, timefrom itchat.content import TEXT#name = ' &
- Pycharm实然提示过期了,网上找了很多Pycharm激活码,要么只支持老版本,要么是不能用。费了半天时间终于在一公众号里找到一枚可以使用
- 今天把Ext.js源码又读了一遍,不过这次比较认真。看完代码,有了不少收获也遇到不少问题。主要总结如下:1、document.execCom
- 初次安装完PyCharm后,新建项目时,遇到了No Python interpreter selected的问题。意思是说没有找到Pytho
- NumPy 比一般的 Python 序列提供更多的索引方式。除了之前看到的用整数和切片的索引外,数组可以由整数数组索引、布尔索引及花式索引。
- 1.指向“开始->程序->Microsoft SQL Server 2005->配置工具->SQL Server 外
- 我们将会看到一些在Python中使用线程的实例和如何避免线程之间的竞争。你应当将下边的例子运行多次,以便可以注意到线程是不可预测的和线程每次
- 在python类当中,经常会遇到@classmethod和@staticmethod这两个装饰器,那么到底它们的区别和作用是啥子呢?具体来看
- 摘要主要是介绍python 的回调函数callback。什么是回调函数当程序运行是,一般情况下,应用程序会时常通过API调用库里所预先备好的
- 在我们处理文件的时候,会遇到这样的一种场景,我们需要对某个文件进行操作,然后生成与原文件名相同的文件(只是文件格式改变)。那么这个时候就可以
- MySQL由于它本身的小巧和操作的高效, 在数据库应用中越来越多的被采用.我在开发一个P2P应用的时候曾经使用MySQL来保存P2P节点,由
- 本文实例为大家分享了python面向对象版的学生信息管理系统的具体代码,供大家参考,具体内容如下功能:1.能循环输入内容2.展示功能-1.新
- 本文实例为大家分享了python之pygame模块实现飞机大战的具体代码,供大家参考,具体内容如下Python飞机大战步骤:1.数据区2.主
- # encoding:utf-8import re # 使用正则 匹配想要的数据import requests # 使用requests得到
- PHP join() 函数实例把数组元素组合为一个字符串:<?php $arr = array('Hello',
- 搭建lnmp完lnmp环境后,测试时出现502报错,看到这个问题,我立刻想到是php-fpm没有起来,但是我用 ps -ef | grep
- 本文实例为大家分享了python实现抖音点赞功能的具体代码,供大家参考,具体内容如下#coding=utf-8from time impor
- 一、安装pip install lxml二、创建标签from lxml import etreeroot = etree.Element(&
- 本文实例讲述了JavaScript常用的返回,自动跳转,刷新,关闭语句。分享给大家供大家参考。具体如下:1. Javascript 返回上一
- Sun Microsystems公司宣布,正式对外提供MySQL 5.1软件——这是全球最受欢迎的开