如何通过Grafana查询Prometheus中单个Quarkus服务的CPU负载?
解决Quarkus服务单个实例CPU负载查询问题
核心逻辑
Quarkus暴露的base_cpu_processCpuLoad_percent本身是单实例维度的指标,不需要盲目用sum/max做聚合——这类操作会丢失instance标签(实例标识),自然看不到单个实例的数据。
正确查询语句
查看指定服务的所有实例CPU负载
直接查询指标并过滤job,保留instance标签:base_cpu_processCpuLoad_percent{job="servicename"}执行后会返回该服务下每个实例的实时CPU负载,每个实例对应一条独立数据。
筛选全集群Top N高负载实例
要找出CPU负载最高的前5个实例,需同时按job和instance分组聚合:topk(5, max(base_cpu_processCpuLoad_percent) by (job, instance))用
max取每个实例的峰值,topk筛选前5,保留双标签能明确对应到具体服务和实例。结合Grafana变量动态查询
若已配置$job仪表盘变量,用模糊匹配支持动态选择:base_cpu_processCpuLoad_percent{job=~"$job"}多选变量时,
=~会自动匹配所有选中的服务,展示对应实例的CPU数据。
排查小贴士
- 先在Prometheus Expression页面执行
base_cpu_processCpuLoad_percent,确认指标存在且带有job、instance标签 - 避免直接用
sum聚合——它会把同服务下所有实例的CPU负载累加,丢失单实例维度 - 只按
job做max聚合会抹掉instance标签,导致无法区分具体实例
内容的提问来源于stack exchange,提问作者jcomouth
相关产品推荐
相关产品推荐

