在 Ubuntu 上配置 Python 监控
一 监控目标与方案选型
二 快速上手 系统资源监控脚本与告警
import time, smtplib from email.mime.text import MIMEText import psutil
CPU_THRESHOLD = 80 MEM_THRESHOLD = 90
def send_alert(subject, body): smtp_host, smtp_port = “smtp.example.com”, 587 sender, password, receiver = “you@example.com”, “APP_PASSWORD”, “ops@example.com” msg = MIMEText(body, “plain”, “utf-8”) msg[“From”], msg[“To”], msg[“Subject”] = sender, receiver, subject with smtplib.SMTP(smtp_host, smtp_port) as s: s.starttls() s.login(sender, password) s.sendmail(sender, [receiver], msg.as_string())
def check(): cpu = psutil.cpu_percent(interval=1) mem = psutil.virtual_memory().percent print(f"CPU: {cpu}%, MEM: {mem}%“) if cpu > CPU_THRESHOLD: send_alert(“CPU 告警”, f"CPU 使用率 {cpu}% 超过阈值 {CPU_THRESHOLD}%”) if mem > MEM_THRESHOLD: send_alert(“内存告警”, f"内存使用率 {mem}% 超过阈值 {MEM_THRESHOLD}%")
if name == “main”: check()
三 进阶 文件变更监控与 Python 进程监控
from watchdog.observers import Observer from watchdog.events import FileSystemEventHandler import time
class Handler(FileSystemEventHandler): def on_modified(self, event): print(f"修改: {event.src_path}“) def on_created(self, event): print(f"创建: {event.src_path}”) def on_deleted(self, event): print(f"删除: {event.src_path}")
observer = Observer() observer.schedule(Handler(), path=“/var/log/myapp”, recursive=True) observer.start() try: while True: time.sleep(1) except KeyboardInterrupt: observer.stop() observer.join()
四 一体化监控与可视化