背景 服务器上跑了几个服务,平时没人盯着。有天半夜 Nginx 挂了,第二天早上才发现,网站挂了 8 小时。
想做到:服务一挂,微信立刻收到通知。
原因 服务器不会主动告诉你它病了。
要让它"会说话",需要两个东西:
| 角色 | 工具 | 作用 |
|---|---|---|
| 监控 | Uptime Kuma | 定期检查服务状态 |
| 通知 | Server酱 | 把告警推到微信 |
| Uptime Kuma 负责"发现异常",Server酱负责"送达消息"。 | ||
| 解决 | ||
| 第一步:部署 Uptime Kuma | ||
| 用 Docker Compose: |
services:
uptime-kuma:
image: louislam/uptime-kuma:1
container_name: uptime-kuma
restart: always
ports:
- "127.0.0.1:3001:3001"
volumes:
- uptime-kuma:/app/data
environment:
- TZ=Asia/Shanghai
volumes:
uptime-kuma:
docker compose up -d
浏览器通过 SSH 隧道访问 http://localhost:3001,首次进入创建管理员账号。 第二步:注册 Server酱 访问 sct.ftqq.com/,用微信扫码登录。
进入"SendKey"页面,复制你的 SendKey。
免费版:每天 5 条消息,够用。
第三步:在 Uptime Kuma 里配置通知 右上角 → 设置 → 通知
点 设置通知
通知类型选 Server酱
填入 SendKey
点 测试,微信立刻收到测试消息
第四步:添加监控项 点 添加新建监控项:
| 字段 | 填什么 |
|---|---|
| 监控类型 | HTTP(s) |
| 名称 | 大屏健康检查 |
| URL | http://127.0.0.1:8081/api/health |
| 心跳间隔 | 60 秒 |
| 重试次数 | 3 |
| 通知 | 勾选刚才配的 Server酱 |
| 含义: |
每 60 秒访问一次 /api/health
连续失败 3 次才发告警(防止网络抖动误报) 第五步:验证 手动触发一次告警:
# 停掉大屏容器
docker stop dashboard-dashboard_a-1
[监控告警] 大屏健康检查 已宕机
时间: 2026-10-07 15:30:00
等 3 分钟(60 秒 × 3 次重试),微信应该收到:
[监控告警] 大屏健康检查 已宕机
时间: 2026-10-07 15:30:00
恢复:
docker start dashboard-dashboard_a-1
再过 1 分钟,微信收到"恢复"通知。
三个坑 坑 1:Uptime Kuma 端口直接暴露公网
默认端口 3001,如果绑 0.0.0.0:3001,全世界都能访问你的监控面板。改成 127.0.0.1:3001,通过 SSH 隧道访问:
ssh -L 3001:127.0.0.1:3001 YOUR_USER@YOUR_SERVER_IP
然后本地浏览器打开 http://localhost:3001。
坑 2:重试次数设成 0
网络抖动是常态。设成 0 会导致"一闪断就报警",微信被轰炸。至少设 2-3 次重试。
坑 3:只监控了 HTTP,忘了服务器本身
Uptime Kuma 可以监控:
HTTP(s):网站能不能访问
TCP 端口:服务端口通不通
Ping:服务器活不活
建议至少三条:
Ping 服务器
HTTP 大屏
TCP 数据库端口
阅读分享:今天给大家分享一本神作《Wireshark网络分析就这么简单》,读完你会手痒,想亲手抓一段自己的网络流量看看。