我正在制作一个 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 查询?
我的回答试图详细阐述卡尔的回答。我认为 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
。
请按照以下步骤操作:
db2_prometheus_adapter_info
)。 {{[LABEL]}}
表示法(此处为 {{app_state}}
)输入标签名称作为图例。关于“Instant”设置的注意事项:此设置从范围查询切换为仅返回指标的最新值的简化查询(另请参阅基于prometheus的grafana图中的“即时”复选框有什么作用?) 。如果未激活,一旦指标历史记录中有多个不同的标签值,面板就会显示错误。对于“正常”指标,您可以通过在“值 - 统计”选项中选择“当前”来解决此问题。但在这里这样做会阻止显示您的标签值。
我们最近添加了对在单个统计面板中将系列名称显示为值的支持(https://github.com/grafana/grafana/issues/4740)。因此,您必须运行我们的夜间构建,直到我们发布 4.0。
只需确保查询返回一个系列,您就可以使用“选项”->“大值”下拉列表中的“名称”值。然后您可以使用图例格式化程序格式化字符串。 Ex {{job}} 将返回“node”作为系列名称。
我希望这能回答您的问题。
这对我有用。
label_values(my_metric{type= "xxx", another_label="xxx"},target_label)
Prometheus 没有任何返回字符串的函数,您正在寻找的是 Grafana singlestat 能够显示标签值 - 不幸的是它还不支持。
我想从 Prometheus 获取标签的所有不同值,并将其放入 Grafana 中的变量中。我使用这个简单的查询来填充我的变量下拉列表:
label_values(myLabelName)
这返回了预期的“value01”,“value02”等
使用 grafana 8.0.3 的最新 kube-prometheus-stack 的另一个更新。我仍然面临这个问题,对于我来说,在条形仪表中,在仅返回 1 个值的情况下,我仍然遇到这个问题,但对于 2 个以上的值,图例字段工作正常。
我的解决方案:
转到编辑面板,找到显示名称,输入
${__field.labels.insertYourLegendValueHere}
您可以使用
sum
后跟您尝试从中获取值的标签。
例如:
sum(windows_cpu_info{instance="$hostname"}) by l2_cache_size
在本例中,
l2_cache_size
是我想要从中获取返回值的标签。