Как с помощью Sentry находить и быстро устранять ошибки

Sentry — это инструмент для мониторинга и анализа ошибок в приложениях, который помогает улучшать качество кода, оптимизировать производительность, улучшать пользовательский опыт, ускорить процесс разработки и повысить надежность приложений. Он предоставляет разработчикам детальную информацию о проблемах в приложении и позволяет быстро исправлять их.

Цели

  • Повысить скорость реагирования на возникающие ошибки.
  • Повысить информативность ошибок, встречающихся у пользователей.
  • Повысить надежность работы сервисов.
  • Снизить затраты на разработку.

Решение

Теория

Важнейшим механизмом для поддержания высокого качества является своевременное информирование об ошибках. Но как быть, если пользователь всё-таки столкнулся с ошибкой? Для этого мы подключаем и настраиваем Sentry — инструмент для мониторинга и анализа ошибок в приложениях, который позволяет нам получать данные об ошибках.

Sentry удобным образом группирует каждую отдельную ошибку в Issue — отдельную группу ошибок, в которой можно увидеть список конкретных событий. При разборе ошибок мы опираемся в первую очередь на следующую информацию:

  • Данные об ошибке — количество ошибок внутри группы, количество затронутых пользователей, критичность ошибки (привела ли она к отказу в обслуживании), время появления.
  • Данные об устройстве — операционная система пользователя, модель устройства, часовой пояс и локация. Если это мобильное устройство, то нам также будут доступны уровень заряда батареи, данные об объеме памяти, ориентации экрана, наличии зарядки.
  • Данные о приложении — окружение, версия и номер сборки, последние отправленные запросы или совершенные действия (переходы, нажатия). Если в приложении предусмотрен вход, мы также получим идентификатор пользователя.

Основные преимущества Sentry:

  • Информативность отчета. Для точной локализации причин возникновения ошибок недостаточно лишь того факта, что ошибка произошла. Мы внедряем Sentry таким образом, чтобы при просмотре ошибок были видны все действия, которые совершал пользователь, все операции, которые производились до ошибки и в момент её возникновения.
  • Быстродействие. Sentry позволяет моментально получать информацию об ошибках, а развитая система интеграций позволяет быстро отправить её в работу, подготовить исправление и выпустить в релиз.
  • Кроссплатформенность. Sentry из коробки поддерживает большое количество платформ и языков программирования: Python, JavaScript, Golang, PHP и многие другие.
  • Открытый и бесплатный. Помимо облачного решения, компания-разработчик даёт возможность использовать Sentry на собственных серверах.

Использование на практике

Глобально весь процесс подключения делится на несколько шагов:

  • Создание и настройка проекта в Sentry
  • Подключение в приложении
  • Настройка уведомлений

Стоит отметить, что простое подключение Sentry в приложение хоть и может дать представление об ошибке, но оно не всегда будет исчерпывающим и достаточным для понимания того, что спровоцировало ошибку и к чему она привела. Для полноценного использования всех возможностей мы уделяем особое внимание настройке интеграции между разрабатываемыми сервисами и Sentry, о чем расскажем в отдельной статье.

После интеграции в приложение необходимо дать возможность разработчикам, тестировщикам и менеджерам просматривать информацию о всех событиях, отслеживать статистику, получать уведомления. Для первых задач Sentry предоставляет готовый веб-интерфейс, для доступа к которому нужно войти со своей учетной записью.

Как с помощью Sentry находить и быстро устранять ошибки

После того, как проект настроен, а разработанное приложение интегрировано с Sentry, самое время настроить уведомления об ошибках. В Sentry для этого предусмотрен инструмент Alerts — гибко настраиваемые оповещения, срабатывание которых можно настроить не только на ошибки, но и на предупреждения системы. Можно дополнительно отфильтровать ошибки как по встроенным параметрам — названию, критичности, количеству, так и по собственным атрибутам. Чтобы отслеживать повторное возникновение ошибки после её устранения, можно настроить два отдельных оповещения: при самом первом появлении и при переходе ошибки из статуса “исправлена” в “неразрешенная”.

Как с помощью Sentry находить и быстро устранять ошибки

Из коробки Sentry предоставляет возможность отправлять оповещения на почту, в Slack и некоторые другие инструменты. В нашем случае удобнее всего использовать Telegram. Готовой интеграции для него нет, но Sentry дает возможность создать её самостоятельно — нужно лишь указать, на какой адрес отправлять оповещения, и уже по этому адресу можно развернуть небольшой сервис, который будет трансформировать сообщения от Sentry и отправлять их в Telegram либо отдельным пользователям, либо в общий чат или канал. Собственно, так мы и сделали.

Как с помощью Sentry находить и быстро устранять ошибки

Вызовы

  • Изучение и отладка. Правильно настроенный Sentry позволяет сильно упростить работу с ошибками. Но к сожалению, полноценная интеграция не прошла так быстро и просто, как нам хотелось. По ходу внедрения разных возможностей мы сталкивались с непредвиденными ситуациями и ввиду отсутствия опыта не сразу могли их решить. Чем больше вспомогательных инструментов мы добавляли, тем больше времени уделяли чтению документации и осознанному пониманию того, как это работает. И хоть времени было потрачено много, заключение будет однозначным: оно стоило того, ведь теперь мы имеем полноценно настроенный инструмент, который мы понимаем на более низком уровне, и который помогает нам на ежедневной основе.
  • Обучение команды. Отдельный этап внедрения Sentry на конкретный проект или, в нашем случае, во всю компанию. Одной из наших изначальных целей было желание сделать инструмент доступным не только для разработчиков, как он повсеместно позиционируется, но и для тестировщиков с менеджерами. Трудности ждали нас прямо с порога — разработчики Sentry прямым текстом сообщают, что это инструмент для разработчиков, и на первый взгляд ориентироваться в нём человеку, не понимающему техническую составляющую. Мы добились того, что каждый участник в команде разработки знает и понимает какие данные он получил из Sentry, как их анализировать и как использовать эту информацию для исправления ошибок.
  • Поддержка работоспособности. Sentry можно использовать как в облаке, что и рекомендуется делать для небольших проектов, так и поднимать собственный сервер. Несложные расчеты показали, что нам выгоднее использовать именно собственную копию Sentry. Однако облачное решение существует не просто так — в таком сценарии не нужно думать о серверах и связанных с ними проблем, привлекать DevOps-инженеров, а иногда и разработчиков. Увы, но именно это нам и приходилось делать неоднократно и как можно оперативно, поскольку от работоспособности самого Sentry зависит то, как быстро мы отреагируем на проблемы.

Цифры

  • на 40%. Сократили количество ошибок
  • в 3 раза. Уменьшили время локализации и исправления ошибок
  • 24/7. Уведомления о любых ошибках

Результат

  • Изменили подход к работе с ошибками, обучив сотрудников взаимодействию с инструментом. Теперь разработчики и тестировщики отслеживают появление новых ошибок, анализируют их и передают в работу на исправление.
  • Повысили скорость решения дефектов на проектах. Этого удалось добиться благодаря связке самого Sentry и Telegram-бота, который оперативно доставляет всем ответственным лицам информацию об ошибках.
  • Сократили затраты. Уменьшение количества ошибок и их более раннее выявление, а также сокращение времени на локализацию и исправление ошибок привело к сокращению затрат, экономии ресурсов как для нас, так и для заказчиков.
99
1 комментарий

классный инструмент, даже пожалуй, не имеет аналогов

но ценник кусачий. один неудачный релиз - и все

1
Ответить