首页 > 解决方案 > Prometheus where/if 子句

问题描述

我有查询我只想在运行某个服务的主机上运行

伪代码看起来像

windows_os_virtual_memory_bytes 
where
windows_service_state{name="sense",state="running"} == 1

这样我只有在服务name="sense"处于活动状态时才能获得虚拟内存

标签: prometheusgrafanapromql

解决方案


使用 on 子句匹配标签。在这种情况下,

windows_os_virtual_memory_bytes > 0 and  on(instance) (windows_service_state{name="sense",state="running"} == 1) 

因此,必须满足两个条件 ( and)instance匹配。on()您可以在函数中使用标签向量。

https://prometheus.io/docs/prometheus/latest/querying/operators/#one-to-one-vector-matches


推荐阅读