prometheus 查询中来自 grafana 变量的多个值

Ani*_*mar 4 grafana prometheus promql

我们有一种情况,我们需要从 grafana 变量字段中选择多个值(实例/服务器),并且需要使用一些正则表达式将多个值传递给 Prometheus 查询,以便我可以在单个图中看到选定的主机指标。但我无法让它工作。有人可以帮我解决这个问题。

让我们举个例子,如果我选择多个值 host1,host2,host3 然后查询应该看起来像这样 node_load1(instance="host1", instance="host2", instance="host3")。

希望我说清楚我的问题。

提前致谢。

val*_*ala 18

请注意,node_load1{instance="host1",instance="host2",instance="host3"}不会返回任何结果,因为标签过滤器是通过and操作应用的,例如查询意味着:

选择带有node_load1名称instance="host1"标签以及带有instance="host2"标签带有instance="host2"标签的时间序列

or您需要对多个标签值使用操作instance。这可以通过以下查询来完成,该查询使用正则表达式过滤器作为instance标签:

node_load1{instance=~"host1|host2|host3"}
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请参阅PromQL 教程。

当为此变量选择多个标签值时,Grafana 会自动构建模板value1|...|valueN的正则表达式。$var_name因此,只需node_load1{instance=~"$host"}按照/sf/answers/4141565361/的建议在 Grafana 中的查询中使用即可


Mic*_*bez 6

当您在查询中使用变量时,Grafana 会为您生成一个正则表达式。

我假设您有一个$host通过收集标签值定义的变量。前任:

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

然后简单地使用请求:

node_load1{instance=~"$host"}
Run Code Online (Sandbox Code Playgroud)

  • 感谢您提供答案,它正在工作。我想当我尝试时我错过了“〜”部分,我的错。 (2认同)