如何通过VictoriaMetrics HTTP API获取指定过滤条件的指标名称?
实现方法
当然可以通过VictoriaMetrics的HTTP API直接实现,不用拉取全量指标数据,有两种更高效的方式:
方法一:利用/api/v1/series接口过滤后去重
调用/api/v1/series接口,它专门用于返回匹配标签条件的时间序列标签集合,不会返回指标数值,数据量小很多:
- 请求示例:
GET /api/v1/series?match[]={app="service1"} - 返回的
data字段是一个数组,每个元素是该序列的所有标签键值对,你只需要遍历这个数组,提取每个元素里的name值,再做去重即可得到所有唯一的指标名称。
方法二:用label_values函数直接获取去重结果
通过/api/v1/query接口结合PromQL的label_values函数,能直接拿到去重后的指标名称,无需额外处理:
- 请求示例:
GET /api/v1/query?query=label_values({app="service1"}, name) - 这个请求会直接返回
data.result数组,里面就是所有app=service1对应的唯一name标签值,省去了自己去重的步骤。可以指定time参数(比如time=-1m)来限定查询的时间范围,避免扫描过久之前的数据,提升效率。
这两种方法都比拉全量数据的方式高效得多,尤其是方法二,直接一步到位得到结果。
内容的提问来源于stack exchange,提问作者Yuri Win
相关产品推荐
相关产品推荐

