用python监控服务器的cpu,磁盘空间,内存,超过邮件报警

下面是使用Python监控服务器的CPU、磁盘空间、内存,并超过邮件报警的完整攻略:

1. 安装必要的Python库

我们需要安装以下Python库来监控服务器的CPU、磁盘空间和内存:

  • psutil:用于获取系统CPU、内存和磁盘等信息。
  • smtplib:用于发送邮件。

可以使用pip安装这些库:

pip install psutil smtplib

2. 编写Python脚本

首先,我们需要导入必要的库:

import psutil
import smtplib
import os
from email.mime.text import MIMEText
from email.header import Header

然后,定义我们希望监控的阈值:

# CPU使用率
cpu_threshold = 80

# 内存使用率
mem_threshold = 80

# 磁盘使用率
disk_threshold = 80

# SMTP服务器配置信息
smtp_server = 'smtp.163.com'
smtp_port = 25
smtp_user = 'your_email@example.com'
smtp_password = 'your_password'

接下来,定义一个函数来获取系统信息:

def get_system_info():
    # 获取CPU使用率
    cpu_percent = psutil.cpu_percent()

    # 获取内存使用率
    mem_percent = psutil.virtual_memory().percent

    # 获取磁盘使用率(根目录)
    disk_percent = psutil.disk_usage('/').percent

    return cpu_percent, mem_percent, disk_percent

然后,定义一个函数来发送邮件:

def send_email(content):
    # 创建邮件内容对象
    message = MIMEText(content, 'plain', 'utf-8')

    # 设置邮件主题
    message['Subject'] = Header('服务器监控报警', 'utf-8')

    # 设置发件人和收件人
    message['From'] = smtp_user
    message['To'] = smtp_user

    # 发送邮件
    try:
        smtp = smtplib.SMTP(smtp_server, smtp_port)
        smtp.login(smtp_user, smtp_password)
        smtp.sendmail(smtp_user, [smtp_user], message.as_string())
        smtp.quit()
    except Exception as e:
        print('发送邮件失败:{}'.format(str(e)))

最后,编写代码进行监控并发送报警邮件:

if __name__ == '__main__':
    # 获取系统信息
    cpu_percent, mem_percent, disk_percent = get_system_info()

    # 判断是否需要报警
    if cpu_percent >= cpu_threshold or mem_percent >= mem_threshold or disk_percent >= disk_threshold:
        content = '服务器监控报警:\n\n'
        content += 'CPU使用率:{}%\n'.format(cpu_percent)
        content += '内存使用率:{}%\n'.format(mem_percent)
        content += '磁盘使用率(根目录):{}%\n\n'.format(disk_percent)
        content += '请立即处理!'
        send_email(content)

示例说明:

下面提供两个示例说明:

示例1:

某台服务器总内存只有4GB,可用内存只有不到500MB,但是管理员误将其挂在了高访问量的网站上,导致内存经常短缺,影响网站服务质量。因此,管理员想要使用Python监控服务器内存使用率超过阈值报警。

管理员将阈值设为80%,当内存使用率超过80%时,服务器会自动发送一封邮件给管理员:

# 内存使用率
mem_threshold = 80

if __name__ == '__main__':
    # 获取系统信息
    cpu_percent, mem_percent, disk_percent = get_system_info()

    # 判断是否需要报警
    if mem_percent >= mem_threshold:
        content = '服务器监控报警:\n\n'
        content += '内存使用率:{}%\n\n'.format(mem_percent)
        content += '请立即处理!'
        send_email(content)

示例2:

某个高并发的网站需要保证服务器的CPU、内存和磁盘等资源充足,以保证网站服务质量。管理员希望使用Python监控这些资源超过阈值时报警。

管理员将阈值设为80%,当CPU、内存或磁盘使用率超过80%时,服务器会自动发送一封邮件给管理员:

# CPU使用率
cpu_threshold = 80

# 内存使用率
mem_threshold = 80

# 磁盘使用率
disk_threshold = 80

if __name__ == '__main__':
    # 获取系统信息
    cpu_percent, mem_percent, disk_percent = get_system_info()

    # 判断是否需要报警
    if cpu_percent >= cpu_threshold or mem_percent >= mem_threshold or disk_percent >= disk_threshold:
        content = '服务器监控报警:\n\n'
        content += 'CPU使用率:{}%\n'.format(cpu_percent)
        content += '内存使用率:{}%\n'.format(mem_percent)
        content += '磁盘使用率(根目录):{}%\n\n'.format(disk_percent)
        content += '请立即处理!'
        send_email(content)

以上就是监控服务器CPU、磁盘空间、内存,并超过阈值邮件报警的完整攻略。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:用python监控服务器的cpu,磁盘空间,内存,超过邮件报警 - Python技术站

(0)
上一篇 2023年6月2日
下一篇 2023年6月2日

相关文章

  • python实现自动打卡的示例代码

    下面是详细讲解“Python实现自动打卡的示例代码”的攻略。 一、背景介绍 疫情期间,为了保证自身健康及他人安全,很多地方要求养成每日打卡习惯。但是每日打卡耗费时间,需要手动操作,非常麻烦。那我们可以使用Python编写自动化程序来解决这个问题。 二、程序实现步骤 1. 网站分析 首先我们需要打开要打卡的网站,分析打卡的流程和数据提交的方式。以某高校的在线办…

    python 2023年5月19日
    00
  • 解决python 输出到csv 出现多空行的情况

    对于“解决python输出到csv出现多空行的情况”,可以采取以下方法: 问题描述 在使用Python输出到CSV文件时,有时会出现多出空行的情况。例如下面的代码: import csv with open(‘test.csv’, ‘w’, newline=”) as csvfile: writer = csv.writer(csvfile) writer…

    python 2023年6月3日
    00
  • Python实现网络聊天室的示例代码(支持多人聊天与私聊)

    下面我来详细讲解“Python实现网络聊天室的示例代码(支持多人聊天与私聊)”的完整攻略: 一、准备工作 安装 Python:在 Python官网 下载适合自己操作系统的Python版本进行安装; 安装第三方库:进入命令行终端(Windows系统可使用cmd),使用以下命令安装所需的第三方库: pip install socketio pip install…

    python 2023年5月19日
    00
  • python shutil操作文件实例讲解

    Python shutil操作文件实例讲解 简介 shutil 是Python标准库中的一个模块,它提供了很多关于文件和目录操作的函数,比如复制文件、复制目录、移动文件、移动目录、删除文件、删除目录等等。今天我们来一起学习如何使用Python shutil模块实现文件操作。 安装 shutil是Python自带的模块,不需要额外安装。 示例1:复制文件 im…

    python 2023年6月2日
    00
  • python3的url编码和解码,自定义gbk、utf-8的例子

    下面是详细讲解python3的url编码和解码,以及自定义gbk、utf-8的例子: 什么是URL编码和解码 URL编码(percent-encoding)是一种编码格式,将URL中的特殊字符转换成特定的格式,以便于进行传输。URL解码则是将编码后的URL字符串恢复为原始的URL字符串。 在URL中,有些字符具有特殊的含义,如“/”、“?”、“#”等等,如果…

    python 2023年5月20日
    00
  • python 单线程和异步协程工作方式解析

    Python 单线程和异步协程工作方式解析 前言 在了解Python协程和异步编程之前,需要先理解单线程和多线程之间的区别。单线程指的是同一时间内只运行一个线程,多线程指的是同一时间内可以运行多个线程。 在Python中,单线程指的是Python解释器运行的主线程,同时协程和异步编程可以在单线程下利用非阻塞I/O和事件循环来实现高效的并发操作。 下面将详细介…

    python 2023年5月19日
    00
  • 用python实现读取xlsx表格操作

    下面是用Python实现读取xlsx表格操作的完整实例教程。 1. 安装依赖库 在使用Python读取xlsx表格之前,我们需要先安装一个库叫做openpyxl。可以通过以下命令进行安装: pip install openpyxl 2. 导入openpyxl库 在读取xlsx表格之前,需要先导入openpyxl库。可以通过以下方式进行导入: import o…

    python 2023年5月13日
    00
  • Python 类,对象,数据分类,函数参数传递详解

    Python 类、对象、数据分类、函数参数传递详解 Python 类和对象 在 Python 中,我们可以使用类来定义一个对象,从而方便我们对代码进行组织,代码的重复利用等。定义一个 Python 类,可以使用 class 关键字,例如: class Person: def __init__(self, name, age): self.name = nam…

    python 2023年5月18日
    00
合作推广
合作推广
分享本页
返回顶部