🔥

Тред (@twilightfeel)


@jsunderhood можно от общего к частному. Вот у тебя падает приложение, что дальше? Как падать, как логгировать, как искать причину?
А, то есть про post mortem разборы. Сейчас будет реклама github.com/nodules/terror/ и grafana.org :) twitter.com/dosyara/status…

Локализация исключений. На первый взгляд никакой разницы (кроме потери стектреса при rethrow, но об это позже): gist.github.com/kaero/5d48acc6…

Но rethrow позволит более точно установить место в обработчике выше и сформировать метрику, за которой можно следить gist.github.com/kaero/5d48acc6…

Понятно, что есть и другие способы. Можно, например, парсить стектрейс. Но это не летит, если тебе нужны realtime-метрики, ..

..а событий у тебя несколько десятков или сотен тысяч в секунду.

В результате мы сделали terror и обработчик ошибок верхнего уровня помимо логирования отправляет метрику в statsd.

Это позволяет видеть проблемы на графиках очень оперативно и достаточно точно определять источник: 1 код ошибки на 1 место использования

btw, конкретный код тут не важен. Главное иметь возможность стремительно быстро понимать, что пришел писец, и где он засел.

Логи. Ну, они есть, но для оперативной реакции и понимания проблем логи без постобработки бесполезны. Есть logstash, но как-то не полетел.

А постобработка и риалтайм... возможны до определенной нагрузки. С определенного момента становится неоправданно дорого по ресурсам.

Про собственно, post-mortem. Тут как раз важны логи. Можно использовать опцию --abort_on_uncaught_exception и ковырятся потом в корке.

Даже не знаю, что добавить еще.

На тему есть github.com/nodejs/post-mo… но там все очень вяленько.

Филипп КовалевФилипп Ковалев