最新動(dòng)態(tài)

Python運(yùn)維工程師實(shí)戰(zhàn)腳本全書(shū)

2025-01-27

Python 運(yùn)維工程師必備腳本實(shí)戰(zhàn)指南

運(yùn)維工程師的工作離不開(kāi)Python腳本的支持,以提高工作效率。本文將通過(guò)實(shí)例講解四種常用的腳本:系統(tǒng)監(jiān)控、日志分析、文件備份以及系統(tǒng)更新。每個(gè)腳本都附有相應(yīng)的代碼和應(yīng)用場(chǎng)景,幫助讀者快速掌握。


1. 系統(tǒng)監(jiān)控腳本

1.1 CPU 使用率監(jiān)控

CPU 使用率的監(jiān)控在服務(wù)器資源緊張時(shí)尤為重要。以下腳本會(huì)定期輸出 CPU 使用率。

import psutil
import time

def monitor_cpu_usage(interval=1):
    while True:
        cpu_percent = psutil.cpu_percent(interval=interval)
        print(f"當(dāng)前 CPU 使用率: {cpu_percent}%")
        time.sleep(interval)

if __name__ == "__main__":
    # 每隔 5 秒監(jiān)控一次 CPU 使用率
    monitor_cpu_usage(interval=5)

此腳本使用 psutil 庫(kù),能夠精確地獲取 CPU 使用率,并支持自定義監(jiān)控頻率。


1.2 內(nèi)存使用率監(jiān)控

內(nèi)存監(jiān)控是保障系統(tǒng)穩(wěn)定運(yùn)行的重要環(huán)節(jié)。以下腳本展示了內(nèi)存總量、可用量及使用率。

import psutil
import time

def monitor_memory_usage(interval=1):
    while True:
        mem_info = psutil.virtual_memory()
        print(f"總內(nèi)存: {mem_info.total / (1024 ** 3):.2f} GB")
        print(f"可用內(nèi)存: {mem_info.available / (1024 ** 3):.2f} GB")
        print(f"內(nèi)存使用率: {mem_info.percent}%")
        time.sleep(interval)

if __name__ == "__main__":
    # 每隔 5 秒監(jiān)控一次內(nèi)存使用情況
    monitor_memory_usage(interval=5)

當(dāng)服務(wù)器出現(xiàn)性能瓶頸時(shí),可以使用此腳本實(shí)時(shí)了解內(nèi)存負(fù)載。


2. 日志分析腳本

2.1 日志文件解析

日志文件中常常隱藏著系統(tǒng)異常的線索。以下腳本可以解析日志中的時(shí)間戳、級(jí)別和信息。

import re

def parse_log_file(log_file):
    pattern = r\[(?P<timestamp>\d{2}/\w{3}/\d{4}:\d{2}:\d{2}:\d{2})\] \[(?P<level>\w+)\] (?P<message>.*)
    with open(log_file, ras file:
        for line in file:
            match = re.match(pattern, line)
            if match:
                timestamp = match.group(timestamp)
                level = match.group(level)
                message = match.group(message)
                print(f"時(shí)間: {timestamp}, 級(jí)別: {level}, 信息: {message}")

if __name__ == "__main__":
    # 替換為實(shí)際日志文件路徑
    log_file = "/var/log/syslog"
    parse_log_file(log_file)

正則表達(dá)式實(shí)現(xiàn)靈活解析,適合多種日志格式。


3. 文件備份腳本

3.1 定時(shí)文件備份

文件丟失可能導(dǎo)致嚴(yán)重后果,因此定期備份文件是防止數(shù)據(jù)丟失的關(guān)鍵措施。以下腳本會(huì)每隔一段時(shí)間自動(dòng)備份指定文件。

import os
import shutil
import time

def backup_file(source_file, backup_dir, interval=3600):
    whileTrue:
        timestamp = time.strftime("%Y%m%d_%H%M%S")
        backup_file = os.path.join(backup_dir, f"{timestamp}_{os.path.basename(source_file)}")
        shutil.copy2(source_file, backup_file)
        print(f"已創(chuàng)建備份: {backup_file}")
        time.sleep(interval)

if __name__ == "__main__":
    # 替換為實(shí)際文件路徑和備份目錄
    source_file = "/path/to/source/file"
    backup_dir = "/path/to/backup/directory"
    backup_file(source_file, backup_dir, interval=3600)

企業(yè)級(jí)環(huán)境中,定期備份重要配置文件或數(shù)據(jù)庫(kù)備份文件至關(guān)重要。


4. 系統(tǒng)更新腳本

4.1 自動(dòng)化系統(tǒng)更新

保持系統(tǒng)更新有助于提升安全性與穩(wěn)定性。以下腳本可以一鍵完成系統(tǒng)的更新操作。

import subprocess

def update_system():
    print("正在更新系統(tǒng)...")
    subprocess.run([sudoapt-getupdate])
    subprocess.run([sudoapt-getupgrade-y])
    print("系統(tǒng)更新完成。")

if __name__ == "__main__":
    update_system()

此腳本適用于Ubuntu或Debian系統(tǒng),可用于定期更新軟件包。


總結(jié)

上述四種腳本涵蓋了運(yùn)維工程師日常工作中的多個(gè)核心場(chǎng)景,代碼簡(jiǎn)潔且實(shí)用,兼具靈活性與可擴(kuò)展性。通過(guò)實(shí)踐這些腳本,不僅可以提升運(yùn)維效率,還能有效保障系統(tǒng)的穩(wěn)定性。