写点什么

Prometheus HTTP API 查询(二) 表达式查询

用户头像
耳东@Erdong
关注
发布于: 5 小时前

本文已经收录在 Prometheus 合集 你真的会 Prometheus 查询吗?--PromQL 合集 中。


查询语言表达式可以在计算瞬间向量,也可以在计算范围向量。下面的小节描述每种类型的表达式查询的 API 端点。

瞬时查询

使用 GET 或者 POST 访问下列 API 接口,可以在单个时间点计算瞬时查询:


GET /api/v1/queryPOST /api/v1/query
复制代码


URL 查询参数:


  • query=<string> : Prometheus 查询表达式。

  • time=<rfc3339 | unix_timestamp> : 时间戳,可选的一个选项,不填的话查询当前时间的值,支持 UNIX 时间戳和 RFC 3339 格式的时间描述。

  • timeout=<duration> : 超时时间,是一个可选的选项。默认使用 -query.timeout 指定的值。


在请求 API 接口时可以使用 POST 方法 并且 header 头可以使用 Content-Type: application/x-www-form-urlencoded , 当大查询中包含违反服务端 URL 字符限制时比较有用。


查询结果的数据部分格式如下:


{  "resultType": "matrix" | "vector" | "scalar" | "string",  "result": <value>}
复制代码


<value> 是查询结果,根据查询的类型不同,格式也不一样。


下面这个示例会查询 up 指标在 2021-11-08T23:10:51.781Z 时间的值。


$ curl 'http://localhost:9090/api/v1/query?query=up&time=2021-11-08T23:10:51.781Z'{   "status" : "success",   "data" : {      "resultType" : "vector",      "result" : [         {            "metric" : {               "__name__" : "up",               "job" : "prometheus",               "instance" : "localhost:9090"            },            "value": [ 1636384171.781, "1" ]         },         {            "metric" : {               "__name__" : "up",               "job" : "node",               "instance" : "localhost:9100"            },            "value" : [ 1636384171.781, "0" ]         }      ]   }}
复制代码

范围时间查询

使用 GET 或者 POST 访问下列 API 接口,可以在一个时间段内计算查询表达式:


GET /api/v1/query_rangePOST /api/v1/query_range
复制代码


URL 查询参数:


  • query=<string> : Prometheus 查询表达式

  • start=<rfc3339 | unix_timestamp> : 开始时间戳

  • end=<rfc3339 | unix_timestamp> : 结束时间戳

  • step=<duration | float> : 步长。简单理解就是查询的这段时间中两个数据点的间隔是多长时间,比如每分钟一个点,或者每十秒一个点,这就是步长。格式是 1m 、10s 这种。

  • timeout=<duration> : 超时时间,是一个可选的选项。如果不指定,默认使用 -query.timeout 指定的值。


和进行瞬时查询一样,在请求 API 接口时可以使用 POST 方法 并且 header 头可以使用 Content-Type: application/x-www-form-urlencoded , 当大查询中包含违反服务端 URL 字符限制时比较有用。


查询结果的数据部分格式如下:


{  "resultType": "matrix",  "result": <value>}
复制代码


<value> 是查询结果,


下面的示例在 30 秒范围内查询表达式 up 的值,查询步长为 15 秒。


$ curl 'http://localhost:9090/api/v1/query_range?query=up&start=2021-11-08T23:10:51.781Z&end=2021-11-08T23:10:51.781Z&step=15s'{   "status" : "success",   "data" : {      "resultType" : "matrix",      "result" : [         {            "metric" : {               "__name__" : "up",               "job" : "prometheus",               "instance" : "localhost:9090"            },            "values" : [               [ 1636384171.781, "1" ],               [ 1636384186.781, "1" ],               [ 1636384201.781, "1" ]            ]         },         {            "metric" : {               "__name__" : "up",               "job" : "node",               "instance" : "localhost:9091"            },            "values" : [               [ 1636384171.781, "0" ],               [ 1636384186.781, "0" ],               [ 1636384201.781, "1" ]            ]         }      ]   }}
复制代码


发布于: 5 小时前阅读数: 5
用户头像

耳东@Erdong

关注

还未添加个人签名 2020.05.24 加入

主要研究分享运维技术,专注于监控、CICD、操作系统、云原生领域,公众号【耳东学堂】,知识星球同名,坚持原创,希望能和大家在运维路上结伴而行 邮箱:erdong@mail.erdong.site

评论

发布
暂无评论
Prometheus HTTP API 查询(二) 表达式查询