在prometheus中找不到查询label_values

时间:2018-03-19 14:49:53

标签: grafana prometheus promql

在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

我做错了什么?

4 个答案:

答案 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

还添加了时间范围参数startend,为了清楚起见,我省略了它们,然后通过解析JSON输出来找到标签值。

我也想在PromQL中做同样的事情,但是我还没有弄清楚是否可行。

答案 2 :(得分:0)

问题解决了。我在Grafana变量设置中使用了错误的正则表达式

答案 3 :(得分:0)

labels(pg_up,instances) 这是正确的语法