Раздел помощи SpaceWeb

Sentry: мониторинг и отслеживание ошибок

22 июл, 2024

Установка и настройка Sentry: подробная инструкция

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

Основные функции Sentry: 

  • Мониторинг ошибок и исключений. Sentry автоматически отслеживает и регистрирует ошибки и исключения, которые возникают в приложении, предоставляя разработчикам детальную информацию для быстрого устранения проблем.
  • Уведомления и алерты. Sentry может отправлять уведомления о новых ошибках и проблемах различными способами, в том числе через email, мессенджеры и системы управления проектами.
  • Сбор контекстной информации. Sentry собирает подробную контекстную информацию о каждой ошибке, включая стек вызовов, окружение, пользовательские данные, а также метаданные, такие как версия приложения и среда выполнения.
  • Группировка ошибок. Sentry автоматически группирует схожие ошибки, что помогает избежать дублирования информации и упрощает анализ повторяющихся проблем.
  • Отчётность и аналитика. Sentry предоставляет инструменты для анализа и отчётности по ошибкам, позволяя разработчикам отслеживать тенденции, частоту возникновения ошибок и другие важные метрики.
  • Интеграции с внешними сервисами. Sentry поддерживает интеграции с множеством популярных инструментов и сервисов, включая GitHub, GitLab, Bitbucket, Azure DevOps, и многие другие, что позволяет легко интегрировать его в существующий рабочий процесс.
  • Мониторинг производительности. Помимо отслеживания ошибок, Sentry предоставляет возможности для мониторинга производительности приложения, включая замеры времени выполнения различных операций и идентификацию узких мест.
  • Поддержка множества платформ и языков. Sentry поддерживает широкий спектр языков программирования и платформ: например, JavaScript, Python, Java, Ruby, PHP и Go.
  • Анализ релизов. Sentry позволяет отслеживать ошибки и проблемы в конкретных релизах приложения, что помогает разработчикам быстро находить и исправлять регрессии.
  • Пользовательские атрибуты и теги. Разработчики могут добавлять пользовательские атрибуты и теги к событиям. Это упрощает фильтрацию и сортировку данных, а также помогает в более точном анализе проблем.

Почему Sentry лучше логирования

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

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

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

  • каким устройством и браузером пользовался потенциальный клиент;
  • какая функция вызвала ошибку и почему;
  • какая именно ошибка произошла;
  • какие данные были на фронтенде и что отправилось на бэкэнд.

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

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

Принцип работы Sentry

  1. Sentry интегрируется с приложением с помощью SDK (Software Development Kit), который доступен для множества языков программирования и фреймворков. Он позволяет приложению отправлять данные об ошибках и исключениях на сервер Sentry.
  2. Когда в приложении происходит ошибка или исключение, SDK автоматически перехватывает его и собирает всю необходимую информацию, включая стек вызовов, сообщение об ошибке, контекст выполнения, данные окружения (браузер, операционная система, устройство), а также пользовательские данные, если они настроены.
  3. Собранные данные об ошибках отправляются на сервер Sentry в режиме реального времени. Это может быть либо облачный сервис, который предоставляется Sentry, либо ваш собственный сервер.
  4. Сервер Sentry обрабатывает полученные данные, группирует похожие ошибки и сохраняет их в базе данных. Это позволяет избежать дублирования информации и упрощает анализ повторяющихся проблем.

Варианты использования 

Sentry можно использовать в различных формах:

  1. Self-hosted (развёрнутый на собственном сервере). Этот вариант предполагает установку и настройку Sentry на вашем собственном сервере. Он даёт вам полный контроль над данными и конфигурацией, а также позволяет минимизировать задержки при обработке ошибок.
  2. Облачный. Sentry предлагает облачное решение, которое включает ограниченную бесплатную версию и платные планы с ежемесячной оплатой. Облачная версия проста в настройке и не требует управления сервером.
  3. Developer (бесплатная облачная версия для маленьких проектов). Эта версия предназначена для тех, кто хочет познакомиться с возможностями Sentry без финансовых затрат. У неё есть некоторые ограничения, но она достаточно функциональна для начала.

Лучше всего начать с бесплатной облачной версии. Она позволяет быстро и без затрат оценить возможности инструмента. Однако, если вам нужно сразу использовать Sentry в крупных проектах, лучше выбрать вариант с развертыванием на собственном сервере. Это поможет минимизировать задержки данных (в облачной версии задержки могут быть от 1 до 5 минут).  С платной версией вы сможете более оперативно реагировать на ошибки.

Системные требования

Минимальные системные требования

  • Процессор: 2 ядра CPU
  • Оперативная память: 4 ГБ RAM

Если у машины характеристики ниже этих, вы не сможете установить Sentry.

Рекомендуемые системные требования

Для стабильной и эффективной работы Sentry рекомендуется следующая конфигурация:

  • Процессор: 4 ядра CPU
  • Оперативная память: 16 ГБ RAM
  • Дисковое пространство: 20 ГБ свободного места на диске

В зависимости от объёма трафика, возможно, вам потребуется увеличить системные ресурсы для обработки возросшей нагрузки.

Установка Sentry 

  1. Для начала необходимо обновить все зависимости на вашем сервере:
apt update && apt upgrade -y

  1. Установите Docker. APT предлагает версию 20.10.24, установите её:
apt install docker.io

  1. Установите Docker Compose. APT предлагает версию Docker Compose 1.29.2-1, которая не соответствует требуемой версии. Поэтому стандартная установка не подойдет, и мы установим Docker Compose вручную из официального репозитория.

Сначала получите последнюю версию в переменную:

VERSION=$(curl --silent https://api.github.com/repos/docker/compose/releases/latest | grep -Po '"tag_name": "\K.*\d')

  1. Затем скачайте файл и установите его:
DESTINATION=/usr/bin/docker-compose
sudo curl -L https://github.com/docker/compose/releases/download/${VERSION}/docker-compose-$(uname -s)-$(uname -m) -o $DESTINATION
sudo chmod 755 $DESTINATION

  1. Убедитесь, что установка Docker Compose прошла корректно:
docker-compose --version

Вывод должен быть примерно следующий:

Docker Compose version v2.20.3

  1. Склонируйте репозиторий и перекллючитесь на нужную ветку:
git clone https://github.com/getsentry/self-hosted.git
cd self-hosted
git checkout 23.8.0

  1. Запустите установочный скрипт:
./install.sh --skip-user-prompt --no-report-self-hosted-issues

Где:

  • «--skip-user-prompt» пропускает запрос создания пользователя;
  • «--no-report-self-hosted-issues» пропускает запрос на анонимную отправку данных разработчикам Sentry (может помочь улучшить продукт, но использует ресурсы).

Скрипт проверяет соответствие требованиям и скачивает необходимые образы (docker pull). После завершения будет выведено сообщение, что можно запустить Sentry:

You're all done! Run the following command to get Sentry running:
docker-compose up -d

  1. Запустите Sentry:
docker-compose up -d

Теперь веб-интерфейс будет доступен по IP-адресу хоста на порту 9000.

  1. Так как ранее мы пропустили создание пользователя во время установки, давайте сделаем это сейчас:
docker-compose run --rm web createuser

В поле «Email» укажите нужный email и дважды введите пароль в поля «Password» и «Repeat for confirmation». 

Когда система уточнит, стоит ли назначить нового пользователя суперпользователем («Should this user be a superuser?»), ответьте «y».

Настройка Sentry

Когда вы впервые откроете веб-интерфейс, появится окно настройки, где можно указать URL, параметры почтового сервера для отправки писем и разрешить самостоятельную регистрацию остальным пользователям.

Основные конфигурационные файлы:

  • .env
  • self-hosted/sentry/config.yml
  • self-hosted/sentry/sentry.conf.py

В .env файл добавьте переменную:

SENTRY_BEACON=False

Она отключает сбор приватной статистики для улучшения продукта.

Кроме того, в этот же файле вы можете изменить срок хранения событий. По умолчанию он равен 90 дням:

SENTRY_EVENT_RETENTION_DAYS=90

Данные проектов и учетные записи пользователей хранятся в PostgreSQL. Вы можете изменить конфигурации для использования своей базы данных, а также использовать свой Redis.

Чтобы обеспечить безопасный доступ к веб-интерфейсу, настройте HTTPS proxy. После настройки измените «system.url-prefix» в файле config.yml и обновите раздел SSL/TLS в sentry.conf.py.

Заключение

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

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