如何在Ubuntu上配置Python监控
在 Ubuntu 上配置 Python 监控
一 监控目标与方案选型
- 监控对象:系统资源(CPU、内存、磁盘、网络)、Python 进程数量与资源、关键目录变更、日志异常关键字。
- 方案选型:
- 轻量自研:用 Python + psutil 采集指标,阈值判断,超阈值通过 SMTP 发邮件;定时用 cron 执行。
- 现成一体化:安装 Glances(基于 Python),支持本地/远程 客户端-服务器 模式,多指标可视化与阈值着色。
- 进程与服务视角:命令行 ps/pgrep/top/htop 快速排查;作为服务运行时用 systemd 管理并查看状态。
二 快速上手 系统资源监控脚本与告警
- 安装依赖
- sudo apt update & & sudo apt install -y python3 python3-pip
- pip3 install psutil
- 最小可用脚本(阈值告警示例)
- 说明:采集 CPU 1 秒均值 与 内存使用率;超过阈值调用邮件告警函数。
- 使用:将发信参数替换为你的 SMTP 信息;脚本路径为 /opt/monitor/monitor.py。
- 定时:执行 crontab -e 添加(每分钟执行一次)
-
-
-
-
-
- /usr/bin/python3 /opt/monitor/monitor.py
-
-
-
-
-
- 参考代码
-
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()
-
- 安全建议
- 使用 应用专用密码 或 SMTP Token,避免明文口令;尽量采用本地/内网 MTA 或 465/587 加密提交。
三 进阶 文件变更监控与 Python 进程监控
- 文件变更监控(watchdog)
- 安装:pip3 install watchdog
- 示例:监控目录创建/修改/删除事件,可做日志轮转、配置热加载、异常文件落盘告警等。
-
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()
-
- Python 进程数量监控
- 命令行快速查看
- ps aux | grep python
- pgrep -af python
- top/htop 中按 F3 搜索 “python”
- Python 脚本计数(便于集成到监控平台)
- import subprocess def python_count(): out = subprocess.check_output(“ps aux | grep python | wc -l”, shell=True, text=True) return int(out.strip()) - 1 # 减去 grep 自身 print(“Python 进程数:”, python_count())
- 命令行快速查看
- 作为服务运行时的监控
- 使用 systemd 管理:sudo systemctl status your-python.service
- 结合日志:journalctl -u your-python.service -f 实时查看输出。
四 一体化监控与可视化
- Glances 安装与特性
- 安装:sudo apt install -y glances
- 启动:glances(本地终端多指标汇总,颜色区分状态)
- 远程监控:在服务端执行 glances -s -B 0.0.0.0 -p 61209;在客户端执行 glances -c < 服务器IP>
- 配置文件:/etc/glances/glances.conf(可设置告警阈值、插件等)
- 适用场景
- 临时排查、值班巡检、无侵入快速上线;也可配合 告警脚本/WebHook 做二次集成。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何在Ubuntu上配置Python监控
本文地址: https://pptw.com/jishu/789148.html
