获取普罗米修斯标签的因变量

Dependent variables to get prometheus labels

在我的 /metrics 页面上,我有类似于

的字符串
 my_metric{controller="cont_a",action="act_a",le="1"} 5
 my_metric{controller="cont_a",action="act_b",le="1"} 4
 my_metric{controller="cont_b",action="act_c",le="1"} 3
 my_metric{controller="cont_b",action="act_d",le="1"} 2

在我的 Grafana 仪表板上,我想看到两个变量:controlleraction。如果我通过 label_values(controller)label_values(action) 等查询简单地定义它们,它们将是独立的,这意味着如果选择控制器 "cont_a",则所有 4 个操作都将可用。 但我想让动作变量依赖于控制器变量,因此,如果选择了控制器 "cont_a",则只有值 "act_a""act_b" 可用于动作变量。而如果选择"cont_b",则只有"act_c""act_d"。 有什么方法可以这样配置Grafana仪表板吗?

在 Grafana 仪表板中可以有因变量。例如,假设在变量 $instance 上,我们有一个来自 Prometheus 中 up 指标的实例列表。我们可以使用 Grafana 中的 label_values 函数将其设置为查询:

label_values(up, instance)

现在,如果我们要有第二个变量,其中包含取决于所选实例的作业列表,我们可以使用以下查询。

label_values(up{instance=~"$instance"}, job)

在这种情况下,我们使用已经定义的 $instance 变量来填充第二个变量(工作列表)的选项。

您可以see here此方法的工作示例。