39

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

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

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

例如,查询

count(app_version_updated) by (version)

返回{version="1.5.0-abcdefg"}值为 的元素1。当将 Grafana 仪表板放入单个值面板中时,它不会显示版本字符串,而是显示计数值 ( 1)。

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

4

8 回答 8

23

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

假设您有如下指标:

# 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

并且您想显示 label 的值app_state

按着这些次序:

  • 创建“SingleStat”可视化。
  • 转到“查询”选项卡:
    • 输入指标的名称(此处db2_prometheus_adapter_info)。
    • {{[LABEL]}}使用符号输入标签名称作为图例(此处{{app_state}})。
    • 激活“即时”选项。

查询选项卡中的设置

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

在可视化选项卡中设置

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

于 2019-09-09T08:47:01.633 回答
15

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

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

我希望这回答了你的问题。

于 2016-08-25T08:26:32.837 回答
7

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

在此处输入图像描述

于 2020-05-31T12:19:13.833 回答
5

这对我有用。

label_values(my_metric{type= "xxx", another_label="xxx"},target_label)
于 2020-05-20T13:13:01.020 回答
2

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

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

于 2016-07-22T12:09:16.230 回答
1

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

label_values(myLabelName)

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

于 2020-12-22T10:42:17.973 回答
1

使用StatGrafana 8+ 中的可视化,您可以将图例设置为预期的标签名称,然后将其更改Stat Styles -> Text ModeName 在此处输入图像描述

于 2022-02-12T17:13:28.060 回答
0

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

我的解决方案:

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

${__field.labels.insertYourLegendValueHere}

于 2021-07-16T06:51:18.787 回答