Получи случайную криптовалюту за регистрацию!

Пилил я тут недавно дашбоард по нашим тикетам. Сколько времени | Хмельной Девопс

Пилил я тут недавно дашбоард по нашим тикетам. Сколько времени тратим, сколько тикетов каждого типа к нам приходит, какие severity у инцидентов. И была там одна метрика, которая нам очень важна, но подсчитать ее в лоб не так-то просто. Это - время ответа на заявку и время закрытия заявки.

С одной стороны ничего сложного - вычитаем из поля responded_timestamp значение поля created_at и получаем время ответа. Или среднее или персентили - все что душе угодно. Но блин, ведь заявка, созданная вечером, в нерабочее время будет обработана только с утра. Это как минимум часов 8. А нам надо как-то учитывать только рабочее время - исключать праздники, выходные и время с 19 до 10

Забыл упомянуть, что все данные хранились в эластике - просто грузили все тикеты и информацию о них в json'ке. А для визуализации у нас была кибана. Собственно выбор был очевиден - нужно использовать scripted fields и писать скрипт на языке painless. Быстрый гуглинг результатов не дал - никаких исходников или скриптов примерно решающих ту же задачу не нашлось.

Пришлось отдавать на аутсорс и писать собственное решение. Именно им я и хочу поделиться с вами, уважаемые коллеги. Если вдруг кто-то использует kiban'у как BI инструмент и хочет рассчитывать разницу между двумя датами с учетом рабочего времени - welcome! Скрипт вы можете найти здесь: https://gist.github.com/vozerov/c3578e727e511cd99fd7e9af3e348e14

Если у кого-то если желание его доработать или добавить функционала - пишите, опубликую ваши апдейты

P.S. В итоге все равно ушли на редаш с постгресом - не смогли добить некоторые метрики в эластике без join'ов.