Что на этой странице
- Собирается, не трогая код заказчика
- Одна подпись, одна группа
- Не всякая ошибка является вашим багом
- Оценка, которая говорит, что вперёд
- Письмо о новой и отдельное письмо о вернувшейся
- Откуда в коде это пришло
- Области, чтобы спросить «что у нас сломано в платежах»
- Первый прогон не заваливает письмами обо всём, что было
- Отсюда открывается задача
- Что видит заказчик
Живой продовый сервер сыплет ошибками непрерывно. Большая часть повторяется, часть вообще не ваша, и в списке все они выглядят одинаково. Вопрос не «сколько было ошибок», а «что чинить сегодня».
Собирается, не трогая код заказчика
Ошибки тянутся из фида самой системы, раз в пять минут, с курсором, от которого продолжают. Агента ставить не надо, библиотеку в код добавлять не надо: собирается то, о чём система и так сообщает.
Одна подпись, одна группа
Одна и та же ошибка повторяется тысячи раз и не является тысячей бед. Каждому событию считается подпись из трёх частей (модуль, функция и нормализованное сообщение), и события с одинаковой подписью попадают в одну группу со счётчиком.
Не всякая ошибка является вашим багом
Каждая группа раскладывается на три вида: настоящая ошибка, внешняя служба (SMS, почта) и шум: боты, сканеры, проверки несуществующих адресов. Раскладка сделана явными правилами, а не догадкой, и умолчание тут «настоящая»: то, что мы не опознали, не прячется.
Оценка, которая говорит, что вперёд
Каждой группе считается серьёзность из четырёх вещей: частота, вид, возврат после закрытия и когда видели в последний раз. Шум остаётся низким всегда; внешняя служба упирается в потолок «средне»; вернувшаяся группа поднимается на ступень; не всплывавшая три дня опускается.
Слагаемое «рост частоты» намеренно не введено: у накопленной истории не хватает глубины, а показатель, который нельзя посчитать честно, выглядел бы как измерение.
Письмо о новой и отдельное письмо о вернувшейся
О новой группе письмо уходит один раз. Если закрытая группа вернулась, уходит другое письмо, которое говорит об этом словами, а не значком: «появилась» и «вернулась» требуют разного, а одинаковая тема научила бы не читать ни ту ни другую.
Текст ошибки и в письме, и на экране проходит маскирование идентификаторов. В сообщении об ошибке лежит то, что ввёл пользователь (номер удостоверения в параметре, телефон из формы), а ушедшее письмо уже не отозвать.
Откуда в коде это пришло
Из стека вызовов достаётся имя класса, в котором ошибка упала. Работает это не всегда: стек приходит не с каждой ошибкой, и в нём не всегда есть наш собственный кадр.
Области, чтобы спросить «что у нас сломано в платежах»
Группам можно проставить метку области (платежи, регистрация, админка), и тогда вопрос перестаёт быть «какая ошибка чаще всех» и становится «что не в порядке вот в этой части системы». Сейчас заведено 8 таких меток.
Первый прогон не заваливает письмами обо всём, что было
Когда подключают фид, работающий годами, всё, что в нём есть, для нас «новое», и без отдельного правила первый прогон отправил бы сотни писем разом, а их все удалили бы не читая.
Поэтому группы, существовавшие до подключения, помечаются известными молча, а узкое окно оставлено тому, что действительно появилось только что. На живом проекте так не ушло 849 лишних писем, и написано было про ту одну группу, которая и правда родилась в тот час.
Отсюда открывается задача
Из группы задача заводится одним действием, и задача помнит, из какой ошибки родилась. Есть и поле решения, и механизм поиска похожих уже решённых групп.
И честно: на живом проекте такая задача заведена одна, а решение записано у нуля групп из 902. Механизм есть, материала в нём пока нет.
Что видит заказчик
Ничего. Экраны ошибок принадлежат исполнителю. До заказчика доходит то, что стало задачей или отчётом, а не сам список.
Хотите посмотреть это на своих данных? Можно начать с пробного периода, без карты.
Начать бесплатно