Я экспортирую некоторые метрики о запущенных задачах, доступные данные включают текущее количество задач по их статусу и очереди:
# TYPE gauge
tasks{queue="high", status="queued"} 2.0
tasks{queue="high", status="started"} 1.0
tasks{queue="high", status="successful"} 5.0
tasks{queue="high", status="failed"} 1.0
tasks{queue="low", status="queued"} 1.0
tasks{queue="low", status="started"} 2.0
tasks{queue="low", status="successful"} 3.0
tasks{queue="low", status="failed"} 2.0
Эти числа регулярно меняются, когда задачи добавляются или срок их действия истекает из базы данных, например, число задач failed
будет go увеличиваться и уменьшаться в зависимости от задач в базе данных на момент сбора данных.
У меня нет способа получить общее количество количество задач, так что это все данные, которые у меня есть, я хочу рассчитать процент задач по их метке status
и создать график этого значения, используя Графана .
Как процент должен быть рассчитан?
Что я пробовал до сих пор:
Получить процент всех успешных задач:
( sum(tasks{status="successful"}) / sum(tasks) ) * 100
Получить процент успешных задач по очередь:
( sum(tasks{status="finished"}) by (queue) / sum(tasks) by (queue) ) * 100
Как я могу получить этот процент по времени? Например, при установке диапазона времени в Графана ? Я могу использовать переменную $__range
, но как мне сделать расчет?
У меня есть другие данные, где у меня есть count метрики, и я делаю следующее:
sum(increase(tasks_total{status="success"}[$__range])) /
sum(increase(tasks_total{status="started"}[$__range]))
Но это подсчеты, и эти вычисления не применимы к калибровочным метрикам.