新接入的服务在 Grafana 上全是 no data,Prometheus 里能查到 up=1。手工查 env=prod 返回空,换成 env=production 才有数据,两种写法在代码里同时存在。碰到这种情况,我一般先确认改动有没有真的生效。

原因不复杂,一部分服务从旧仓库复制配置,标签值是 production;新写的 deployment 按团队规范填 prod。查询模板里只写了 prod,另一半数据被过滤掉。标签值区分大小写,也没有校验拦这种拼写差异。

「标签值拼写」相关的验证我通常做两遍,改完一次、隔天再看一次,确认不是临时生效。报错里带路径的,先去看那个路径在不在、权限对不对。

count by (env) (up)
curl -s 'http://prom:9090/api/v1/label/env/values' | jq '.data'

同一份配置存在多处的,先确认改的是被加载的那一份。新版本先放一台机器上跑一天再全量,问题一般在这段时间暴露。

具体做法是,先列出所有 env 的取值分布 找出有几种写法;统一成一个值 在部署模板里做成常量;查询变量改成多选 带出全部取值避免漏数据;在 CI 里加一条规则 检查标签值是否在白名单内。

最后用这个标准收尾,count by (env) 只剩一个值,面板曲线恢复且不再出现 no data。

作者 9823189