Prometheus HTTP API返回时间戳含义及获取API调用时间咨询
Prometheus API查询结果中时间戳含义及API调用时间获取
问题描述
我正在使用Prometheus HTTP API查询数据并导入PowerBI。调用API后得到的JSON结果中,"value"数组内的第一个值(示例中的1435781451.781)是UNIX时间戳,但每次执行查询该值都会变化,想咨询该时间戳的具体含义,同时希望获取实际的API调用时间。
调用示例及返回结果如下:
$ curl 'http://localhost:9090/api/v1/query?query=up&time=2015-07-01T20:10:51.781Z'
返回JSON:
{ "status" : "success", "data" : { "resultType" : "vector", "result" : [ { "metric" : { "__name__" : "up", "job" : "prometheus", "instance" : "localhost:9090" }, "value": [ 1435781451.781, "1" ] }, { "metric" : { "__name__" : "up", "job" : "node", "instance" : "localhost:9100" }, "value" : [ 1435781451.781, "0" ] } ] } }
解答
1. value数组中时间戳的含义
这个时间戳代表查询的目标时间点,规则如下:
- 如果调用
/api/v1/query时指定了time参数(比如示例中的2015-07-01T20:10:51.781Z),该时间戳就是time参数对应的UNIX时间戳(精确到毫秒),和你指定的时间完全匹配; - 如果调用时未传
time参数,这个时间戳就是Prometheus服务器执行该查询请求时的当前系统时间,因此每次查询结果都会变化。
2. 获取实际的API调用时间
有两种可靠方式:
- 获取服务器响应完成时间:查看HTTP响应头中的
Date字段,该字段记录了Prometheus服务器返回响应的时间,也就是API请求处理完成的时间。在PowerBI中,可通过自定义脚本或扩展读取该响应头值; - 获取客户端发起请求时间:直接在PowerBI发起API请求的代码中,记录当前本地时间即可,这个时间就是你发起API调用的时间点。
内容的提问来源于stack exchange,提问作者ZN K
相关产品推荐
相关产品推荐

