使用二进制运算符筛选prometheus查询结果

使用二进制运算符筛选prometheus查询结果,prometheus,promql,Prometheus,Promql,我正在构建一个框架来显示存储在普罗米修斯中的不同目标的度量。我有一个通用api,它接受目标(实例)数据并过滤指定目标的数据。我有三个指标需要获取 1. 100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) -- cpu usage 2. ((node_filesystem_avail_bytes{mountpoint="/",fstype!="rootfs"} * 100) /node_f

我正在构建一个框架来显示存储在普罗米修斯中的不同目标的度量。我有一个通用api,它接受目标(实例)数据并过滤指定目标的数据。我有三个指标需要获取

1. 100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) -- cpu usage
2. ((node_filesystem_avail_bytes{mountpoint="/",fstype!="rootfs"} * 100) /node_filesystem_size_bytes{mountpoint="/",fstype!="rootfs"}) -- disk usage
3. 100 * avg by (instance) ((node_memory_MemTotal_bytes - node_memory_MemFree_bytes) / node_memory_MemTotal_bytes) -- memory usage
我正在对prometheus进行API调用,并获取上述查询的所有数据。现在,我必须过滤掉特定实例的结果。所以我添加了and({instance:xx.xx.xxx.xxx:9100})来过滤数据

我的API查询看起来像

(100 - (avg by (instance) (irate(node_cpu_seconds_total{mode="idle"}[5m])) * 100) or ((node_filesystem_avail_bytes{mountpoint="/",fstype!="rootfs"} * 100) /node_filesystem_size_bytes{mountpoint="/",fstype!="rootfs"}) or 100 * avg by (instance) ((node_memory_MemTotal_bytes - node_memory_MemFree_bytes) / node_memory_MemTotal_bytes)) and ({instance:"xx.xx.xxx.xxx:9100"})

但这对于使用聚合的查询不起作用,并且无法获取这些查询的数据。有没有办法,我可以根据不同查询的特定标签过滤出查询结果。

如果你真的需要通过实例获取值,你不能直接将其集成到表达式中
(avg(irate(node_cpu_seconds_total{mode=“idle”,instance=“xx.xx.xxx.xxx:9100”}[5m])*100)
?@MichaelDoubez,我有一个框架,在这个框架中,我将在一个表中显示我的所有目标,并且我将分别获得指标的查询。当我点击表中的目标时,我必须过滤掉它的值。因此,我需要在最后将我的过滤器添加到查询中。有办法吗?Grafana应该帮你做。我想在我的应用程序中显示这些详细信息,但我不能使用iFrame将Grafana面板嵌入到我的web应用程序中。我试图直接查询普罗米修斯,获取数据并使用我的图表框架绘制图表。