Python自动运维脚本案例

在现代运维中,自动化是提升效率、降低人为错误的重要途径。使用Python编写自动运维脚本可以帮助运维工程师处理常见的任务,比如服务器监控、日志管理、任务调度等。本文将介绍一个简单的Python自动运维脚本案例,并给出相应的代码示例。

场景设定

假设我们需要定期检查服务器的CPU使用率,并在CPU使用率超过设定阈值时发送通知。为了实现这个功能,我们可以使用Python的标准库和一些第三方库(如psutil)来收集系统信息,并结合smtplib库发送邮件通知。

环境准备

首先,确保你的Python环境中已安装必要的库。你可以使用pip进行安装:

pip install psutil

自动运维脚本示例

下面是一个简化的Python运维自动化脚本示例:

import psutil
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

# 设置邮箱参数
SMTP_SERVER = 'smtp.example.com'  # 你的SMTP服务器地址
SMTP_PORT = 587  # SMTP端口(常见端口有25,587,465等)
EMAIL_USER = 'your_email@example.com'  # 你的邮箱
EMAIL_PASS = 'your_email_password'  # 你的邮箱密码
ALERT_EMAIL = 'alert_recipient@example.com'  # 收件人邮箱

# CPU使用率阈值
CPU_THRESHOLD = 80.0  # 设置阈值为80%

def send_alert_email(cpu_usage):
    """发送CPU使用率警告邮件"""
    subject = f"警告:CPU使用率已达{cpu_usage}%"
    body = f"当前CPU使用率已达到{cpu_usage}%,请检查服务器状态。"

    msg = MIMEMultipart()
    msg['From'] = EMAIL_USER
    msg['To'] = ALERT_EMAIL
    msg['Subject'] = subject
    msg.attach(MIMEText(body, 'plain'))

    try:
        with smtplib.SMTP(SMTP_SERVER, SMTP_PORT) as server:
            server.starttls()  # 启用TLS加密
            server.login(EMAIL_USER, EMAIL_PASS)
            server.send_message(msg)
            print("警报邮件已发送。")
    except Exception as e:
        print(f"发送邮件时出错:{e}")

def check_cpu_usage():
    """检查CPU使用率,并在超过阈值时发送警报"""
    cpu_usage = psutil.cpu_percent(interval=1)
    print(f"当前CPU使用率:{cpu_usage}%")

    if cpu_usage > CPU_THRESHOLD:
        send_alert_email(cpu_usage)

if __name__ == "__main__":
    check_cpu_usage()

代码解析

  1. 引入库:我们使用psutil库来获取CPU使用率,使用smtplibemail库来发送邮件。
  2. 设置邮箱参数:在代码中定义你的SMTP服务器、邮箱账户信息和接收警报的邮箱地址。
  3. 定义警报邮件发送函数send_alert_email函数负责构建和发送警报邮件。
  4. 检查CPU使用率check_cpu_usage函数获取当前的CPU使用率,若超过设定的阈值则调用发送邮件的函数。
  5. 程序入口:通过if __name__ == "__main__":确保脚本从这里开始执行。

扩展

这个脚本的基础上,你可以进一步扩展功能,比如: - 增加日志记录功能,保存每次检查的结果。 - 添加定时任务,将脚本定期运行,可以使用cron或Windows任务计划。 - 增加对内存、磁盘使用情况的监控。

总结

通过Python自动化运维脚本,我们可以有效提高服务监控的效率,并及时发现和处理潜在问题。随着业务的复杂性增加,自动化运维将会是每个运维工程师必须掌握的重要技能。希望以上示例能够对你的日常运维工作提供帮助。

点赞(0) 打赏

微信小程序

微信扫一扫体验

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部