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

如何通过单条Curl请求调用Prometheus HTTP API批量查询指标?

如何通过单条Curl请求批量查询Prometheus指标的标签?

可以实现,但原生的/api/v1/labels接口不支持直接传入指标名称列表来关联查询标签。推荐使用/api/v1/series接口结合数据处理工具来达成需求,具体步骤如下:

1. 使用/api/v1/series接口批量匹配指标

该接口支持通过多个match[]参数传入指标名称,返回匹配到的所有时间序列的标签集合。示例Curl命令:

curl 'localhost:9090/api/v1/series?' \
  --data-urlencode 'match[]=metric1' \
  --data-urlencode 'match[]=metric2'

接口返回的原始结构大致如下:

{
  "status": "success",
  "data": [
    {"__name__": "metric1", "label1": "val1", "label2": "val2"},
    {"__name__": "metric1", "label1": "val3", "label2": "val4"},
    {"__name__": "metric2", "label3": "val5"}
  ]
}

2. 用jq处理结果为期望格式

通过jq工具对返回数据进行分组、去重,提取每个指标的唯一标签名,直接得到你想要的格式:

curl 'localhost:9090/api/v1/series?' \
  --data-urlencode 'match[]=metric1' \
  --data-urlencode 'match[]=metric2' | \
jq '[.data[] | {metric_name: .__name__, labels: keys - ["__name__"]} | unique_by(.metric_name)]'

最终输出示例:

[
  {
    "metric_name": "metric1",
    "labels": ["label1", "label2"]
  },
  {
    "metric_name": "metric2",
    "labels": ["label3"]
  }
]

补充说明

  • 原生/api/v1/labels接口用于查询全局标签名或特定标签的值,无法直接关联指定指标列表,因此不适用该场景。
  • 若不想用jq,也可以在业务代码中对/api/v1/series的返回结果进行类似的聚合处理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 16:34:57