prometheus - Grafana 标签按指标结果过滤

标签 prometheus grafana

您好,我想根据指标结果为我的标签创建一个标签过滤器。

目前,我拥有的是这样的:

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 the query_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/

相关文章:

prometheus - 如何获得警报计数,过去一周在普罗米修斯中触发了多少次警报

go - 测量每个流的 gRPC 带宽

metrics - Micronaut:如何获取 Prometheus 格式的指标?

kubernetes - 将Grafana指标与不匹配的标签结合

jquery - Grafana 通过 AJAX 没有响应

java - 使用 Prometheus 和 Grafana 监控基于 Jetty 的 Java 应用程序

docker - 无法在docker swarm中使用docker stack运行服务

异常情况报警

influxdb - Grafana/InfluxDB查询具有时间范围的计数器数据

java - Grafana 查询使用 prometheus 检索请求计数