Skip to content
Prometheus HTTP API

Prometheus HTTP API

本文档涵盖 Prometheus RESTful HTTP API——即时查询、范围查询及常用状态管理端点。

符号说明

符号 含义
🚨 陷阱 / Pitfall
💡 最佳实践 / Best practice
🔬 深入原理 / Deep-dive
性能提示 / Performance note

1. 即时查询(Instant Query)

# 查询当前值
curl 'http://localhost:9090/api/v1/query?query=up&time=2024-01-01T00:00:00Z'

# 返回 JSON
{
  "status": "success",
  "data": {
    "resultType": "vector",
    "result": [
      {
        "metric": {"__name__": "up", "instance": "localhost:9090", "job": "prometheus"},
        "value": [1704067200, "1"]
      }
    ]
  }
}

2. 范围查询(Range Query)

curl 'http://localhost:9090/api/v1/query_range?query=rate(http_requests_total[5m])&start=2024-01-01T00:00:00Z&end=2024-01-01T01:00:00Z&step=15s'

3. 常用 API 端点

端点 方法 说明
/api/v1/query GET 即时查询
/api/v1/query_range GET 范围查询
/api/v1/series GET 查询时间序列
/api/v1/labels GET 查询所有标签名
/api/v1/label/__name__/values GET 查询所有指标名
/api/v1/targets GET 查看抓取目标
/api/v1/rules GET 查看规则
/api/v1/alerts GET 查看当前告警
/api/v1/status/config GET 查看配置
/api/v1/status/tsdb GET TSDB 状态
/-/reload POST 热加载配置(需 --web.enable-lifecycle
/-/quit POST 安全退出(需 --web.enable-lifecycle
/metrics GET Prometheus 自身指标
/federate GET Federation 端点

4. 常用查询示例

# 获取所有指标名
curl 'http://localhost:9090/api/v1/label/__name__/values' | jq '.data[]'

# 获取所有 job 值
curl 'http://localhost:9090/api/v1/label/job/values' | jq '.data[]'

# 查询某指标的所有时间序列
curl -G 'http://localhost:9090/api/v1/series' \
  --data-urlencode 'match[]=up'

# 查询当前所有告警
curl 'http://localhost:9090/api/v1/alerts' | jq '.data.alerts[] | {name: .labels.alertname, state: .state, value: .value}'

参考资料: