编程

wzz-server-monitor

试用

监控服务器 CPU/内存/磁盘使用率,超过配置阈值时通过 SMTP 发送邮件告警。支持可配置阈值、通知时间窗口、发送频率(防刷屏)和邮件文案模板。当用户询问服务器资源、负载、告警、监控通知、设置或查看资源监控时使用。Make sure to use whenever the user asks about server resource monitoring, load, or email alerts.

它能做什么

监控服务器 CPU/内存/磁盘使用率,超过配置阈值时通过 SMTP 发送邮件告警。支持可配置阈值、通知时间窗口、发送频率(防刷屏)和邮件文案模板。当用户询问服务器资源、负载、告警、监控通知、设置或查看资源监控时使用。Make sure to use whenever the user asks about server resource monitoring, load, or email alerts.

技能文档

wzz-server-monitor — 服务器资源监控通知

监控 CPU / 内存 / 磁盘使用率,超过阈值时通过 SMTP 发送邮件告警。核心脚本由 cron 独立定时运行,与任何 AI Agent 无关;本 SKILL.md 是配置文档和交互入口。

1. 快速开始

新用户三步完成:

  1. 初始化(检查依赖、生成配置目录与模板):

    python3 /scripts/monitor.py setup
    
  2. 编辑配置 ~/.config/resource-monitor/config.yaml,填入:

    • smtp:SMTP 服务器、账号、授权码(国内邮箱 QQ/163 均可;QQ 用「授权码」而非登录密码)
    • metrics:CPU/内存/磁盘阈值
    • window:允许发送的时间窗口(可选)
    • cooldown_minutes:通知频率(可选)

    SMTP 密码建议写入独立文件 ~/.config/resource-monitor/.smtp_secretchmod 600),配置文件只引用路径。

  3. 校验 + 安装定时任务

    python3 /scripts/monitor.py validate-config
    python3 /scripts/monitor.py send-test       # 收一封测试邮件
    bash /assets/install.sh                     # 自动写入 crontab
    

Claude 交互:用户说「看下服务器负载」→ 运行 status;「测一下告警邮件」→ send-test;「帮我配置监控」→ 引导用户完成 setup + 编辑 config.yaml + validate-config + send-test

2. 依赖

  • Python ≥ 3.9
  • psutilpyyamljinja2(第三方,安装时可用国内镜像加速)
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple psutil pyyaml jinja2

模板渲染优先 jinja2;缺失时脚本自动回退到 Python 标准库 string.Template,功能不中断。

3. 文件布局

skill 目录(随版本更新,只读):

路径说明
SKILL.md本文档
scripts/monitor.py核心监控脚本(cron 直接调用)
assets/config.example.yaml配置模板
assets/install.sh一键安装辅助
assets/templates/*.html邮件文案模板

运行时数据(用户环境,不受 skill 更新影响):

路径说明
~/.config/resource-monitor/config.yaml用户配置
~/.config/resource-monitor/.smtp_secretSMTP 密码(chmod 600)
~/.local/state/resource-monitor/state.json运行状态(告警去重/节流)
~/.local/state/resource-monitor/monitor.log运行日志

4. 发送决策模型

一份邮件聚合列出所有超限指标(不是每项一封)。状态机基于 state.json

  • 状态变化去重:只有指标从「正常 → 超限」才进入告警状态;恢复后重置,下次超限重新计时。
  • cooldown 节流:同一告警两次实际发送之间强制最小间隔 cooldown_minutes,防止刷屏。
  • 单日上限daily_cap 限制当日发送总数,防止异常失控。
  • 时间窗口window.rules 之外即使超限也静默不发,但状态照常记录、不推进上次发送时间——窗口一打开的第一轮检查就会补发(夜间超限、早上准时收到)。
  • 恢复通知recovery: true 时,恢复正常会发一封恢复邮件(受 cooldown 与窗口约束)。

决策优先级:冷却期内 → 当日已达上限 → 窗口外静默 → 发送。

5. 配置参考

assets/config.example.yaml(带注释的完整示例)。校验命令:

python3 /scripts/monitor.py validate-config --smtp-connect

--smtp-connect 会额外执行 SMTP 连接与认证握手(不发信)。

6. 模板编写

模板文件在 assets/templates/,使用 Jinja2 语法。可在 config.yaml → templates 修改主题与正文文件名。

暴露给模板的变量白名单(SMTP 凭据绝不会进入模板上下文):

变量说明
hostname服务器名(hostname_label 或系统主机名)
timestamp本地时间 YYYY-MM-DD HH:MM:SS
statusalarm / recovery / test
alarm_count超限指标个数
alarms[{metric, current, threshold, path}] 超限指标列表
metrics全量指标 {key: {percent, threshold, path}}
uptime运行时长(timedelta)
load_avgpsutil.getloadavg() 三元组

subject 同样支持模板变量,如 [{{ hostname }}] 资源告警 ({{ alarm_count }}项)

7. cron

脚本由 cron 定时运行,每 5 分钟一次全天运行;时间窗口在脚本内过滤(二者正交,改窗口不影响 cron)。

*/5 * * * * /usr/bin/python3 ~/.claude/skills/wzz-server-monitor/scripts/monitor.py check --config ~/.config/resource-monitor/config.yaml >> ~/.local/state/resource-monitor/monitor.log 2>&1
  • 使用绝对路径 python3,不依赖 cron 的 PATH。
  • 检查频率决定「多久看一次」,通知频率由 cooldown_minutes 控制。
  • bash assets/install.sh 可自动写入并去重 crontab。

WSL2 / 容器 cron 自启

WSL2 与多数容器默认不启动 cron 服务。手动启动:

sudo service cron start

开机自启(WSL2):编辑 /etc/wsl.conf

[boot]
command = service cron start

8. 日常维护

需求命令
查看当前指标与状态monitor.py status
手动触发一次检查monitor.py check --dry-run(只打印决策)
绕过窗口测试monitor.py check --now
重置告警状态monitor.py reset-state
修改配置后校验monitor.py validate-config

日志位置 ~/.local/state/resource-monitor/monitor.log,长跑后手动截断(> log)。

9. 故障排查

现象排查
SMTP 认证失败QQ/163 邮箱必须用「授权码」(设置里生成)而非登录密码;检查 security/port 是否匹配(ssl=465, tls=587)
日志为空检查 cron 服务是否运行(WSL2 见上);crontab -l 确认条目
CPU 恒为 0%cron 每轮是全新进程,cpu_interval 必须 > 0(默认 0.5)
窗口内仍没收到validate-config 确认时间格式;status 查看 window: 开/关
不想收到重复告警调大 cooldown_minutes 或开启 recovery 恢复通知

10. 在其他 Agent 中使用(Claude / Codex 等)

本 skill 遵循 Agent Skills 开放标准,核心格式(SKILL.md + YAML frontmatter + Markdown)在 Claude Code、OpenAI Codex、Cursor 等主流 Agent 间通用:

  • 本文件的 name/description/version 是通用字段;user-invocableallowed-tools 是 Claude Code 增强,其他 Agent 会忽略。
  • 监控功能本身与 Agent 无关:即使不经过任何 Agent,cron 直接运行 scripts/monitor.py check 即可工作。

在 Codex 等其他 Agent 中使用时,把本 skill 目录软链到它的 skills 发现路径:

mkdir -p ~/.codex/skills   # 或 .agents/skills
ln -s  ~/.codex/skills/wzz-server-monitor

11. 安全说明

  • SMTP 密码存 ~/.config/resource-monitor/.smtp_secretchmod 600),不写入配置文件。
  • 模板上下文只注入白名单变量,凭据与完整配置不进模板。
  • 脚本只读取系统指标与发送邮件,不做任何删除/修改系统操作。
  • 发布版本不包含任何用户数据;config.yamlstate.json.smtp_secret 均生成于用户本地目录。

相关技能

个人服务器监控工具,支持CPU/内存/磁盘基础指标与简单告警通知。Use when 需要系统监控、日志分析、运维告警、部署管理时使用。不适用于物理硬件维修。适用于独立开发者、企业团队和自动化工作流场景。支持中文交互,无需复杂配置即开即用。输出结果可直接使用,减少二次加工成本。提供结构化输出和错误处理机制。

1 次安装

服务器健康监控与自动恢复技能。当服务器出现卡顿、崩溃、Bot 连接异常或网关中断时使用此技能。支持:执行健康检查、自动诊断故障、一键恢复 Gateway、清理内存/磁盘、整理日志、检查 OOM Killer 等操作。触发场景包括:服务器变慢、Bot 无响应、日志报 ERROR、内存/磁盘告警、进程消失等任何异常情...

2 次安装

邮件与消息发送助手。覆盖 SMTP 发信(Gmail / Outlook / QQ / 163 / 企业邮箱)、IMAP 收信检索、以及常见消息通知(Webhook / 企业微信 / 飞书 / 钉钉机器人)。当用户需要"发邮件""通知我""把结果发到邮箱""读取邮件"时调用。

全平台状态监控助手。监控AI平台可达性、关键词变化、响应时间、竞品动态,支持飞书/微信/钉钉通知、定时巡检、健康度评分。触发词:"监控XX平台"、"检查XX状态"、"XX是不是挂了"、"每天9点帮我检查"、"有没有新公告"、"竞品有什么变化"。

3 次安装

采集主机与站点日志、汇总指标并生成告警和定时 PDF 报告,同时保留安全的自动处置边界。

19 次安装1 星标

Privora 实时监控——黄金实时监控 / 基金净值监控 / 多资产阈值告警,给一个已订阅资产字段配一条阈值规则(跌破/突破/等于),越线即飞书/微信/通用 Webhook 通知你;港股/美股/A股同样支持。建渠道→建规则→验证→上线,一份文档 11 步走完;Bearer Token 直连 /agent/skills/execute。

1 星标