如何通过Prometheus API获取CPU使用率时间序列数据
通过Prometheus API获取CPU使用率时间序列数据
你需要用到Prometheus的查询API,核心是两个端点:/api/v1/query(获取实时或指定时间点的单值/序列数据)和/api/v1/query_range(获取指定时间范围内的时间序列数据),具体用法如下:
1. 获取实时CPU使用率(单时间点)
用/api/v1/query端点,传入PromQL查询语句。比如要获取你应用Pod的CPU使用率(按1分钟窗口计算速率),执行以下curl命令:
curl 'http://localhost:8080/api/v1/query?query=rate(container_cpu_usage_seconds_total{pod=~"your-app-pod-prefix.*"}[1m])'
- 替换
your-app-pod-prefix.*为你应用Pod的标签匹配规则(比如Pod名称前缀),也可以用namespace="your-namespace"来限定命名空间。 rate(container_cpu_usage_seconds_total[1m])是计算CPU使用率的标准PromQL,它会统计1分钟内CPU累计使用时间的增长率,结果对应CPU使用率(以核心数为单位)。
2. 获取时间范围内的CPU使用率序列
如果要获取过去1小时、每15秒一个数据点的时间序列,用/api/v1/query_range端点:
curl 'http://localhost:8080/api/v1/query_range?query=rate(container_cpu_usage_seconds_total{pod=~"your-app-pod-prefix.*"}[1m])&start=1h ago&end=now&step=15s'
start和end支持相对时间格式,比如1h ago、now,也可以用Unix时间戳(通过date +%s命令生成)。step是数据点的采集间隔,可根据需求调整为1m、30s等。
3. 解析返回结果
API返回的JSON结构中,data.result数组包含所有匹配的时间序列:
metric字段:存储该序列的标签信息(比如Pod名称、命名空间)value(query端点)或values(query_range端点):包含时间戳和对应的CPU使用率数值
注意事项
- 如果Prometheus部署在Kubernetes集群内,本地访问通常依赖端口转发,确保转发命令正常运行(比如
kubectl port-forward deploy/prometheus-server 8080:9090,Prometheus默认端口为9090)。 - 可根据实际监控指标调整PromQL,比如针对节点级CPU使用,可替换为
rate(node_cpu_seconds_total{mode="user"}[1m]),但针对应用部署,容器级的container_cpu_usage_seconds_total更精准。
内容的提问来源于stack exchange,提问作者Nimander
相关产品推荐
相关产品推荐

