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

时间:2016-07-22 11:58:48

标签: grafana prometheus

我正在制作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查询?

7 个答案:

答案 0 :(得分:11)

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

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

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

答案 1 :(得分:2)

这对我有用。

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

答案 2 :(得分:2)

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

enter image description here

答案 3 :(得分:1)

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

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

答案 4 :(得分:1)

我的答案试图详细说明卡尔的答案。我认为自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

,您想显示标签app_state的值。

请按照以下步骤操作:

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

Settings in Queries Tab

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

Setting in Visualization Tab

“即时”设置的注意事项:此设置从范围查询切换为简化查询,仅返回度量标准的最新值(另请参见What does the "instant" checkbox in grafana graphs based on prometheus do?)。如果未激活,则一旦度量标准历史记录中的标签有多个不同的值,面板就会显示错误。对于“正常”指标,您可以通过在“值-统计”选项中选择“当前”来解决此问题。但是,这样做会阻止您显示标签值。

答案 5 :(得分:0)

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

label_values(myLabelName)

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

答案 6 :(得分:0)

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

我的解决方案:

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

<块引用>

${__field.labels.insertYourLegendValueHere}