Grafana 值为零后的时间

Grafana 值为零后的时间,grafana,prometheus,Grafana,Prometheus,我有一个应用程序,它消耗AWS主题中的工作。工作一天添加几次,我的应用程序很快就会使用它,队列长度回到0。我能够生成队列长度的度量 我想要一个时间指标,因为队列长度最后为零。想知道如何开始吗?假设有一个记录队列大小的队列大小测量仪,您可以定义这样的记录规则: # Timestamp of the most recent `queue_size` == 0 sample; else propagate the previous value - record: last_empty_queue_ti

我有一个应用程序,它消耗AWS主题中的工作。工作一天添加几次,我的应用程序很快就会使用它,队列长度回到0。我能够生成队列长度的度量

我想要一个时间指标,因为队列长度最后为零。想知道如何开始吗?

假设有一个记录队列大小的队列大小测量仪,您可以定义这样的记录规则:

# Timestamp of the most recent `queue_size` == 0 sample; else propagate the previous value
- record: last_empty_queue_timestamp
  expr: timestamp(queue_size == 0) or last_empty_queue_timestamp
然后,您可以计算自上次队列为空以来的时间,如下所示:

timestamp(queue_size) - last_empty_queue_timestamp

但是请注意,由于这是一个量具,并且由于采样的限制,您可能会得到奇怪的结果。例如,如果每分钟添加一个工作项,您的采样间隔为一分钟,并且您恰好在添加工作项后采样,那么从普罗米修斯的角度来看,您的队列可能永远不会或很少出现空队列。如果这是一个问题或仅仅是一个问题,您最好让您的应用程序导出一个度量,该度量是向空队列添加内容时的最后一个时间戳,基本上是记录的规则试图计算的内容。

类似于Alin的回答;在重新研究这个问题时,我从普罗米修斯的文档中发现:

如果要跟踪事件发生后的时间量,请导出 它发生的Unix时间戳—不是它发生后的时间。 导出时间戳后,可以使用表达式time- my_timestamp_度量,用于计算自事件发生以来的时间,无需 更新逻辑并防止更新逻辑卡住