值从零开始的时间

时间:2018-10-18 12:05:21

标签: grafana prometheus

我有一个应用程序,它消耗与AWS主题相关的工作。一天添加几次工作,我的应用程序很快就消耗掉了它,队列长度又回到了0。我能够为队列长度产生一个度量。

我想要一个自从队列长度最后为零以来的时间指标。有任何想法入门吗?

2 个答案:

答案 0 :(得分:1)

假设有一个queue_size量表记录了队列的大小,则可以定义一个记录规则,如下所示:

# 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

但是请注意,由于这是一个量表(并且由于采样的限制),您最终可能会得到怪异的结果。例如。如果每分钟添加一个工作项,则您的采样间隔为一分钟,并且在添加工作项后进行采样,从Prometheus的角度来看,您的队列可能永远不会(或很少)显示为空。如果发现这是一个问题(或仅是一个问题),则最好让您的应用程序导出一个度量标准,该度量标准是将某些内容添加到空队列时的最后一个时间戳(基本上是记录的规则尝试计算的度量)。 / p>

答案 1 :(得分:0)

类似于Alin的回答;重新审视此问题后,我从Prometheus文档中发现了这一点:

https://prometheus.io/docs/practices/instrumentation/#timestamps,-not-time-since

  

如果您想跟踪某件事发生后的时间,请导出    发生时间的Unix时间戳-自发生以来的时间。    导出时间戳后,您可以使用表达式time()-    my_timestamp_metric以计算自事件以来的时间,从而无需    更新逻辑并保护您免受更新逻辑的困扰。