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,其值为 123,并带有“包含所有选项”(不确定要为此指定什么自定义值)

还有一个指标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

现在,如果我想选择 statuses 的值是 123selectedStatus = 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 查询以选择其值包含在给定的多选变量中的指标的主要内容,如果未能解决你的问题,请参考以下文章

select2的多选下拉框上传

使用python的excel中单元格的多选选项

bootstrap-select 的多选+模糊查询下拉框详解(官方示例文档解读)

PromQL的简单使用

创建过滤数据表的多选下拉列表

PromQL 查询以绘制传入请求的速率