PromQL 查询以选择其值包含在给定的多选变量中的指标
Posted
技术标签:
【中文标题】PromQL 查询以选择其值包含在给定的多选变量中的指标【英文标题】:PromQL query to select metrics whose values are included in a given multiple selection variable 【发布时间】:2021-03-20 16:45:05 【问题描述】:在 Grafana 中,我需要创建一个 PromQL 查询来选择一些指标,这些指标的值包含在给定的 multiple selection 变量中。
例如:
我有一个自定义变量 selectedStatus
,其值为 1
、2
和 3
,并带有“包含所有选项”(不确定要为此指定什么自定义值)
还有一个指标status
我只想选择那些在selectedStatus
(变量)下拉列表中选择的status
。
对于指标
status 1
status 2
status 3
如果我选择显示值为 1 的 status
(变量 selectedStatus
= 1
)
我可以写这样的东西(如果我想独立选择每个status
就可以了):
status == $selectedStatus # this filters out status whose value is not equal to the selected one
现在,如果我想选择 status
es 的值是 1
、2
或 3
(selectedStatus
= All
),我该如何编写 PromQL? (类似于 SQL 中的 OR
)
【问题讨论】:
澄清一下,您想按时间序列的值(在您的情况下为status
)而不是标签的值进行过滤?
@trallnag 是:我想按时间序列 (status
) 的值而不是标签的值进行过滤。
【参考方案1】:
PromQL 中没有任何东西可以开箱即用地支持这一点。但是您可以将整个 PromQL 表达式放入 Grafana 变量中,然后您可以在仪表板中进行选择。
【讨论】:
【参考方案2】:尝试以下查询:
status == 1 or status == 2 or status == 3
它应该返回值仅等于(1、2 或 3)的 status
时间序列。
查询使用or
运算符 - 在https://prometheus.io/docs/prometheus/latest/querying/operators/#logical-set-binary-operators 上查看有关此运算符的更多详细信息
【讨论】:
这真是太好了。我需要了解如何使用All
选项(如问题中发布的那样)使用我拥有的变量。以上是关于PromQL 查询以选择其值包含在给定的多选变量中的指标的主要内容,如果未能解决你的问题,请参考以下文章