Prometheus是否存储监控样本的抓取时间戳?查询结果存疑
Prometheus指标实际抓取时间戳的问题解答
Prometheus不会单独存储指标的实际抓取时间戳,它存储的样本时间戳默认是抓取操作发生时Prometheus服务器的本地时间;如果exporter主动为指标附加了@timestamp标签,才会使用exporter提供的时间,但这种场景并不普遍。
你执行查询后得到统一时间戳的原因,是timestamp()函数返回的是Prometheus在查询时对齐到目标时间点的样本时间。当你指定某个查询时间时,Prometheus会从存储中选取最接近该时间点的样本数据返回,所有匹配的样本都会被对齐到这个查询时间,所以你看到结果的时间戳完全一致,不会出现交错差异。
如果需要获取实例的实际抓取时间,可以参考这两种方案:
- 借助Prometheus内置的
up指标:up指标的样本时间戳就是对应目标最近一次成功抓取的时间,你可以通过关联up{job="你的任务名"}的时间戳来间接获取 - 自定义暴露抓取时间指标:如果是自研exporter,可以额外暴露类似
scrape_timestamp_seconds的指标,将抓取时刻的时间戳作为样本值返回,这样就能直接查询到实际抓取时间
内容的提问来源于stack exchange,提问作者Craig Ringer
相关产品推荐
相关产品推荐

