Prometheus HTTP API 查询(三)查询元数据
本文已经收录在 Prometheus 合集 你真的会 Prometheus 查询吗?--PromQL 合集 中。
Prometheus 提供了一组 API 接口来查询关于 series 及其 label 的元数据。
通过 Label 查找 Series
个人理解,不一定对。Label 是 Metric 的一个标签,一个 Metric 的所有 Label 构成了这个 Metric 的 Series。
下面的接口会返回匹配 Label 的时间序列列表
URL 查询参数如下:
match[]=<series_selector> : 要查询的指标的 Series,要至少提供一个
match[]
参数。start=<rfc3339 | unix_timestamp> : 开始时间戳
end=<rfc3339 | unix_timestamp> : 结束时间戳
在请求 API 接口时可以使用 POST 方法 并且 header 头可以使用 Content-Type: application/x-www-form-urlencoded
, 当大查询中包含违反服务端 URL 字符限制时比较有用。
查询结果的数据部分由一个对象列表组成,其中包含标识每个 series 的 label 名称和 label 值,以成对的方式出现。
下面的例子会返回 up
和 process_start_time_seconds{job="prometheus"}
所有匹配的 Series :
获取 label 名称
这个接口会返回一个 Label 名称的列表:
URL 查询参数如下:
match[]=<series_selector> : 要查询的指标的 Series,可选。
start=<rfc3339 | unix_timestamp> : 开始时间戳,可选。
end=<rfc3339 | unix_timestamp> : 结束时间戳,可选。
这个接口最后返回的是一个 JSON 格式,是一个字符类型的 Label 名称列表。
我们来看一个例子:
获取 label 的值
这个接口可以获取指定 Label 名称的值:
URL 查询参数如下:
match[]=<series_selector> : 要查询的指标的 Series,可选。
start=<rfc3339 | unix_timestamp> : 开始时间戳,可选。
end=<rfc3339 | unix_timestamp> : 结束时间戳,可选。
这个接口最后返回的是一个 JSON 格式,是一个字符类型的 Label 名称列表。
我们来看一个例子,我们指定一个 Label 名称 job
,
查询 Exemplar
这是一个实验性的接口,未来可能会改变,当前版本是 v2.31.0。 这个接口需要使用 --enable-feature=exemplar-storage
来进行开启,不开启是无法使用的。
Exemplars 这个接口包含 seriesLabels
、exemplars
两个字段,
seriesLabels
是一个 Label 键值对的列表,列举了当前 Metric 的所有 Label。
exemplars
是列举了存储的 traceID=<jaeger-trace-id> 和他的值。
后边我们专门找个时间聊聊这些实验特性。
以下接口返回特定时间范围内有效 PromQL 查询的示例列表:
URL 查询参数如下:
query=<string> : Prometheus 表达式查询语句。
start=<rfc3339 | unix_timestamp> : 开始时间戳。
end=<rfc3339 | unix_timestamp> : 结束时间戳。
我们来看个例子,指定 test_exemplar_metric_total
这个 Metric 去查询
版权声明: 本文为 InfoQ 作者【耳东@Erdong】的原创文章。
原文链接:【http://xie.infoq.cn/article/58169b39c5cf9c88bb923369d】。未经作者许可,禁止转载。
评论