我们多年以来用 Prometheus + blackbox exporter 自己写拨测——probe_success、probe_http_status_code、Alertmanager 路由、Grafana 拼板,一条龙。Uptime Kuma、Uptime Robot 这种"按几下就能监控"的轻量工具,下意识被归到了"个人站长玩具"那一栏,从未认真看过。
直到去年起,身边接手的几个项目全在调 OpenAI、Claude、DeepSeek 的 API。几个我们以为没必要装的功能,这一刻全成了刚需:多区域探针、对响应体做 JSON 断言、漂亮的对外状态页、Slack/企业微信/Lark 双通道告警…blackbox exporter 自己拼,工作量是周级;docker run louislam/uptime-kuma:1,十分钟就能用。
写这篇是为了把这个领域的常见工具梳理一遍,顺便回答一个我们自己问过的问题——LLM API 时代,这一类工具凭什么从"轻量替代品"变回了运维基础设施?
场景与维度:八款工具一张表对完
下表覆盖了我们见过的八款主流工具(七款 Uptime 类 + Prometheus blackbox exporter 作为对照),按运维最关心的几个维度打分:
| 维度 | Uptime Kuma | Uptime Robot | Better Stack | Statuscake | Healthchecks.io | Gatus | Cronitor | blackbox exporter |
|---|---|---|---|---|---|---|---|---|
| 部署模式 | 自托管 Docker | SaaS | SaaS | SaaS | SaaS / 自托管 | 自托管 YAML | SaaS | 自托管 + Prom |
| 免费档检查间隔 | 自定义 | 5 min | 30 sec | 5 min | n/a (被动) | 自定义 | 1 min (限量) | 自定义 |
| 多区域探针 | 单点 | 6+ 区域 | 30+ 全球 | 28 站点 | n/a | 多实例自配 | 内置 | 多 prober 自配 |
| 状态页 | 内置 | 内置 | ★ 漂亮 | 内置 | 简单 | 内置 | 内置 | 自己拼 Grafana |
| 心跳 / Cron | Push 模式 | 部分 | 支持 | 部分 | ★ 主打 | 支持 | ★ 主打 | 不擅长 |
| 通知通道数 | 90+ | ~20 | 50+ | 20+ | 25+ | 20+ | 20+ | Alertmanager 自配 |
| LLM API 适配 | ★ 自托管首选 | ★ SaaS 入门 | ★ 商业首选 | 一般 | ★ 任务兜底 | ★ GitOps 党 | ★ Cron 党 | 起步成本最高 |
四个 ★ 的密度,集中在 Uptime Kuma / Uptime Robot / Better Stack / Gatus 上,这四款也是下面会重点讲的。挑其中四款代表画了张雷达,看看强弱在哪:
如雷达所示,blackbox exporter 在"Prometheus 集成"上一骑绝尘——这是它的唯一霸权。其余五个维度,Uptime 类工具或多或少都更顺手。
各自的最佳生态位
Uptime Kuma(louislam/uptime-kuma,GitHub 60k+ star)
一个 Docker 启起来,十分钟内能监控 LLM API 网关 + 自家服务 + 数据库 + DNS + TLS 到期。90+ 通知渠道(Slack、企业微信、Lark、Bark、PagerDuty…)开箱即用——这一点 Alertmanager 自己配至少是周级工作量。痛点是单点部署、没有多区域探针:要测 OpenAI 在欧洲是不是不通,得在欧洲机器上再起一个 Uptime Kuma 实例,主实例订阅它的 status page 做"meta uptime"。
Uptime Robot
业界老大哥,SaaS,免费档 50 个监控点 + 5 min 间隔 + 6 个 region。LLM API 场景的"最低门槛验证"工具:把https://api.openai.com/v1/models(带 Bearer token)配成 keyword 检查,十秒钟搞定。缺点是 5 min 间隔比较粗,30 sec 间隔要付费(US$7/月起)。
Better Stack(原 Better Uptime)
漂亮得不像运维工具的状态页 + 30 秒检查间隔 + 事件管理 + on-call 排班一体。团队 ≥3 人、对外有付费 API 服务时,是商业方案的合理选择——省下来的运维拼盘时间足够 cover 月费。
Healthchecks.io(开源 + SaaS 双模式)
反向监控——服务"主动 ping 它",超时即告警。LLM 应用里"批处理任务今晚 3 点没完成"这种场景的最佳工具。自托管开源,Django + PostgreSQL,单实例能扛上万 check。
Gatus(TwiN/gatus,GitHub 20k+ star)
YAML-as-Config + Go 原生,部署像 Prometheus 一样轻。支持复杂断言:对 LLM API 响应可以直接写[STATUS] == 200 && [BODY].choices[0].message.content != "",等于在拨测层做语义级验收。喜欢 GitOps 的 SRE 团队首选。
Cronitor
SaaS,主打 cron / 任务 / API uptime 三合一。计费按 monitor 数量,价格清晰,适合对 SaaS 没洁癖的团队。
Statuscake
老牌 SaaS,免费档慷慨(10 个监控、5 min)。生态位被 Better Stack 蚕食,但价格依然便宜。
Prometheus blackbox exporter(对照组)
“工程师乐高”,和现有 Prometheus + Alertmanager + Grafana 体系无缝集成。缺点是所有非指标的事——状态页、Webhook 渠道、值班排班、对外 SLA 报告——都得自己拼。对 LLM API,写module: api_openai_chat很容易;但要做"chat completions 的 P95 latency 给 SRE on-call 周报、429 占比超 1% 升级到 PagerDuty",工作量是 Uptime Kuma 的 5 倍以上。
为了直观,把同一件事用两边的写法对照一下。blackbox exporter探 OpenAI/v1/models的最小配置:
modules:api_openai:prober:httptimeout:10shttp:method:GETheaders:Authorization:"Bearer ${OPENAI_TOKEN}"valid_status_codes:[200]fail_if_body_not_matches_regexp:-'"id":"gpt-'然后还要在 prometheus.yml 加 scrape job、写 alert rule、配 Alertmanager 路由、起 Grafana dashboard——五个文件、四个进程。Gatus同样的事:
endpoints:-name:openai-modelsurl:https://api.openai.com/v1/modelsinterval:60sheaders:Authorization:"Bearer ${OPENAI_TOKEN}"conditions:-"[STATUS] == 200"-"[BODY].data[0].id == pat(gpt-*)"alerts:-type:slacksend-on-resolved:true一个文件、一个进程,status page 自动生成。
LLM API 把这一类工具推回 C 位的四个原因
我们为什么要回头看这堆"轻量级工具"?有四件事是过去十年的传统业务监控不太需要、但 LLM API 时代每天都会撞上的:
如上图,左半边是熟悉的"白盒"——业务服务暴露 metrics、Prometheus 抓、Grafana 看、Alertmanager 报警。右半边是被忽视太久的"黑盒"——拨测看到的世界,也是 LLM API 唯一能被监测到的世界。
1. 黑盒比白盒重要,这件事在 LLM 场景下被反转了。
SRE 教条里"白盒优先、黑盒辅助"是金科玉律——USE / RED / Golden Signals 都是白盒指标。可调用 OpenAI 时,我们看不到对方的 USE,只有黑盒拨测能告诉我们"它现在能不能用"。这一刻,Uptime Kuma 的 5 分钟间隔 HTTP 探针,比我们苦心经营的 metrics 体系更能回答业务老板的那句问话:“模型现在还能调吗?”
2. 多区域探针从奢侈品变成必需品。
OpenAI 在 2024 年有过几次区域性 5xx,Anthropic 在 2026 年初也出现过欧亚区配置漂移导致的 401。北京、新加坡、法兰克福各放一个探针,看到的"是否可用"完全不一样。Uptime Robot / Better Stack 的全球探针网络在这个场景下直接降维打击——单点 blackbox exporter 想做到这一点,得自建跨地域 VPS + Federation,绕一大圈。
3. HTTP 200 不等于 LLM API 真的工作。
LLM API 有一类很特殊的失败:状态码 200,body 是{"error": {"type": "rate_limit_exceeded"}}或{"choices": []}。传统服务的probe_http_2xx在这里直接漏报。Gatus 的[BODY].xxx断言、Uptime Kuma 的 keyword check,都能直接判定"虽然 200 但其实坏了"。blackbox exporter 的fail_if_body_matches_regexp也能做,但写多组合判断时的表达力,不如 JSONPath。
4. 告警通道复用是个被低估的红利。
LLM 应用的告警源头其实很碎:模型 5xx、限流、token 计费突变、批处理任务延误、向量库重建超时…如果每一类都要单独搭一套通知链(谁配 Slack webhook?谁定升级策略?),运维心智成本爆炸。Uptime Kuma / Better Stack 的通知通道是中央化的——同一份值班表、同一个 Slack channel,既收宕机也收业务异常,直接省掉一层维护。
推荐路径
按团队规模和文化,给一条可执行建议:
- 个人 / 小团队 / 自托管偏好:Uptime Kuma 一台 + 跨地域 VPS 各起一个 Uptime Kuma 实例,主实例订阅副本的 status page 做"meta status"。
- 团队 ≥3 人,对外有付费 API:Better Stack 付费档,省下的运维拼盘时间足够 cover 月费。
- GitOps / IaC 文化重:Gatus YAML 走 Git,CI 校验配置,跟 Terraform / ArgoCD 同一套语言。
- 关键 cron / 异步任务:Healthchecks.io,永远比"cron 失败时再被发现"强一个数量级。
- 已经重度 Prometheus:blackbox exporter 留给已经在 Prom 体系里的内部服务。新增的 LLM API 监控不要再写进 blackbox——
docker run uptime-kuma一键解决,把工程师时间留给真正不能外包的事。
留一个反向问题给我们自己:再过两年,如果连模型推理也搬到了 Modal、Replicate、Cloudflare Workers AI 这种"全托管"平台上,blackbox exporter 自建拨测还能罩住哪些场景?能想到的答案越短,这一票 Uptime 工具被纳入运维工具箱的优先级就越高。