使用 Prometheus 计数器跟踪事件

Posted

技术标签:

【中文标题】使用 Prometheus 计数器跟踪事件【英文标题】:Track Events with Prometheus Counters 【发布时间】:2018-01-01 13:38:16 【问题描述】:

将 Prometheus 用于每秒处理的事情真的很棒,我在 rateirate 上取得了巨大的成功。我只是不知道如何绘制很少发生但很重要的事情。

所以我有一个我正在递增的计数器,称为job_failed。每当发生这种情况时,它都会出现在我的即时向量中。如果我直接绘制它,它总是会上升,并且我会在图中看到一个凸起,但这并没有给我足够清楚的迹象表明工作失败了。所以我想让它成为一个归零图表中的一个尖峰。

如果我执行rate(job_failed[15s]),我会得到我的峰值 - 但它是每秒峰值,所以它的值是 0.1,尽管我想要的变化是 1。 我试过increase(job_failed[1m]),但也没有正确加起来,偶尔会给我留下2.18等值。

有没有办法只看到一个尖峰?这似乎是一件微不足道的事情,但我无法弄清楚。

【问题讨论】:

【参考方案1】:

Prometheus 更适合高容量事件而不是低容量事件,因为在低容量的情况下,我们如何保持事情的准确性平均会出现。

例如rate(job_failed[15s]) 在 15 秒内增加 1 是 1/15 = 0.066/s。四舍五入可以使显示为 0.1。

https://www.youtube.com/watch?v=67Ulrq6DxwA 详细介绍了这一切的工作原理。

简短的版本是您现在正在做的事情。

【讨论】:

【参考方案2】:

对于类似的要求,我使用了 delta 函数,并根据要求配置了阈值。

https://prometheus.io/docs/querying/functions/#delta

【讨论】:

Delta 用于仪表,而不是计数器。我通常会避免使用该功能,因为通常您实际上想要在 delta 出现时进行派生。 同意使用它的数据类型,但它是异常检测的绝佳工具。

以上是关于使用 Prometheus 计数器跟踪事件的主要内容,如果未能解决你的问题,请参考以下文章

Linux常用性能工具功能用法及原理

分别跟踪新记录和更新记录的计数

Android应用开始和结束事件

跟踪线索事件

Oracle 10046跟踪事件使用方法

事件跟踪中的 fieldsObject 是啥?