如何在 grafana 变量中为普罗米修斯数据源提供 label_values 的时间范围?
How to provide label_values in grafana variables with time range for prometheus data source?
我在 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
相同的结果?
还有其他方法吗?
数据源为普罗米修斯
我建议query_result(count by (somelabel)(count_over_time(some_metric[$__range])))
然后使用正则表达式提取出你想要的标签值。
我在这里使用计数并不太重要,我使用 over_time 函数然后聚合更重要。
最直接和轻量级的解决方案是使用 last_over_time function. For example, the following Grafana query template 将 return 所有 some_metric
时间序列的所有唯一 service
标签值,这些值在期间可用最近 24 小时:
label_values(last_over_time(some_metric[24h]), service)
我在 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
相同的结果?
还有其他方法吗?
数据源为普罗米修斯
我建议query_result(count by (somelabel)(count_over_time(some_metric[$__range])))
然后使用正则表达式提取出你想要的标签值。
我在这里使用计数并不太重要,我使用 over_time 函数然后聚合更重要。
最直接和轻量级的解决方案是使用 last_over_time function. For example, the following Grafana query template 将 return 所有 some_metric
时间序列的所有唯一 service
标签值,这些值在期间可用最近 24 小时:
label_values(last_over_time(some_metric[24h]), service)