在Grafana文档中,我发现我应该能够使用label_values查询查询我的promtheus服务器以查找提供监控数据的所有实例。
我使用的查询是:
label_values(up, instance)
不幸的是,prometheus告诉我它不知道label_values
Error executing query: parse error at char 13: unknown function with name "label_values"
我正在使用Prometheus 2.0.0和Grafana 5
我做错了什么?
答案 0 :(得分:6)
label_values()
只是templating中的有效函数。您可以使用它来填充模板下拉列表,例如可用实例或可用指标的列表,但您无法在仪表板中或直接查询Prometheus时使用它。
答案 1 :(得分:1)
通过在grafana/public/app/plugins/datasource/prometheus/metric_find_query.ts中查看Grafana的Prometheus模板代码,您可以看到它们没有使用PromQL,但是访问了某些获取标签值的要素,因此对于label_values(instance)
,URL应该是像这样:
http://localhost:9090/api/v1/label/instance/values
但是,此标签从TSDB中的每个度量返回所有称为instance
的标签。如果标签对于一个特定指标而言是唯一的,那么您将得到答案。否则,label_values(up, instance)
之类的模板代码会稍微复杂一些,似乎它实际上是从以下位置下载该指标的整个系列:
http://localhost:9090/api/v1/series?match[]=up
还添加了时间范围参数start
和end
,为了清楚起见,我省略了它们,然后通过解析JSON输出来找到标签值。
我也想在PromQL中做同样的事情,但是我还没有弄清楚是否可行。
答案 2 :(得分:0)
问题解决了。我在Grafana变量设置中使用了错误的正则表达式
答案 3 :(得分:0)
labels(pg_up,instances) 这是正确的语法