我正在建立一个框架来显示存储在普罗米修斯中的不同目标的指标。我有一个通用的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调用,并获取上述查询的所有数据。现在,我必须过滤掉特定实例的结果。因此,我添加了({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"})
但是,这不适用于使用聚合且没有任何数据的查询。有什么方法可以根据不同查询的特定标签过滤出查询结果。