宝塔面板 + Server酱:服务器告警推送到微信

效果:宝塔面板的系统告警、服务停止、证书到期等通知通过 WEB HOOK 通道推送到微信

前置条件

  • Server酱 SendKey:登录 sct.ftqq.com,在「SendKey」页面复制(30 秒获取教程
  • 宝塔面板已安装并可正常访问管理界面
  • 如需推送到企业微信/钉钉/飞书群,参考通道配置说明

配置步骤

第一步:创建 WEB HOOK 消息通道

在宝塔面板中新增 WEB HOOK 消息通道(具体操作路径以面板实际显示为准),填写以下配置:

URL: https://sctapi.ftqq.com/你的SENDKEY.send
请求方法: POST
Body 类型: form_data
自定义参数:
  title = $title
  desp = $msg

将你的SENDKEY 替换为实际的 SendKey。若 SendKey 以 sctp 开头,请参考 Server酱 官方文档获取正确的 URL 格式。

第二步:理解 $msg → desp 映射的必要性

宝塔 WEB HOOK 通道在不添加自定义参数时,默认发送的 body 为 {"title":..., "msg":..., "type":...}。Server酱 API 只识别 desp 字段作为正文,不认 msg 字段。因此必须通过自定义参数将 $msg 映射到 desp,否则只会收到标题,正文为空。

第三步:关联告警项

宝塔的告警通知分布在各功能模块中,包括但不限于:

  • 系统告警:CPU 占用过高、磁盘余量不足
  • 服务停止:面板服务异常停止
  • 证书到期:SSL 证书即将过期
  • 网站流量限额:站点流量超出设定值
  • 防篡改(企业版):文件被异常修改

在各告警功能设置处,将消息通道选择为刚才创建的 WEB HOOK 通道(具体路径以面板实际显示为准)。

完整示例

以下是一个完整的 WEB HOOK 通道配置,可直接对照填写:

URL: https://sctapi.ftqq.com/你的SENDKEY.send
请求方法: POST
Body 类型: form_data
自定义 Header: (留空)
自定义参数:
  title = $title
  desp = $msg

配置完成后,可触发一次告警测试验证。若微信收到消息且标题和正文均正常显示,说明【成功】;若只有标题没有正文,检查是否遗漏了 desp=$msg 参数。

常见问题

每天能发多少条告警?

免费额度为每天 5 条。订阅会员目前特价最低 3 元/月,一天最多可发 1000 条(价格详情)。

发送频率有什么限制?

每分钟上限 50 条。宝塔 WEB HOOK 通道以 HTTP 200 判定发送成功,失败时自动重试最多 3 次,超时间隔递增。

配置了 WEB HOOK 但微信没收到消息?

首先检查 SendKey 是否正确填入 URL;其次确认已添加自定义参数 title=$title 和 desp=$msg;最后确认对应告警项已关联该通道。更多排查方法见常见问题与排查

可以同时推送到钉钉/飞书群吗?

可以。Server酱 支持推送到企业微信、钉钉群、飞书群等通道,参考通道配置说明。宝塔侧只需配置一个 WEB HOOK 指向 Server酱 即可。

相关集成

懒人方案:把这段话复制给你的 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 条结果摘要即可,批量任务合并成一条,不要每步都推。
请根据我当前的项目和场景直接写好代码/配置并验证。