在 Grafana 中显示普罗米修斯最后抓取的 Kubernetes Pod 中的指标
Show metrics in Grafana from the Kubernetes Pod that was scraped last by Prometheus
上下文
我们有一个 Spring 启动应用程序,部署到 K8s 集群(有 2 个实例)中,配置了用于 Prometheus 的 Micrometer 导出器和 Grafana 中的可视化。
我的自定义指标
我已经实施了几个额外的 Micrometer 指标,它们报告了一些关于数据库 (PostgreSQL) 中业务数据的信息,我可以在 Grafana 中看到这些指标,但是对于每个 pod 都是单独的。
问题:
对于我们在 Grafana 中的 2 pods - 我可以看到一组单独的相同指标,并且可以通过选择(按标签)pods 之一找到最新值。
但是无法判断哪个 pod 报告了最新值。
有没有办法始终显示最后抓取的 pod 的指标值(即它将包含最新的指标数据)?
现在为了查看最新的指标数据 - 我必须切换 pods 并猜测哪个具有最新值。
(所讨论的指标与数据库相关,因此无论从哪个 pod 请求它们都会产生相同的值。)
在Prometheus中,您可以使用topk()
和timestamp()
函数获取最新抓取的标签:
topk(1,timestamp(up{job="micrometer"}))
然后可以在 Grafana 中使用它来填充包含实例名称的(隐藏)变量:
Name: instance
Type: Query
Query: topk(1,timestamp(up{job="micrometer"}))
Regex: /.*instance="([^"]*)".*/
我建议在 time range change
激活刷新以获取您时间范围内的最后一次抓取。
然后您可以在所有信息中心的查询中使用该变量:
micrometer_metric{instance="${instance}"}
编辑:请求者希望在每次数据刷新时更新它
如果您想在每次数据刷新时更新它,则需要在使用 AND logical operator:
的仪表板的每个查询中使用它
micrometer_other_metric AND ON(instance) topk(1,timestamp(up{job="micrometer"}))
vector1 AND vector2 results in a vector consisting of the elements of vector1 for which there are elements in vector2 with exactly matching label sets. Other elements are dropped.
上下文
我们有一个 Spring 启动应用程序,部署到 K8s 集群(有 2 个实例)中,配置了用于 Prometheus 的 Micrometer 导出器和 Grafana 中的可视化。
我的自定义指标
我已经实施了几个额外的 Micrometer 指标,它们报告了一些关于数据库 (PostgreSQL) 中业务数据的信息,我可以在 Grafana 中看到这些指标,但是对于每个 pod 都是单独的。
问题:
对于我们在 Grafana 中的 2 pods - 我可以看到一组单独的相同指标,并且可以通过选择(按标签)pods 之一找到最新值。
但是无法判断哪个 pod 报告了最新值。
有没有办法始终显示最后抓取的 pod 的指标值(即它将包含最新的指标数据)?
现在为了查看最新的指标数据 - 我必须切换 pods 并猜测哪个具有最新值。
(所讨论的指标与数据库相关,因此无论从哪个 pod 请求它们都会产生相同的值。)
在Prometheus中,您可以使用topk()
和timestamp()
函数获取最新抓取的标签:
topk(1,timestamp(up{job="micrometer"}))
然后可以在 Grafana 中使用它来填充包含实例名称的(隐藏)变量:
Name: instance
Type: Query
Query: topk(1,timestamp(up{job="micrometer"}))
Regex: /.*instance="([^"]*)".*/
我建议在 time range change
激活刷新以获取您时间范围内的最后一次抓取。
然后您可以在所有信息中心的查询中使用该变量:
micrometer_metric{instance="${instance}"}
编辑:请求者希望在每次数据刷新时更新它
如果您想在每次数据刷新时更新它,则需要在使用 AND logical operator:
的仪表板的每个查询中使用它micrometer_other_metric AND ON(instance) topk(1,timestamp(up{job="micrometer"}))
vector1 AND vector2 results in a vector consisting of the elements of vector1 for which there are elements in vector2 with exactly matching label sets. Other elements are dropped.