仅从最后一次抓取迭代中从普罗米修斯获取数据

Get data from prometheus only from last scrape iteration

用例

我正在创建一个工具来显示 kubernetes 集群中所有 pods 的资源请求。 Prometheus 已经抓取了我的 prometheus 指标导出器,并在历史上保存了所有抓取的指标(间隔 10 秒),这样我什至可以看到所有 pods 10 天前的资源请求。

问题

每次重新部署 pod 时,它都会更改名称。但是我只想显示实际 运行 pods 的资源请求。为了这个目的,我显然可以添加一个时间选择器,比如只显示最多 15 秒的旧结果,但这有点 hack。如果可能的话,我想从最新的抓取迭代中获取结果(如果出现问题,可能会早于 15 秒)。

问题

仅获取在上一次迭代中被抓取的那些普罗米修斯指标的最佳方法是什么?

例如,

eagle_container_resource_requests_cpu return pods 请求的 CPU 核心现在已不存在。

旁注:我正在尝试在 Grafana 中实现此行为 table。

当您查询指标时 eagle_container_resource_requests_cpu 您会得到最新的值,例如这是您使用 Prometheus 图形执行发送的实际请求:

https://<prometheus-url>/api/v1/query?query=eagle_container_resource_requests_cpu&time=1541769935.01&_=1541769677378

另外,你可以直接调用Prometheus API:

来验证
curl 'http://localhost:9090/api/v1/query?query=eagle_container_resource_requests_cpu&time=2018-11-09T10:10:51.781Z'

两个响应都将包含已抓取的时间戳指标,例如:

"value":[1541770056.042,"11"]

如果您想在 Grafana 的单统计图表中看到这个:

您可以看到 "current"(最新)值,或最后一点的时间。

陈旧性可能就是您要找的:https://prometheus.io/docs/prometheus/latest/querying/basics/#staleness

所以 5 分钟后,您应该会开始看到数值消失。