在prometheus中找不到查询label_values

Tim*_*ack 1 grafana prometheus promql

在Grafana文档中,我发现我应该能够在promtheus服务器上查询所有使用label_values查询提供监视数据的实例。

我正在使用的查询是:

label_values(up, instance)
Run Code Online (Sandbox Code Playgroud)

不幸的是普罗米修斯告诉我它不知道label_values

Error executing query: parse error at char 13: unknown function with name "label_values"
Run Code Online (Sandbox Code Playgroud)

我正在使用Prometheus 2.0.0和Grafana 5

我究竟做错了什么 ?

mac*_*13k 12

通过查看Grafana/public/app/plugins/datasource/prometheus/metric_find_query.ts中 Prometheus 的 Grafana 模板代码,您可以看到它们不使用 PromQL,而是访问某些端点来获取标签值,因此对于label_values(instance)URL 来说是这样的:

http://localhost:9090/api/v1/label/instance/values
Run Code Online (Sandbox Code Playgroud)

然而,这个返回instance从 TSDB 中的每个指标调用的所有标签。如果标签对于某一特定指标是唯一的,那么您就有了答案。否则,类似的模板代码label_values(up, instance)稍微复杂一些,看起来它实际上从以下位置下载了整个系列的指标:

http://localhost:9090/api/v1/series?match[]=up
Run Code Online (Sandbox Code Playgroud)

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

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


Oli*_*ver 7

label_values()只是模板中的有效函数。您可以使用它来填充模板下拉列表,例如可用实例或可用指标的列表,但是您不能在仪表板中或直接查询Prometheus时使用它。