Очередное демо. Клиент говорит, что часть задач на анализ доков по NDA завершилась ошибкой 😭
К сожалению, телепаты в отпуске — пора смотреть логи.
Приложение пишет достаточно много логов:
— access-лог веб-сервера
— error-лог PHP
— лог самого приложения, куда пишут разные подсистемы:
— логи других компонентов системы: СУБД, RabbitMQ, воркеры обрабатывающие асинхронные задачи и т.д
Как смотрим логи
по привычке:
tail + grepесли надо чуть больше удобства:
lnav--- вы находитесь тут ---
если нужно еще больше удобства контроля:
настраиваем доставку логов в OpenSearch или похожее решение
А что с ошибками?
если мы говорим про ошибки уровня приложения, то они могут возникнуть:
— на фронтенде: привет JavaScript
— на бекенде: привет PHP, ну или на чем там сейчас модно писать?
Выискивать их в логах и пытаться понять, что там произошло, достаточно муторное занятие, поэтому используем инструментарий автоматического сбора ошибок —
https://sentry.io/welcome/ Искать аналог для импортозамещения мне лень, если кто знает, то поделитесь в комментариях.
Вы подключаете код обработчика ошибок и в случае ее возникновения данные об ошибке и стеке вызова уедут в систему, специально для этого предназначенную.
Из плюсов:
— группировка ошибок
— проброс данных об окружении (dev, test, prod)
— проброс данных о пользователе, которому не повезло. Можно отправлять только
user_id, поэтому никакой трансграничной передачи ПДн не будет 😘
— уведомления на почту, если все совсем плохо. Разработчики дуреют с этого прикорма, я вам это гарантирую.
Если у вас есть лишний мощный сервер, то можно сделать приватную инсталляцию sentry внутри вашего периметра, «большие ребята» делают именно так.
У Sentry есть еще более хитрые вещи вроде поддержки OTEL, но речь сейчас не про них.
Теперь о всех ошибках, которые возникают на демо, можно знать не только со слов клиентов.
#разработка #sentry