后端与接口
需要从多地域探活、发布前云压测或前端 RUM 时用…
当要监控网站/API 多地域可用性、用负载测试门禁发布、跟踪 Core Web Vitals 或关联前端错误到后端 trace 时,按 Synthetic Monitoring、k6 Cloud、Faro 三支柱执行探活、压测和前端埋点验证。
🧪 尚未被验证(还没有小呱复用过的记录,不代表不好)
GDI C 38/100
进化评分(GDI)
综合排序依据 —— 四个维度的加权结果,让你看出「为什么这条排在前面」
内在质量 55/100 ×0.35
使用度 0/100 ×0.30
口碑 50/100 ×0.20
新鲜度 59/100 ×0.15
适用场景
需要从多地域探活、发布前云压测或前端 R特定
解决思路
- 按三支柱选择工具:外部探测用 Synthetic Monitoring,负载测试用 k6 Cloud,真实用户监控用 Faro。
- 按需创建 Synthetic 检查类型:HTTP / DNS / TCP / Ping / Traceroute / Multihttp / k6-browser scripted checks,并从 20+ 全球探针中选择探针。
- 为 Synthetic 检查设置告警:对 `probe_success` 与 TLS-cert expiry 设置告警规则。
- 创建 Synthetic HTTP 检查:`curl -X POST https://synthetic-monitoring-api.grafana.net/sm/checks -H "Authorization: Bearer <sm-token>" -H "Content-Type: application/json" -d '{"job":"website","target":"https://example.com","frequency":60000,"timeout":15000,"enabled":true,"probes":[1,5,10],"settings":{"http":{"method":"GET","validStatusCodes":[200]}}}'`(完整 payload 见 references/synthetic.md)。
- 列出检查并确认已启用:`curl -s https://synthetic-monitoring-api.grafana.net/sm/checks -H "Authorization: Bearer <sm-token>" | jq '.[] | select(.job=="website")'`。
- 等待约 60 秒首次运行后,在 Grafana Explore 的 synthetic metrics datasource 中查询 `probe_success{job="website"}`;预期 `probes:[1,5,10]` 中每个探针都返回 1。
- 回滚 Synthetic 检查:调用 `DELETE /sm/checks/<id>`,或把检查设置为 `"enabled": false`。
- 需要深入 Synthetic 检查类型、PromQL 指标和告警规则时,查看 references/synthetic.md;需要完整 check CRUD、探针选择、scripted k6、多步 browser 检查时,查看 references/synthetic-monitoring.md,并参考 `synthetic-monitoring-checks` skill 了解执行模型、断言、secrets、API/Terraform payloads。
- 运行 k6 Cloud 前先登录:`k6 cloud login --token <grafana-cloud-k6-token>`。
- 先在本地做 smoke 验证,避免云费用:`k6 run --vus 1 --duration 30s script.js`。
- 编写 k6 场景并设置 `http_req_duration` thresholds(例如 p95<500ms、error<1%),让 k6 Cloud 跨 AWS load-zones 分布式执行。
- 在云上启动 k6 压测:`k6 cloud script.js`;运行页提供 URL,thresholds 决定 pass/fail。
- 在 CI 中集成 k6:使用 `grafana/k6-action`(完整脚本、scenarios、CI YAML 见 references/k6-and-faro.md)。
- 在 CI 中验证 k6 结果:`echo $?`;退出码 0 表示 thresholds 通过,99 表示 threshold 失败。
- 需要 k6 cloud 配置(project + load zones + thresholds)、CI、run 分析时,查看 references/k6-cloud.md。
- 安装 Faro Web SDK:`npm install @grafana/faro-web-sdk @grafana/faro-web-tracing`。
- 初始化 Faro:`initializeFaro({ url, apiKey, app, instrumentations })`(见 references/k6-and-faro.md)。
- 用 Faro 采集 RUM、Core Web Vitals、自定义事件,调用 `pushError` 上报错误,并关联 distributed trace。
- 推一个测试事件,便于在观测端查找:`faro.api.pushEvent('faro_smoketest', { ts: Date.now().toString() });`。
- 验证 collector 是否接收:在浏览器 DevTools → Network 查看对 `/collect` 的 POST 是否返回 202;若返回 401,通常是 apiKey 不匹配。
- 在 Grafana 中验证 Faro:Frontend Observability → 对应 app → Sessions 应出现你的 session;Explore 的 Loki 查询 `{kind="event"} |= "faro_smoketest"`;在 Tempo 中按 `service.name="my-frontend"` 过滤 trace。
- 排查 Synthetic 一直 `probe_success=0`:检查 `probe_*_duration_seconds` 找出失败阶段;`probe-region` label 指出哪个 prober 出错。
- 排查 k6 Cloud 显示 `ABORTED_THRESHOLD`:说明某个 threshold 被触发,打开 run 页面查看是哪一个。
- 排查 Faro 事件未到达:检查浏览器对 `/collect` 的网络请求是否返回 202;常见原因是 `apiKey` 或 `url` 错误(必须与 Frontend Observability app 匹配)。
适用边界 · 注意事项
- 不适用于没有 Grafana Cloud stack、Synthetic Monitoring `sm:write` token、Grafana Cloud k6 token + projectID、或 Faro app + write-token 的场景。
- 不适用于必须自托管/本地开源监控、不能使用 Grafana Cloud 付费服务的场景。