背景描述

是否遇到过这样的情况grafana单应用下一堆曾经发布过的实例,乱七八糟,不知道哪个是有效实例;
在这里插入图片描述那你肯定是这样定义的Variables
在这里插入图片描述

问题分析

application定义的没毛病,主要是应用下的实例,使用上图的查询语法只会把之前采集过该指标的实例全都查询出来,不管是UP还是DOWN的,

解决办法

既然会把之前所有采集过该指标的实例都查出来,那最近5分钟或1分钟他肯定没有采集过吧,那我可不可以加上时间区间的筛选呢?

解决过程

这样?
在这里插入图片描述抱歉,grafana的label_values语法并不支持时间区间查询这样的做法,这时候必须使用到query_result这个函数了;
我的思路是通过query_result查出结果集,然后使用正则表达式来提取自己想要的标签值。
修改后的表达式如下

query_result(count by (instance) (count_over_time(process_start_time_seconds{application="$application"}[5m])))

由此获取到应用下的实例列表,获取到的结构如下

{instance="实例地址"} 1 1655794050000

最后一步,把实例地址截取出来即可,正则表达式可参考官方样例

/.*instance="([^"]*).*/

如上,大功告成,搞定!!!

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐