部署 Gatus 监控网站和 API
用 YAML 配置 Gatus 网站和 API 检查,以 SQLite 保存历史。绑定 Gotify 后,分别测试故障和恢复消息。
想把网站和 API 的监控规则保存在 YAML 里,修改时也能看差异,可以用 Gatus。更习惯在页面点选设置的话,先看 Uptime Kuma 部署。
配置检查地址和 SQLite 历史
以下字段按 Gatus 5.37.0 官方文档核对。Linux VPS 需要 Docker Engine、Compose 插件和本地持久化目录。在独立项目目录创建 config、data,将下面内容保存为 config/config.yaml,并把域名换成实际网站:
storage:
type: sqlite
path: /data/gatus.db
endpoints:
- name: public-site
url: "https://example.com/"
interval: 60s
conditions:
- "[STATUS] == 200"
默认内存存储在重启后不保留历史;这里改用 SQLite,并把文件放进持久化目录。状态码条件只检查 HTTP 响应,API 如果返回 JSON,还需要按实际字段补充条件,例如返回体真的有 status: UP 时,才使用 [BODY].status == UP。
保存 compose.yaml:
services:
gatus:
image: ghcr.io/twin/gatus:v5.37.0
restart: unless-stopped
ports:
- "127.0.0.1:8088:8080"
volumes:
- ./config/config.yaml:/config/config.yaml:ro
- ./data:/data
docker compose config -q
docker compose up -d
docker compose logs --tail=100 gatus
Compose 配置检查不会解析 Gatus 的条件表达式。启动后看应用日志,确认配置被读取,再从自己的电脑建立 ssh -N -L 8088:127.0.0.1:8088 your-vps 转发,访问本机 8088 端口。历史记录先保留在本地;准备公开状态页之前,要检查是否包含内部服务名称或地址。
配置 Gotify,并绑定要提醒的检查项
已经有 Gotify 时,为 Gatus 创建应用令牌。把下面部分加入同一个 config.yaml,用实际地址和令牌替换占位内容:
alerting:
gotify:
server-url: "https://notify.example.com"
token: "REPLACE_WITH_APPLICATION_TOKEN"
在需要通知的端点下,与 conditions 同级加入:
alerts:
- type: gotify
failure-threshold: 3
success-threshold: 2
send-on-resolved: true
配置含有令牌,限制文件访问权限,备份也应私密保存。重启 Gatus 后,用自己控制的测试端点检查故障和恢复消息。连续失败阈值是过滤短暂波动的条件,不是等待固定三分钟;实际时间还受间隔和请求耗时影响。
监控服务器不能和目标一起停掉
监控放在原机上适合观察容器服务,覆盖整机故障需要独立节点。先比较月付方案,确认目标地区、续费和通知出口;已有可用机器就继续使用,不必为几个检查重新购买大配置。
为少量 YAML 检查买独立节点时,先按 SQLite 历史保留量、频率和目标地区挑小型实例。可比较 Evoxt 的地区与小实例;需要中文系统管理说明,可查看 雨云 RCS 的 Linux 配置。Gotify 与监控若都自建,要把两项服务的资源用量,以及是否会同时故障算进去,购买后测试真实告警与恢复,而不只看容器存活。
升级前停服务,保存配置、SQLite 数据与镜像版本。恢复副本使用另一个端口并关闭通知,检查历史能否读取。恢复后再试一次访问和故障通知,检查条件也要按目标的真实响应确认。




