如何编写 returns 标签值的 Prometheus 查询?

How do I write a Prometheus query that returns the value of a label?

我正在制作一个 Grafana 仪表板并想要一个报告我们应用程序最新版本的面板。该版本在 app_version(比如)指标中作为标签报告,如下所示:

app_version_updated{instance="eu99",version="1.5.0-abcdefg"}

我已经尝试了一些普罗米修斯查询来从这个时间序列的最新成员中提取版本标签作为字符串,但没有效果。

例如查询

count(app_version_updated) by (version)

returns 一个 {version="1.5.0-abcdefg"} 元素,值为 1。当在单值面板中放入 Grafana 仪表板时,这不会显示版本 string 而是显示计数值 (1).

我如何构造 returns 版本字符串的 Prometheus 查询?

Prometheus 没有任何 return 字符串的函数,您正在寻找的是 Grafana singlestat 能够显示标签值 - 遗憾的是它尚不支持。

https://github.com/grafana/grafana/issues/5094 跟踪这个。

我们最近添加了对在单个统计面板中将系列名称显示为值的支持 (https://github.com/grafana/grafana/issues/4740)。因此,在我们发布 4.0 之前,您必须 运行 我们的夜间构建。

只需确保查询 return 是一个系列,您可以使用选项下下拉列表中的 "name" 值 -> 大 value.Then 您可以使用图例格式化字符串格式化程序。例如 {{job}} 将 return "node" 作为系列名称。

我希望这能回答您的问题。

我的回答试图详细说明卡尔的回答。我假设自 2016 年以来 GUI 布局可能发生了一些变化,所以我花了一段时间才找到 "name" 选项。

假设您有如下指标:

# HELP db2_prometheus_adapter_info Information on the state of the DB2-Prometheus-Adapter
# TYPE db2_prometheus_adapter_info gauge
db2_prometheus_adapter_info{app_state="UP") 1.0

并且您想显示标签 app_state 的值。

按照以下步骤操作:

  • 创建一个 "SingleStat" 可视化。
  • 转到 "Queries" 选项卡:
    • 输入指标的名称(此处 db2_prometheus_adapter_info)。
    • 使用 {{[LABEL]}} 符号(此处 {{app_state}})输入标签名称作为图例。
    • 激活 "instant" 选项。

  • 转到 "Visualization" 选项卡:
    • 选择 "Value - Stat" 下的值 "Name"。

关于 "Instant" 设置的注意事项:此设置从范围查询切换为简化查询,仅返回指标的最新值(另请参阅 )。如果未激活,一旦指标历史记录中的标签有多个不同值,面板就会显示错误。对于 "normal" 指标,您可以通过在 "Value - Stat" 选项中选择 "current" 来解决这个问题。但是在这里这样做会阻止显示您的标签值。

这对我有用。

label_values(my_metric{type= "xxx", another_label="xxx"},target_label)

虽然@marcus-rickert 的大部分回答在 Grafana 7 中仍然有效,但有一些变化。 'Stat' 'Name' 字段似乎不见了,而是在 'Field' 面板中,您可以将 'Display name' 设置为要显示的标签。

我想从 Prometheus 获取标签的所有不同值,以将其放入 Grafana 的变量中。我使用这个简单的查询来填充我的 varialbe 下拉列表:

label_values(myLabelName)

这返回了预期的“value01”、“value02”等

关于使用 grafana 8.0.3 的最新 kube-prometheus-stack 的另一个更新。我仍然遇到这个问题,对于我来说,在条形仪中,我在它只返回 1 个值的情况下仍然遇到这个问题,但是对于 2+ 个值,Legend 字段工作正常。

我的解决方案:

转到编辑面板,找到显示名称,键入

${__field.labels.insertYourLegendValueHere}

借助 Grafana 8+ 中的 Stat 可视化,您可以将图例设置为预期的标签名称,然后将 Stat Styles -> Text Mode 更改为 Name