计算计数器指标范围向量中第一个和最后一个元素之间的差异

Alf*_*eme 3 prometheus promql prometheus-node-exporter

我正在使用 PromQL 查询来计算过去 60 分钟内通过任何节点上的某些接口推送/接收的累积流量。使用 Prometheus Node Exporter 的指标:

delta(node_network_receive_bytes_total{device=~"ens.*"}[60m])*8
Run Code Online (Sandbox Code Playgroud)

和它的完全正常,只要该节点不处于该间隔重新启动,该值仅仅是矢量的尖端和它的尾巴之间的差。当系统重新启动并且计数器复位时,该函数的含义停止反映所述结果。

例如,这是以下图表node_network_transmit_bytes_total

IPv6 流量

...该函数将返回 -9MiB,而不是 10.2MiB。

我想我也可以使用rate()s 来获得估计值。但是有没有更好的功能/方法来获得实际的东西

Mic*_*bez 6

delta()的文档所示:

delta 应该只与仪表一起使用。

您应该使用特定于countersincrease()函数。

单调性中断(例如由于目标重新启动引起的计数器重置)会自动调整。

这是区分仪表和计数器的主要原因之一。请参阅有关差异的答案

您可以通过以下方法之一识别计数器:

  • 在文本文件输出的类型(例如:# TYPE http_requests_total counter
  • 该值是单调递增的(grafana 在检测到它时会提出与计数器相关的函数)
  • 名称应以_total(如果出口商尊重最佳实践)结尾

  • 仪表可以单调递增。为了区分仪表,您关心的是绝对值,而对于计数器,您关心的是它增加的速度。例如,git 存储库中的提交(通常)是单调增加的,但它是一个计量器而不是计数器。 (2认同)