Python 已經成為運維工作中常用的編程語言,在自動化部署、監控管理、數據分析等領域都有廣泛應用。下面介紹幾個 Python 運維實例。
1. 資源監控
import psutil
def get_cpu_percent(interval=1):
return psutil.cpu_percent(interval=interval)
def get_memory_percent():
return psutil.virtual_memory().percent
if __name__ == '__main__':
print('cpu 使用率:', get_cpu_percent())
print('內存使用率:', get_memory_percent())
上述代碼通過 psutil 庫獲取 CPU 使用率和內存使用率,可以結合 crontab 定時執行并將結果保存到日志中,以實現對資源的監控。
2. 部署自動化
import paramiko
def deploy(host, user, password, local_path, remote_path):
client = paramiko.SSHClient()
client.set_missing_host_key_policy(paramiko.AutoAddPolicy())
client.connect(host, username=user, password=password)
transport = client.get_transport()
sftp = paramiko.SFTPClient.from_transport(transport)
sftp.put(local_path, remote_path)
channel = client.invoke_shell()
channel.send(f'cd {remote_path}\n')
channel.send('docker-compose up -d\n')
while True:
if 'Starting' in str(channel.recv(1024)):
print('部署成功')
break
client.close()
if __name__ == '__main__':
deploy('192.168.1.1', 'root', 'password', '/opt/docker-compose.yml', '/home/root/docker/')
上述代碼使用 paramiko 庫實現了遠程部署應用的功能,其中使用了 paramiko 的 SSHClient 進行 SSH 連接,使用 SFTPClient 實現文件上傳,使用 invoke_shell 發送命令,并通過阻塞式接收返回結果以判斷部署狀態。
3. 數據分析
import pandas as pd
import matplotlib.pyplot as plt
def plot_csv(csv_file):
data = pd.read_csv(csv_file, index_col=0)
data.plot(kind='line')
plt.title('CPU使用率')
plt.xlabel('時間')
plt.ylabel('使用率(%)')
plt.show()
if __name__ == '__main__':
plot_csv('cpu.csv')
上述代碼使用 pandas 庫和 matplotlib 庫實現對 CSV 格式的數據文件進行分析和繪圖的功能,可以應用于監控數據的分析和可視化。