您好,我想根据指标结果为我的标签创建一个标签过滤器。
目前,我拥有的是这样的:
label_values(azure_metric_loadbalancer_heartbeat{subscriptionID=~"$sub"}, resourceName)
但我想根据健康/不健康的资源对其进行过滤
label_values(azure_metric_loadbalancer_heartbeat{subscriptionID=~"$sub"}==0, resourceName)
或
label_values(azure_metric_loadbalancer_heartbeat{subscriptionID=~"$sub"}==1, resourceName)
为了使其更加动态,我们的想法是将其作为变量:
label_values(azure_metric_loadbalancer_heartbeat{subscriptionID=~"$sub"}==$status, resourceName)
但是当我尝试这样做时,即使我将值设置为 0 或 1,它也不起作用。我只能根据属性的值对其进行过滤。
我还尝试检查是否有办法以这种方式过滤它
label_values(azure_metric_loadbalancer_heartbeat{subscriptionID=~"$sub", value=="0"}, resourceName)
有办法做到这一点吗?
最佳答案
Grafana 官方 documentation说:
The
label_values
function doesn’t support queries, so you can use these variables in conjunction with thequery_result
function to filter variable queries.
例如,您在问题中提到的查询,您需要以下内容:
Query: query_result(azure_metric_loadbalancer_heartbeat{subscriptionID=~"$sub"} == $status)
Regex: /resourceName="([^"]+)"/
regs的解释:
查询结果看起来像这样
query_result(azure_metric_loadbalancer_heartbeat{subscriptionID="aeaeaeae-e23e-23e2-32e23e", instance="myinstance.azure.net:8455", resource Name="my-resource"}
您需要从中提取my-resource
。对于此正则表达式,使用匹配 resource Name="my-resource"
,并将所需结果捕获到组中。 Grafana 会自动将该组提取到输出中。
/
表示正则表达式的开始和结束,resourceName="
和"
完全匹配。([^"]+)
匹配除引号之外的任何符号,并将其捕获到组中。
关于prometheus - Grafana 标签按指标结果过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76093963/