如何在 grafana 变量中为 prometheus 数据源提供带有时间范围的 label_values?

Posted

技术标签:

【中文标题】如何在 grafana 变量中为 prometheus 数据源提供带有时间范围的 label_values?【英文标题】:How to provide label_values in grafana variables with time range for prometheus data source? 【发布时间】:2019-03-17 14:19:26 【问题描述】:

我在 grafana 中使用了一个变量,如下所示: label_values(some_metric, service)

如果数据源当前未发出指标,则变量值不适用于图表。在我的例子中,变量是版本名称,grafana 的所有图表都依赖于这个变量。

在我监控的服务器崩溃后,该指标不会发出。即使我设置了一个时间范围来匹配指标发出的时间,它也没有影响,因为对变量的查询没有考虑时间范围。

在 Prometheus 中,我可以使用以下查询查看指标的值: some_metric[24h]

在 grafana 中这是无效的: label_values(some_metric[24h], service)

同样根据documentation,为 label_values 提供$__range 等无效。

如果我必须使用query_result 而不是我如何以正确的方式编写上述无效的grafana 查询,以便获得与label_values 相同的结果? 有没有其他方法可以做到这一点?

数据源是普罗米修斯。

【问题讨论】:

【参考方案1】:

我建议query_result(count by (somelabel)(count_over_time(some_metric[$__range]))),然后使用正则表达式提取出你想要的标签值。

我在这里使用 count 并不是很重要,更重要的是我使用了一个 over_time 函数然后进行聚合。

【讨论】:

这很好用......唯一需要注意的是grafana的版本需要5.3及以上 函数 $__range 的使用需要 5.3,对于旧版本,您可以使用带有固定时间范围的 query_result 技巧([24h],[1w] ...)

以上是关于如何在 grafana 变量中为 prometheus 数据源提供带有时间范围的 label_values?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Grafana 警报显示 Prometheus 标签

如何在 grafana 中为 Loki 的 json 日志绘制图表?

多值 Prometheus 查询 Grafana

Grafana Alert/AzureMonitor:在 Grafana 中为图形创建警报规则时出现执行错误

Prometheus 安装部署出图(使用grafana)

14Docker监控方案(Prometheus+cAdvisor+Grafana)