Gatus 是一款专为监控服务健康状态设计的仪表板工具,它广泛支持 HTTP、ICMP、TCP、DNS、SCTP、SSH 等多种网络协议。用户可以通过定义状态码、响应时长、证书到期时间、响应正文内容等详细条件来全面评估服务的运行状况。在告警功能方面,Gatus 提供了丰富的集成支持,包括 webhook、Gotify、ntfy、Pushover、Telegram、Slack、Discord、GitHub 等数十种通知方式,确保用户能及时接收服务异常信息。

- 项目源码地址:
https://github.com/TwiN/gatus - 官方网站:
https://gatus.io/(该项目提供商业付费版本,用户可根据需求选择) - Docker Compose 部署配置:
services:
gatus:
image: docker.1ms.run/twinproduction/gatus:latest
container_name: gatus
restart: unless-stopped
ports:
- 8083:8080
volumes:
- ./config:/config
- ./data:/data
Gatus 的 Docker 镜像默认发布在 Docker Hub 平台,为了加速镜像拉取过程,我在上述 Compose 文件中添加了镜像加速地址 docker.1ms.run。需要注意的是,这个加速地址来源于网络公开资源,其可用性无法长期保证,用户在使用时可能需要根据实际情况调整。
核心功能特性
- 高度灵活的健康检查机制:Gatus 允许用户基于响应代码、连接状态、响应时间、IP 地址、数据包长度、JSON 内容、SSL 证书状态、域名信息等多种条件进行服务健康评估。
- 简洁易用的配置方式:采用 YAML 格式的配置文件,结构清晰易懂,添加新的监控项或修改现有设置都非常便捷。
- 全面的告警通知支持:工具内置了对 Slack、Mattermost、Messagebird、PagerDuty、Twilio、Google Chat、Teams 等平台的通知发送功能,同时支持用户自定义 webhook 以满足个性化需求。
- 低资源消耗与高效性能:基于 Go 语言开发,Gatus 在运行时占用系统资源较少,执行效率高,适合在资源受限的环境如 NAS 中部署。
- 暗黑模式界面:提供视觉友好的暗色主题,方便用户在低光环境下使用。

部署与配置体验
在启动 Gatus 容器之前,建议用户先创建并配置好监控文件和告警设置。以下是一个经过测试可用的企业微信告警配置示例,供大家参考:
storage: ## 配置数据库存储类型
type: sqlite
path: /data/data.db
alerting:
custom:
url: "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=《这里替换为你自己的Key》"
method: "POST"
body: |
{
"msgtype": "markdown",
"markdown": {
"mentioned_list": ["@all"],
"content": "## 站点告警: [ALERT_TRIGGERED_OR_RESOLVED]\n- [ENDPOINT_NAME]\n- [ALERT_DESCRIPTION]\n- [RESULT_ERRORS]"
}
}
endpoints:
- name: slink图床
url: "https://slink.games.freemyip.com"
interval: 8m
conditions:
- "[STATUS] == 200"
- "[RESPONSE_TIME] < 300"
- "[DOMAIN_EXPIRATION] > 720h" ## 检查域名有效期是否大于 30天
- "[CERTIFICATE_EXPIRATION] > 168h" ## 检查证书有效期是否大于7天
alerts:
- type: custom
failure-threshold: 2 # 失败2次就告警
send-on-resolved: true
description: "slink挂了"
完成配置后,启动 Docker 容器,在浏览器中访问 http://<nas-ip>:8083 即可查看监控面板。例如,在我的测试环境中,由于 SSL 证书已过期,系统触发了告警,界面显示为红色警示状态。
上述配置展示了如何监控一个 HTTPS 网站,Gatus 还支持多种其他服务类型的监控,以下是一些常见示例:
监控 TCP 服务(如 Redis)
endpoints:
- name: redis
url: "tcp://127.0.0.1:6379"
interval: 30s
conditions:
- "[CONNECTED] == true"
监控 UDP 服务
endpoints:
- name: example
url: "udp://example.org:53"
conditions:
- "[CONNECTED] == true"
监控 SCTP 服务
endpoints:
- name: example
url: "sctp://127.0.0.1:38412"
conditions:
- "[CONNECTED] == true"
监控 WebSocket 服务
endpoints:
- name: example
url: "wss://example.com/"
body: "status"
conditions:
- "[CONNECTED] == true"
- "[BODY].result >= 0"
监控 ICMP 服务(Ping 检查)
endpoints:
- name: ping-example
url: "icmp://example.com"
conditions:
- "[CONNECTED] == true"
监控 DNS 查询
endpoints:
- name: example-dns-query
url: "223.5.5.5" # 指定 DNS 服务器
dns:
query-name: "example.com"
query-type: "A"
conditions:
- "[BODY] == 93.184.215.14"
- "[DNS_RCODE] == NOERROR"
监控 SSH 服务
endpoints:
- name: ssh-example
url: "ssh://example.com:22" # 端口可选,默认为 22
ssh:
username: "username"
password: "password"
body: |
{
"command": "uptime"
}
interval: 1m
conditions:
- "[CONNECTED] == true"
- "[STATUS] == 0"
除了上述类型,Gatus 还支持 TLS 监控等高级功能,例如指定本地证书进行验证,由于篇幅限制,这里不逐一详细展开。
综合评估与对比
- 功能广度方面:Gatus 在支持的协议类型和检查条件上远超 uptime-kuma,提供了更全面的监控覆盖。
- 功能深度方面:Gatus 在细节处理上更为精细,例如请求条件设置、监控类型多样性、告警触发条件和通知方式等方面都表现出更强的可定制性。
- 用户体验角度:Gatus 目前存在一些不足,例如界面缺乏中文支持,且所有配置均通过 YAML 文件完成,缺乏可视化操作界面,这可能导致配置过程容易出错,对新手用户不够友好。