Prometheus监控数据API查询需精准选用/api/v1下端点:即时查询用/api/v1/query获取快照,范围查询用/api/v1/query_range拉取时序数据,须构造合规PromQL并解析结构化响应。

Prometheus 监控数据的 API 接口查询,核心在于用好 /api/v1 下的几类关键端点,而不是盲目调用。它不是单纯“取数”,而是按需选择查询类型、构造合规 PromQL、解析结构化响应——整个过程需要兼顾语法、语义和工程稳定性。
即时查询:获取当前或指定时刻的指标快照
适用于告警判定、状态检查、报表生成等场景。使用 /api/v1/query,通过 query 参数传入 PromQL 表达式,time 可选(不填即取最新值)。
- 示例:查某节点 5 分钟平均负载
curl "http://prom:9090/api/v1/query?query=node_load5{instance=\"10.20.30.40:9100\"}" - 返回中
data.result[0].value是[timestamp, value]数组,注意时间戳为 Unix 秒级浮点数 - 若表达式无匹配结果,
result为空数组,status仍为success,需主动判空
范围查询:拉取一段时间内的时序数据
这是做趋势分析、绘图、异常检测的基础。端点为 /api/v1/query_range,必须提供 start、end 和 step(采样步长)。
- 示例:查过去 1 小时内每 30 秒的 CPU 使用率
curl "http://prom:9090/api/v1/query_range?query=100 - (avg by(instance)(rate(node_cpu_seconds_total{mode=\"idle\"}[5m])) * 100)&start=$(date -d '1h ago' -Iseconds)&end=$(date -Iseconds)&step=30s" - 返回格式为
matrix类型,data.result[].values是二维时间-值数组,每个元素形如[1718712000.123, "92.4"] -
step不宜过小(如 timeout 参数微调
元数据与标签操作:支撑动态发现与过滤逻辑
当监控目标动态变化(如 K8s Pod 频繁扩缩容),硬编码 instance 名不可靠,需依赖标签元数据动态构建查询。
- 查所有可用 job 名:
GET /api/v1/labels?match[]=up→ 返回["job", "instance", "namespace"] - 查某 job 下所有 instance 值:
GET /api/v1/label/instance/values?match[]=up{job="kubernetes-pods"} - 查匹配特定标签组合的时间序列列表:
POST /api/v1/series,body 中传{"match": ["up{job=\"node-exporter\"}"]} - 这些接口响应快、开销低,适合在脚本初始化阶段批量获取维度信息,再拼装后续 query
Python 快速接入:用 prometheus-api-client 省去底层细节
直接封装 requests 虽灵活,但重复处理认证、重试、JSON 解析易出错。推荐使用社区维护的 prometheus-api-client 库。
- 安装:
pip install prometheus-api-client - 基础用法:
from prometheus_api_client import PrometheusConnect<br>prom = PrometheusConnect(url="http://prom:9090", disable_ssl=True)<br>result = prom.custom_query('sum(rate(http_requests_total[1h])) by (job)') - 它自动处理 URL 编码、状态码校验,并将
result直接转为 Python list/dict,无需手动.json() - 对 range 查询,库也封装了
custom_query_range方法,自动计算 start/end 时间,避免时区错误
大量免费API接口:立即使用
涵盖生活服务API、金融科技API、企业工商API、等相关的API接口服务。免费API接口可安全、合规地连接上下游,为数据API应用能力赋能!










