获取 prometheus 标签的因变量

Aga*_*ria 0 grafana prometheus

在我的 /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
Run Code Online (Sandbox Code Playgroud)

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

小智 5

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

label_values(up, instance)
Run Code Online (Sandbox Code Playgroud)

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

label_values(up{instance=~"$instance"}, job)
Run Code Online (Sandbox Code Playgroud)

在本例中,我们使用已定义的$instance变量来填充第二个变量(作业列表)的选项。

您可以在此处查看此方法的工作示例。