Установка Sentry в Docker контейнере

Установка Sentry в Docker контейнере

Введение

Необходимо поставить систему мониторинга ошибок сайта Sentry. Рекомендуемый
разработчиками способ установки — использование Docker контейнера. Так и будем делать. Для удобства миграции и распределения нагрузки буду ставить на отдельную VM.
Параметры VM:

  • HDD 32G
  • Memmory 8G
  • CPU 2cores

Базовая система

В качестве базовой системы я буду использовать Debian 10. Установка ничем не примечательна, выбираю минимальную конфигурацию.

После установки ставлю mc и qemu-guest-agent.

apt install mc qemu-guest-agent

Установка Docker

Добавляем GPG ключ

sudo apt update
sudo apt install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

Добавляем репозиторий

echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update

Ставим Docker CE

sudo apt install docker-ce

Пробуем выполнить тестовый контейнер

sudo docker run hello-world

Если все нормально увидим следующий вывод:

Установка Sentry

Для всех контейнеров будем использовать официальные образы.
Поднимаем и запускаем redis контейнер

docker run -d --name sentry-redis redis

Проверяем результат

docker ps

Поднимаем и запускаем postgresql контейнер

docker run -d --name sentry-postgres -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=sentry postgres

Проверяем

Генерируем ключ, который будет использоваться всеми Sentry контейнерами

docker run --rm sentry config generate-secret-key

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

docker run -it --rm -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry upgrade

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

Завершается инициализация

Запускаем контейнер с Sentry

docker run -d -p 9000:9000 --name my-sentry -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-redis:redis --link sentry-postgres:postgres sentry

Напоминаю, что вместо <secret-key> указываем сгенерированный ключ


Смотрим результат

docker ps

Теперь необходимо запустить Sentry cron и несколько worker контейнеров все с тем же ключом

docker run -d --name sentry-cron -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry run cron

Ну и пара-тройка воркеров с разными именами

docker run -d --name sentry-worker-1 -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry run worker
docker run -d --name sentry-worker-2 -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry run worker
docker run -d --name sentry-worker-3 -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-postgres:postgres --link sentry-redis:redis sentry run worker

Смотрим что вышло

docker ps

Подключаемся браузером по адресу IP_VM:9000

Входим пользователем, созданным на этапе инициализации базы данных, в качестве логина необходимо ввести указанную почту.

В случае необходимости, можно добавить нового пользователя в командной строке

docker run -it --rm -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-redis:redis --link sentry-postgres:postgres sentry createuser

На этом установка Sentry завершена.