У меня есть механизм планирования заданий, который может запускать задания на разных машинах.У меня есть очередь ожидающих заданий, поступающих в виде потока (обычно не менее 10 тысяч заданий, ожидающих выполнения).У меня есть алгоритм для выполнения заданий на разных машинах.
Одна из основных метрик для отслеживания - это сколько времени после запроса задания оно запланировано для выполнения (обычно это менее 5 минут, но может бытьдо 1 часа по разным причинам).
Есть ли способ построить процентили того, как долго текущие неназначенные задания были там для использования Prometheus + Grafana (или смеси Prometheus и других решений, таких как Redis)?Я хочу знать, каково среднее время ожидания, 95 и 99 процентилей времени ожидания для заданий.
Проблема заключается в том, что до тех пор, пока задание не будет запланировано для выполнения, событие не генерируется, и чем дольше мы ждем, тем выше уровеньработа перейдет в.Более того, поскольку задание может занимать очень разное время для планирования (не все задания одинаковы), просто полагаться на то, сколько времени понадобилось для выполнения нескольких заданий в прошлом, неправильно.
Один простой способ - выполнить итерациювсе ожидающие работы и вычислять процентили непрерывно, но это будет очень дорого.