高级运维自动化脚本:集成多维度运维功能

一.前言 

在现代企业中,高效的运维管理至关重要。高级运维自动化脚本旨在整合多种运维功能,提升运维效率,减少人为错误,并确保系统的稳定性和可靠性。本脚本集合了资源监控、日志管理、自动化部署、数据备份和邮件通知等功能,以实现全面的运维自动化。这种脚本能够帮助运维团队在减少重复劳动的同时,快速响应系统问题,保证业务连续性。



 

二.使用的库的介绍 

 

这个脚本使用了几个关键的Python库:

  1. subprocess: 用于执行外部命令和程序(如SSH、rsync和tar),可以捕获命令的输出和错误。
  2. os: 提供了与操作系统交互的功能,如路径操作。
  3. shutil: 提供了文件和目录操作的高层次功能,例如创建压缩归档。
  4. smtplib: 用于发送电子邮件,通过SMTP协议与邮件服务器通信。
  5. email.mime.text: 用于创建邮件内容的MIME文本格式。

三.代码实现以及解析 



 

#!/usr/bin/env python3
import subprocess
import os
import shutil
import smtplib
from email.mime.text import MIMEText
from datetime import datetime

# 配置部分
SERVERS = [
    {"host": "192.168.1.1", "user": "user1", "password": "pass1"},
    {"host": "192.168.1.2", "user": "user2", "password": "pass2"}
]
LOG_DIR = "/var/log/myapp"
BACKUP_DIR = "/var/backup"
EMAIL_SENDER = "[email protected]"
EMAIL_RECEIVER = "[email protected]"
EMAIL_SMTP_SERVER = "smtp.example.com"
EMAIL_SMTP_PORT = 587
EMAIL_LOGIN = "login"
EMAIL_PASSWORD = "password"

# 监控服务器资源
def monitor_resources():
    for server in SERVERS:
        print(f"Monitoring {server['host']}")
        # 示例:使用SSH执行命令检查CPU使用率
        # 这里使用subprocess模块来执行SSH命令
        result = subprocess.run(
            ["ssh", "{}@{}".format(server['user'], server['host']), "top -bn1 | grep Cpu"],
            stdout=subprocess.PIPE,
            stderr=subprocess.PIPE
        )
        if result.returncode == 0:
            print(f"CPU Usage on {server['host']}: {result.stdout.decode().strip()}")

# 收集日志
def collect_logs():
    now = datetime.now().strftime("%Y%m%d%H%M%S")
    log_archive = shutil.make_archive(f"{LOG_DIR}_{now}", 'zip', LOG_DIR)
    print(f"Logs collected and archived as {log_archive}")

# 自动化部署
def deploy_app():
    print("Starting deployment...")
    # 这里可以放置部署逻辑,例如使用rsync同步文件等
    # 示例:使用rsync同步当前目录到远程服务器
    for server in SERVERS:
        subprocess.run(
            ["rsync", "-avz", ".", f"{server['user']}@{server['host']}:/deployment/directory"],
            check=True
        )
    print("Deployment completed.")

# 备份
def backup_data():
    print("Starting backup...")
    backup_time = datetime.now().strftime("%Y%m%d%H%M%S")
    backup_path = os.path.join(BACKUP_DIR, f"backup_{backup_time}.tar.gz")
    subprocess.run(
        ["tar", "czf", backup_path, BACKUP_DIR],
        check=True
    )
    print(f"Backup completed. File saved as {backup_path}")

# 发送邮件通知
def send_email(subject, message):
    msg = MIMEText(message, 'plain', 'utf-8')
    msg['From'] = EMAIL_SENDER
    msg['To'] = EMAIL_RECEIVER
    msg['Subject'] = subject

    server = smtplib.SMTP(EMAIL_SMTP_SERVER, EMAIL_SMTP_PORT)
    server.starttls()
    server.login(EMAIL_LOGIN, EMAIL_PASSWORD)
    server.sendmail(EMAIL_SENDER, EMAIL_RECEIVER, msg.as_string())
    server.quit()

# 主逻辑
def main():
    try:
        monitor_resources()
        collect_logs()
        deploy_app()
        backup_data()
        send_email("Automation Script Completed", "The automation script has completed successfully.")
    except Exception as e:
        send_email("Automation Script Error", str(e))

if __name__ == "__main__":
    main()

1. 脚本头部(Shebang)

 
  

python

#!/usr/bin/env python3

这行代码是脚本的shebang,它告诉操作系统使用哪个解释器来执行脚本,这里是环境中的Python 3。

2. 导入模块

 
  

python

import subprocess import os import shutil import smtplib from email.mime.text import MIMEText from datetime import datetime

这部分导入了实现脚本功能所需的Python标准库和模块。

  • subprocess:用于执行外部命令。
  • osshutil:提供操作系统接口和文件操作功能。
  • smtplib:用于发送SMTP邮件。
  • email.mime.text:用于创建邮件内容。
  • datetime:用于获取当前日期和时间。

3. 配置信息

 
  

python

SERVERS = [{...}, {...}] LOG_DIR = "/var/log/myapp" BACKUP_DIR = "/var/backup" EMAIL_SENDER = "[email protected]" EMAIL_RECEIVER = "[email protected]" EMAIL_SMTP_SERVER = "smtp.example.com" EMAIL_SMTP_PORT = 587 EMAIL_LOGIN = "login" EMAIL_PASSWORD = "password"

这里定义了脚本运行所需的配置信息,包括服务器列表、日志目录、备份目录和邮件发送设置。

4. 监控服务器资源函数

 
  

python

def monitor_resources():

该函数通过SSH连接到每台服务器,并执行top命令来监控CPU使用率。

5. 收集日志函数

 
  

python

def collect_logs():

该函数创建一个时间戳命名的ZIP归档文件,用于存储和压缩指定目录中的日志文件。

6. 自动化部署函数

 
  

python

def deploy_app():

该函数使用rsync命令将本地文件同步到远程服务器的指定目录,实现应用的自动化部署。

7. 数据备份函数

 
  

python

def backup_data():

该函数创建一个时间戳命名的.tar.gz备份文件,备份指定目录的数据。

8. 发送邮件通知函数

 
  

python

def send_email(subject, message):

该函数构建一个简单的邮件消息,并使用SMTP协议发送邮件。邮件内容包括脚本执行的结果或错误信息。

9. 主逻辑函数

 
  

python

def main():

这是脚本的主要入口点,它按顺序调用上述功能函数,并在执行过程中捕获任何异常。如果脚本执行成功,会发送一封完成邮件;如果发生异常,会发送一封错误邮件。

10. 脚本执行检查

 
  

python

if __name__ == "__main__": main()

这一部分确保当脚本被直接运行时,main函数会被执行。

11. 异常处理

脚本使用try...except结构来捕获执行过程中的异常,并在发生异常时通过邮件发送错误通知。







 

四.致谢 
 

非常感谢您阅读我的博客!如果您有任何问题、建议或想了解特定主题,请随时告诉我。您的反馈对我非常重要,我将继续努力提供高质量的内容。

如果您喜欢我的博客,请考虑订阅我们的更新,这样您就不会错过任何新的文章和信息。同时,欢迎您分享我们的博客给更多的朋友和同事,让更多人受益。

再次感谢您的支持和关注!如果您有任何想法或需求,请随时与我们联系。祝您生活愉快,学习进步!

你可能感兴趣的:(python,python,开发语言)