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}'参考资料: