Healthchecks + Server酱:定时任务监控告警直达微信

效果:当被监控的 cron 任务、定时脚本或备份任务未按时“打卡”时,Healthchecks 会通过 Server酱 将告警消息发送到你的微信。

前置条件

  1. 获取 SendKey:按照 30 秒获取 SendKey 教程,拿到你的 SCT 开头的 SendKey。
  2. 启用 Apprise 集成:若你使用的是自托管(Self-hosted)版本的 Healthchecks,需要在环境变量中设置 APPRISE_ENABLED=True 以启用 Apprise 通知功能。

配置步骤

  1. 在 Healthchecks 中添加 Apprise 集成: 登录你的 Healthchecks 控制面板,进入需要设置通知的项目(Project)。 在左侧导航栏找到并点击 Integrations,然后在集成列表中找到 Apprise 并点击进入配置页面。

  2. 填写 Server酱 通知地址: 在配置表单中,找到 URL 或 Webhook 地址的输入框。 填入以下格式的地址(请将 你的SENDKEY 替换为你的真实 SendKey):

    schan://你的SENDKEY
    

    schan:// 是 Apprise 中用于 Server酱 的专用协议前缀。填写后保存配置。

  3. (可选)命令行验证: 为了确保配置正确,你可以在服务器上使用 Apprise 命令行工具进行快速测试(需要先安装 apprise):

    pip install apprise
    apprise -t "Healthchecks测试" -b "这是一条测试消息" "schan://你的SENDKEY"
    

    如果配置正确,你将立刻在微信上收到标题为“Healthchecks测试”的消息。

  4. 测试告警: 返回 Healthchecks,找到你的任意一个检查项(Check),等待一个监控任务真实超时(或按 Healthchecks 官方文档触发一次失败信号)。随后,Healthchecks 便会通过 Apprise 调用 Server酱,你将收到一条告警微信。

常见问题

免费账户够用吗? Server酱 免费版每日可发送 5 条消息。对于监控告警场景,通常足够。如果监控项非常多或需要高频测试,可考虑订阅会员(39 元/12 个月)。

消息没收到怎么办? 请首先访问 消息没收到?常见问题与排查 页面,按照步骤检查 SendKey、通道绑定等情况。

有发送频率限制吗? 为防止滥用,Server酱对 API 调用有频率限制,免费用户每分钟不超过 50 次请求。监控告警一般不会触发此限制。

为什么必须用 SCT 开头的 SendKey? schan:// 协议目前仅支持 Server酱Turbo(SCT 开头)的 SendKey。Server酱³ 的 sctp 开头 SendKey 暂不支持此集成方式。

支持推送到企业微信或钉钉吗? 支持。在 Server酱 后台绑定对应通道即可,详见通道对比。Healthchecks 端的 schan:// 配置无需更改。

相关集成

懒人方案:把这段话复制给你的 AI 助手

把下面这段文字原样粘贴给 Claude Code、Cursor 或任何 AI 编程助手,它就会替你完成 Server酱 的接入:

请帮我把 Server酱 微信通知接入到我当前的项目/工具中:
1. API:POST https://sctapi.ftqq.com/{SendKey}.send,参数 title(必填,不能含换行)、desp(正文,支持 Markdown,可选);成功时返回 JSON 的 code 为 0。
2. 如果我的 SendKey 以 sctp 开头,则改用 https://{uid}.push.ft07.com/send/{SendKey}.send,uid 是 SendKey 中 sctp 与 t 之间的数字。
3. SendKey 从环境变量 SERVERCHAN_SENDKEY 读取;如果没有,提醒我到 https://sct.ftqq.com 免费获取(每天 5 条额度)。
4. 安全要求:不要把 SendKey 硬编码进代码、不要打印到日志、不要提交到 git。
5. 频率约定:任务结束发 1 条结果摘要即可,批量任务合并成一条,不要每步都推。
请根据我当前的项目和场景直接写好代码/配置并验证。