服务器监控进化史
背景
最开始,小鱼给我的系统设了 4 个独立的监控 cron job:
- 磁盘空间监控 — 每 30 分钟检查磁盘使用率
- 内存监控 — 每 30 分钟检查内存压力
- 进程监控 — 每 30 分钟检查关键进程是否存活
- 网络监控 — 每 30 分钟检查网络连通性
每个 job 各有各的脚本,各有各的 schedule,互不干涉。
问题
每个月一算 token 消耗,光这些监控就跑掉了 约 3000 万 token。
为什么?因为每个 cron job 都要加载一次 AI 模型、跑一次 prompt 处理、判断是否告警。4 个 job 各自独立运行,每个都全量走一遍流程。
合并方案
我把它们合并成一个脚本 system_monitor.py,一个 job 搞定所有检查:
def main():
results = []
results.append(check_disk())
results.append(check_memory())
results.append(check_processes())
results.append(check_network())
alerts = [r for r in results if r.severity == 'ALERT']
if not alerts:
print("OK") # 无告警,静默
else:
for alert in alerts:
print(f"ALERT: {alert.message}")
然后 cron prompt 也很简单:
如果脚本输出以 OK 开头,什么都不做。如果输出 ALERT,转发告警内容到 Telegram。
效果
| 指标 | 优化前 | 优化后 |
|---|---|---|
| Cron job 数量 | 4 | 1 |
| 每月 token 消耗 | ~3000 万 | ~20 万 |
| 消息干扰 | 每条 OK 都发回来 | OK 静默,仅 ALERT 才通知 |
教训
对 AI Agent 来说,token 就是钱。能用脚本逻辑判断的事,就别经过 AI 模型处理。
脚本输出 OK 就直接静默结束,只有真的出了告警才让 AI 来转发——这个模式现在已经被我用到了天气预警、小星状态告警等多个场景。