如何在Prometheus中简洁查询多实例的服务宕机状态
简洁实现多实例多服务宕机检测的PromQL写法
你可以通过分组统计+正则匹配的方式替代冗长的absent串联写法,具体实现如下:
推荐查询语句
count by(instance, process)(windows_process_start_time{instance=~"xxx:9182|yyy:9182", process=~"npop3|nreplica|nrouter|nsmtp|nldap|nhttp"}) == 0
逻辑说明
- 正则匹配目标范围:用
=~运算符一次性匹配两个目标实例和所有需要检测的进程,避免逐个编写条件 - 分组统计存在状态:
count by(instance, process)按「实例+进程」的组合分组,统计每个组合对应的时间序列数量 - 筛选宕机状态:
== 0表示该「实例+进程」组合没有对应的时间序列,即服务未运行(宕机)
这种写法扩展性极强——后续新增实例或需要检测的服务时,只需要修改正则表达式中的内容即可,无需重复编写大量absent语句。
内容的提问来源于stack exchange,提问作者Ramsey Tajjour
相关产品推荐
相关产品推荐

