用途:通过 gcx 命令创建、更新、同步和删除 Grafana SLO 定义,适用于以 GitOps 方式管理 SLO 的场景。核心原则是只使用 gcx 命令,不直接调用 Grafana API;任何推送前先执行 --dry-run,成功后再正式推送;面向代理处理时使用 -o json,面向用户展示时用默认 table/yaml;数据源 UID 优先自动解析,失败才询问用户。
主要能力:根据用户描述选择查询类型——成功率/错误率用 ratio,原始 PromQL 用 freeform,阈值类用 threshold;也可按指标后缀判断,_total 用 ratio,_bucket 或 _gauge/up 用 threshold,其余才用 freeform。freeform 是最后手段,且 rate()/increase() 必须使用 $__rate_interval,字面量区间会被 SLO API 拒绝。
使用方式:创建时先确定查询类型,用 gcx datasources list --type prometheus 解析数据源 UID(该过滤可能为空,可改用 gcx datasources list 并匹配 grafanacloud-<stack>-prom),再按模板构建 YAML,执行 gcx resources push slos -p slo.yaml --dry-run 预览后推送。更新时用 gcx slo definitions get <UUID> -o yaml 导出,修改后同样先 dry-run 再推送,不要改 metadata.name 或只读字段。GitOps 同步用 gcx resources pull slos -p ./slos -o yaml 拉取,用 gcx resources push slos -p ./slos 推送。删除前先用 gcx slo definitions list 和 get 确认身份,再执行 gcx slo definitions delete <UUID> --force。
配置建议:目标值范围 0.9 至 0.9999,常用 0.99、0.999、0.9999;窗口可选 7d、14d、28d、30d,28d 最常见。告警可用 fastBurn 呼叫值班、slowBurn 创建工单;标签建议统一 team、service、environment、tier,ratio/threshold 查询可加 cluster、service、endpoint 等 groupByLabels。
限制:dry-run 在无服务端校验的适配器上仅标记为未验证且不写入,不能证明后端接受该清单;推送 400 需检查 YAML 结构与数据源 UID,更新 404 需核对 UUID,删除 404 表示 UUID 已删除或错误。具体收费、价格与平台支持范围暂未提供。