如何在 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 日志绘制图表?