Grafana 8告警API无法返回实例详情 如何获取告警实例IP信息
解答
可以拿到告警实例的实际IP,你调用的/api/prometheus/grafana/api/v1/rules接口返回的是告警规则的原始模板配置,本身存储的就是未渲染的变量值,所以只会显示$instance而不会解析成实际IP,更换对应接口或者补充变量查询即可拿到真实信息,具体方案如下:
- 方案1:查询已触发告警的实际实例
直接调用告警状态接口/api/prometheus/grafana/api/v1/alerts,该接口返回的是当前所有正在触发的告警的渲染后结果,每个告警条目的labels字段下会直接包含解析完成的instance标签,值就是对应实例的实际IP、端口或主机名,无需额外处理变量替换。 - 方案2:查询所有告警规则关联的全量实例列表
如果你需要拿到某张看板所有告警规则对应的全部可能实例,不需要等告警触发,可以通过变量查询的方式获取:- 调用
/api/dashboards/uid/{对应看板的UID}接口,拿到看板的配置信息,在templating.list字段下找到instance变量的配置,获取该变量对应的Prometheus数据源和查询语句 - 调用对应Prometheus数据源的查询接口执行上述查询语句,就能拿到
$instance变量对应的所有可选实际实例值
- 调用
注意:规则配置接口本身设计上就不会渲染模板变量,不要尝试从该接口的返回值中解析实际实例信息,只有实际运行的告警数据或者单独的变量查询接口才能返回真实值。
内容的提问来源于stack exchange,提问作者Akshaya Shyam.prasad
相关产品推荐
相关产品推荐

