Введение
Необходимо поставить систему мониторинга ошибок сайта 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 завершена.