[英]Prometheus/Grafana plot wait time percentiles for jobs
我有一个作业调度引擎,可以在各种机器上运行作业。 我有一个待处理的作业队列作为流(通常等待执行的数千个作业中至少有十万个)。 我有一种算法可以在不同的机器上执行作业。
跟踪的核心指标之一是请求作业后计划执行多长时间(通常少于5分钟,但由于各种原因最多可能需要1个小时)。
是否有办法绘制使用Prometheus + Grafana(或Prometheus和其他解决方案,如Redis的组合)当前未分配工作已经存在多长时间的百分位数? 我想知道什么是中位等待时间,即工作的等待时间的95%和99%。
问题是直到计划执行该作业之前,不会生成任何事件,并且我们等待的时间越长,该作业将移入更高的存储桶。 此外,由于作业的安排时间可能非常不同(并非每个作业都相同),因此仅依靠过去很少的作业需要多长时间来安排时间是错误的。
一种简单的方法是遍历所有待处理的作业并连续计算百分位数,但这将非常昂贵。
Prometheus直方图实现假定一组固定的存储桶(例如,小于1秒,小于2秒,小于5秒等),只能递增(以及它们上方的所有存储桶)。
在您的情况下,您有2个选择:
因此,您剩下了两种选择:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.