我希望Prometheus每小时抓取指标一次,并将这些每小时的抓取事件显示在Grafana仪表板的表格中。我在prometheus.yml文件中将全局刮擦间隔设置为1h。从Prometheus可视化器看,Prometheus似乎每小时刮擦约43分钟。但是,该数据似乎也仅在3分钟左右有效:Prometheus graph
那么,我的情况是这样的:在Grafana表中,我将此查询的最小步长设置为1h,但这导致该表说没有数据点。但是,如果我将最小步长设置为5分钟,它将显示每小时的刮擦事件,时间戳记为45分钟。我对为什么会发生这种情况的猜测是,普罗米修斯从几个小时的点开始,然后以最小步长向前或向后移动。
这确实实现了我想做的事情,但是如果Prometheus曾经做过类似的事情(可能在较早的图表开始时就可以看到),它也有可能出现错误的行为。我也知道我可以添加一个时移,但似乎总是相对于当前时间而不是绝对时间。
是否有可能增加刮擦数据在Prometheus中有效的时间量,而不必每3分钟再次刮擦一次?还是告诉Prometheus在每小时的00分钟标记处刮擦?否则,是否可以在表格中添加相对时移,使其从45分钟标记而不是00分钟标记开始?
顺便说一句,在上面的普罗米修斯图中,在普罗米修斯启动后,不规则的数据被刮掉了。我在22日18:30左右开始了普罗米修斯,但是普罗米修斯直到23:30才开始抓取,然后以不同的时间间隔抓取,直到23日2:43左右稳定下来。有人知道为什么吗?
答案 0 :(得分:2)
由于Prometheus中插入了staleness strategy,因此您的数据消失了。摄入样本后,该指标在5 minutes之后被认为是过时的。我没有找到任何配置来更改该值?
每小时刮刮并不是普罗米修斯的哲学。如果您确实需要以如此低的频率进行抓取,最好安排一个作业,将数据发送到push gateway或使用馈入节点导出器的舞会文件(如果有道理)。然后,您可以每1-2分钟刮擦一次此端点。
您还可以滚动自己的导出器,以记住上一次刮擦并仅在数据寿命超过一小时时才重新刮擦。 (这是我想要的解决方案)
现在,作为一种快速的解决方案,您可以请求过去一小时的数据并取其平均值。这样,您将考虑到最后一个(旧)花:
avg_over_time(old_metric[1h])
如果刮板的调度中存在一些抖动,它应该可以工作或具有一些暂时的错误值。
关于您有关后期抓取的问题,我怀疑在这些日期抓取失败。 Prometheus仅在下一个时间表(在您的情况下为1小时)重试。