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

问题描述 投票:0回答:9

我正在制作一个 Grafana 仪表板,想要一个报告我们应用程序最新版本的面板。该版本被报告为

app_version_updated
(比如说)指标中的标签,如下所示:

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

我尝试了许多 Prometheus 查询来从该时间序列的最新成员中提取版本标签作为字符串,但没有效果。

例如查询

count(app_version_updated) by (version)

返回值为

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

如何构建返回版本字符串的 Prometheus 查询?

grafana prometheus
9个回答
34
投票

我的回答试图详细阐述卡尔的回答。我认为 GUI 布局自 2016 年以来可能发生了一些变化,所以我花了一些时间才找到“名称”选项。

假设您有如下指标:

# 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”可视化。
  • 转到“查询”选项卡:
    • 输入指标的名称(此处为
      db2_prometheus_adapter_info
      )。
    • 使用
      {{[LABEL]}}
      表示法(此处为
      {{app_state}}
      )输入标签名称作为图例。
    • 激活“即时”选项。

  • 转到“可视化”选项卡:
    • 在“值 - 统计”下选择值“名称”。

关于“Instant”设置的注意事项:此设置从范围查询切换为仅返回指标的最新值的简化查询(另请参阅基于prometheus的grafana图中的“即时”复选框有什么作用?) 。如果未激活,一旦指标历史记录中有多个不同的标签值,面板就会显示错误。对于“正常”指标,您可以通过在“值 - 统计”选项中选择“当前”来解决此问题。但在这里这样做会阻止显示您的标签值。


17
投票

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

只需确保查询返回一个系列,您就可以使用“选项”->“大值”下拉列表中的“名称”值。然后您可以使用图例格式化程序格式化字符串。 Ex {{job}} 将返回“node”作为系列名称。

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


9
投票

这对我有用。

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

9
投票

通过 Grafana 8+ 中的

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


6
投票

虽然 @marcus-rickert 的大部分答案在 Grafana 7 中仍然有效,但有一些变化。 “统计”“名称”字段似乎消失了,而是在“字段”面板中,您可以将“显示名称”设置为您想要显示的标签。


2
投票

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

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


2
投票

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

label_values(myLabelName)

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


2
投票

使用 grafana 8.0.3 的最新 kube-prometheus-stack 的另一个更新。我仍然面临这个问题,对于我来说,在条形仪表中,在仅返回 1 个值的情况下,我仍然遇到这个问题,但对于 2 个以上的值,图例字段工作正常。

我的解决方案:

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

${__field.labels.insertYourLegendValueHere}


2
投票

您可以使用

sum
后跟您尝试从中获取值的标签。

例如:

sum(windows_cpu_info{instance="$hostname"}) by l2_cache_size

在本例中,

l2_cache_size
是我想要从中获取返回值的标签。

© www.soinside.com 2019 - 2024. All rights reserved.