请允许我为您详细讲解如何基于 Python3 监控服务器状态并进行邮件报警。
简述
本教程将以 Python3 为基础编程语言,使用 psutil
库读取 Linux 系统相关硬件和软件信息,实现对服务器状态进行监控,并通过邮件进行报警。
实现的功能有:
- 监控 CPU 和内存使用率
- 监控磁盘使用率
- 监控进程是否宕掉
- 发送邮件进行报警
步骤
1. 安装 psutil
库
要使用 psutil
库,需要先进行安装。在终端中输入以下命令即可:
pip install psutil
2. 编写代码实现监控服务器状态并进行邮件报警
import psutil
import smtplib
import email.mime.multipart as multipart
import email.mime.text as text
import time
# 定义邮件发送函数
def send_email(title, content):
sender = 'send_from_address@example.com' # 发送方邮箱地址
receivers = ['send_to_address@example.com'] # 接收方邮箱地址
smtp_server = 'smtp.example.com' # SMTP服务器地址
username = 'your_username' # 发送邮箱的用户名
password = 'your_password' # 发送邮箱的授权码,非登录密码
# 构建邮件正文
message = multipart.MIMEMultipart()
message.attach(text.MIMEText(content, 'plain', 'utf-8'))
message['From'] = sender
message['To'] = ','.join(receivers)
message['Subject'] = title
# 发送邮件
smtpObj = smtplib.SMTP_SSL(smtp_server, 465)
smtpObj.login(username, password)
smtpObj.sendmail(sender, receivers, message.as_string())
smtpObj.quit()
def main():
while True:
# 获取 CPU 和内存使用率
cpu_usage = psutil.cpu_percent(interval=1)
memory_usage = psutil.virtual_memory().percent
# 获取磁盘使用率
disk_usage = psutil.disk_usage('/').percent
# 检查进程是否宕掉
if 'process_name' not in (p.name() for p in psutil.process_iter()):
send_email('Process Down Warning', 'Process down: process_name')
# 发送邮件报警
if cpu_usage > 80 or memory_usage > 80 or disk_usage > 80:
email_content = f'CPU: {cpu_usage}%\nMemory: {memory_usage}%\nDisk: {disk_usage}%'
send_email('Server Status Warning', email_content)
# 休眠 1 分钟
time.sleep(60)
if __name__ == '__main__':
main()
在这个示例中,我们使用了 psutil
库来获取服务器状态信息。其中:
cpu_usage = psutil.cpu_percent(interval=1)
获取 CPU 使用率;memory_usage = psutil.virtual_memory().percent
获取内存使用率;disk_usage = psutil.disk_usage('/').percent
获取磁盘使用率;if 'process_name' not in (p.name() for p in psutil.process_iter()):
检查进程是否宕掉;如果宕掉则发送邮件报警;if cpu_usage > 80 or memory_usage > 80 or disk_usage > 80:
如果 CPU、内存或磁盘使用率超过了 80%,则发送邮件报警。
如果以上条件有任意一项满足,程序将会调用 send_email
函数发送邮件报警。该函数使用 smtplib
库发送邮件,并使用 email.mime.multipart
和 email.mime.text
来构建邮件正文。在发送邮件之前,需要修改以下变量:
sender
:发送方邮箱地址;receivers
:接收方邮箱地址;smtp_server
:SMTP 服务器地址;username
:发送邮箱的用户名;password
:发送邮箱的授权码,非登录密码。
最后,程序将会休眠 1 分钟,然后再次获取服务器状态信息。循环执行以上内容,直到程序被手动停止。
3. 运行程序
在完成编写代码之后,可以通过以下命令来运行程序:
python3 server_monitor.py
运行之后,程序会及时检查服务器状态,并在达到预先设定的阈值时发送邮件报警。可以通过修改阈值来适应不同的情况。
示例
下面是一个示例,这个示例用于在服务器 CPU 使用率超过 80% 时进行报警:
if cpu_usage > 80:
send_email('CPU Usage Warning', f'Current CPU usage: {cpu_usage}%')
发送的邮件将包含以下内容:
Subject: CPU Usage Warning
Current CPU usage: 85%
另一个示例是监控多个进程是否宕掉。我们可以使用以下代码来检查一个名为 process_name
的进程是否启动:
if 'process_name' not in (p.name() for p in psutil.process_iter()):
send_email('Process Down Warning', 'Process down: process_name')
如果进程没有启动,发送的邮件将包含以下内容:
Subject: Process Down Warning
Process down: process_name
以上就是基于 Python3 监控服务器状态进行邮件报警的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于python3监控服务器状态进行邮件报警 - Python技术站