You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Prometheus API获取实例汇总CPU使用率?

Prometheus API查询CPU使用率返回400错误的解决方法

问题背景

  • 可在Prometheus GUI正常运行的CPU使用率查询语句:
    (100 * avg by (instance) (rate(node_cpu_seconds_total{mode!="idle"}[1m])))
    
  • 需求:通过Prometheus API的curl请求获取相同结果
  • 尝试的请求及问题:
    • 单指标请求:curl -g 'http://localhost:9090/api/v1/query?query=node_cpu_seconds_total'
      返回单个CPU的使用率数据,不符合汇总需求
    • 带聚合逻辑的请求:curl -g 'http://localhost:9090/api/v1/query?query=(100 * avg by (instance) (rate(node_cpu_seconds_total{mode!="idle"}[1m])))'
      返回400 Bad Request错误

解决思路及修正请求

错误原因是查询语句中的特殊字符(如!、"、[、])未正确URL编码,即使使用-g参数也无法完全避免解析失败。推荐两种修正方式:

方式1:手动URL编码查询语句

对特殊字符编码后,请求如下:

curl 'http://localhost:9090/api/v1/query?query=(100%20*%20avg%20by%20(instance)%20(rate(node_cpu_seconds_total%7Bmode!%3D%22idle%22%7D%5B1m%5D)))'

方式2:使用curl自动编码(推荐)

借助-G和--data-urlencode参数,让curl自动处理编码,无需手动转换:

curl -G 'http://localhost:9090/api/v1/query' --data-urlencode 'query=(100 * avg by (instance) (rate(node_cpu_seconds_total{mode!="idle"}[1m])))'
  • -G:将--data-urlencode的内容转换为GET请求的查询参数
  • --data-urlencode:自动对查询语句中的特殊字符进行URL编码,确保API能正确解析

内容的提问来源于stack exchange,提问作者Nil2a

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 03:10:49