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

    Команда Simple-Server
    03.06.2026
    8 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Зачем Sentry, когда есть логирование?

    Просмотреть логи и узнать, что происходит с сервисом, — хорошо. Когда логи со всех сервисов собираются в одном месте, как Elastiс, OpenSearch, Loki — отлично.

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

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

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

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

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

    В коде своего приложения мы устанавливаем DSN (URL) своей платформы, куда будут отправляться отчеты (ошибки, исключения, логи). При желании можно расширять, дорабатывать, скрывать (маскировать) отправляемые данные.

    Поддерживаемые платформы и языки

    Продукт поддерживает JavaScript, Node, Python, PHP, Ruby, Java и другие языки программирования.

    На скриншоте видно, что есть как просто Python -проект, так и Django , Flask , FastAPI , в котором уже за нас в более удобной и детальной форме используются данные для отправки отчетов.

    Sentry может использоваться в следующих вариантах:

    • Self-hosted (поднятый на своем сервере)
    • Облачный (есть ограниченная бесплатная версия и платные с ежемесячной оплатой)

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

    Установка self-hosted версии

    Теперь перейдем к технической части. Для развертывания нам нужен репозиторий getsentry/self-hosted. Платформа будет развернута в docker-compose.

    • Docker 19.03.6+
    • Compose 2.19.0+
    • 4 CPU Cores
    • 16 GB RAM
    • 20 GB Free Disk Space

    Для демонстрации я буду использовать виртуальную машину от Simple-Server с Ubuntu 22.04.

    apt update && apt upgrade -y

    Устанавливаем необходимые пакеты.

    Для Docker apt предлагает версию 20.10.24, установим ее.

    Для docker-composeapt предлагает установить версию 1.29.2-1. Она не сходится с требуемой, поэтому стандартная установка не подойдет. Потребуется устанавливать вручную с официального репозитория.

    Получим последнюю версию в переменную:

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

    Осталось скачать по указанному пути и выдать права:

    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 Docker Compose version v2.20.3

    Разработчики Sentry максимально упростили установку с помощью скрипта.

    Выбираем и клонируем репозиторий и релизную ветку:

    git clone https://github.com/getsentry/self-hosted.git cd self-hosted git checkout 23.8.0 ./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

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

    Перед первым логином внесите изменения в файл ./sentry/config.yml. Нужно добавить следующую строку:

    system.url-prefix: 'http://server_IP:9000'

    После чего перезапустите контейнер:

    Также мы пропустили создание пользователя. Сделаем это сейчас с помощью команды:

    docker-compose run --rm web createuser

    Вводим email, пароль и отвечаем на вопрос: Давать ли права суперпользователя этому пользователю?

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

    На этом в целом Sentry готов к работе, подробнее про конфигурацию можно почитать тут.

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

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

    По умолчанию поднимается 42 контейнера, и в конфигах есть что настроить.

    Сразу возникает вопрос: зачем столько контейнеров? Можно ли убрать лишнее и собрать минимальную сборку?

    Нет, на данный момент нельзя — из-за сложных архитектурных связей.

    В .env—файл добавляю переменную SENTRY_BEACON = False. Она позволяет разработчикам собирать приватную статистику для улучшения продукта, я хочу ее отключить.

    Срок хранения событий можно также изменить здесь, по умолчанию он равен 90 дням:

    SENTRY_EVENT_RETENTION_DAYS=90

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

    Осталось самостоятельно настроить HTTPS proxy для доступа к web-интерфейсу. В документации нет конкретных указаний, рекомендуют использовать любой reverse proxy на ваше усмотрение. После настройки обратного прокси-сервера, нужно будет изменить system.url-prefix в файле config.yml и обновить раздел SSL/TLS в sentry/sentry.conf.py.

    Настройка и подключение первого проекта

    Нажимаем «Добавить новый проект» и выбираем платформу.

    После этого для проекта генерируется его уникальный ID, который нужно будет использовать в приложении.

    Обратите внимание на переменную traces_sample_rate=1.0 и комментарии от разработчиков. Чтобы не перезагружать платформу тысячами однотипных ошибок, рекомендуется настроить данную переменную. При указании 1.0 будут отправляться 100% всех событий, а, например, при 0.25 — 25%.

    О дополнительных параметрах sentry_sdk можно почитать в документации. На скрине выше показан пример использования.

    Мы немного усложним пример из документации, добавив зависимые функции и свой Exception.

    import sentry_sdk sentry_sdk.init( dsn="http://979bc0c738a5e4d8b4709e50247035c7@sentry.akmalov.com:9000/3", # Ссылка DSN с ID=3 получаем при создании проекта  traces_sample_rate=1.0environment="production", # Возможность добавить среду выполнения release="my-app-1.0.0", # Релизная версия приложения send_default_pii=True,  ) class MyException(Exception): pass def my_function(user, email): raise MyException(f"User {user} ({email}) encountered an error.") def create_user(): print("Создадим пользователя") my_function('Artur', 'artur@akmalov.com') if __name__ == "__main__": sentry_sdk.capture_message("Просто захотелось отправить сообщение")  create_user()

    В результате в Sentry получаем следующее:

    В тэгах отображаются переменная среды, версия релиза и даже имя сервера (hostname):

    На скрине видно подробную трассировку и переходы по функциям из скрипта, а также переменные, которые в них использовались:

    И даже версии используемых пакетов:


    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны