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()
代码解析
- 引入库:我们使用
psutil
库来获取CPU使用率,使用smtplib
和email
库来发送邮件。 - 设置邮箱参数:在代码中定义你的SMTP服务器、邮箱账户信息和接收警报的邮箱地址。
- 定义警报邮件发送函数:
send_alert_email
函数负责构建和发送警报邮件。 - 检查CPU使用率:
check_cpu_usage
函数获取当前的CPU使用率,若超过设定的阈值则调用发送邮件的函数。 - 程序入口:通过
if __name__ == "__main__":
确保脚本从这里开始执行。
扩展
这个脚本的基础上,你可以进一步扩展功能,比如:
- 增加日志记录功能,保存每次检查的结果。
- 添加定时任务,将脚本定期运行,可以使用cron
或Windows任务计划。
- 增加对内存、磁盘使用情况的监控。
总结
通过Python自动化运维脚本,我们可以有效提高服务监控的效率,并及时发现和处理潜在问题。随着业务的复杂性增加,自动化运维将会是每个运维工程师必须掌握的重要技能。希望以上示例能够对你的日常运维工作提供帮助。