Введение
Необходимо поставить систему мониторинга ошибок сайта Sentry. Рекомендуемыйразработчиками способ установки - использование Docker контейнера. Так и будем делать. Для удобства миграции и распределения нагрузки буду ставить на отдельную VM.
Параметры VM:
- HDD 32G
- Memmory 8G
- CPU 2cores
Базовая система
В качестве базовой системы, как ясно из заголовка, буду использовать Debian 10. Установка ничем не примечательна, выбираю минимальную конфигурацию.После установки ставлю mc и qemu-guest-agent.
apt install mc qemu-guest-agent
Установка Docker
Ставим пакеты:sudo
apt install apt-transport-https ca-certificates curl software-properties-common gnupg2 -y
Добавляем Docker PGP key:sudo curl -fsSL https://download.docker.com/linux/debian/gpg | sudo apt-key add -
Добавляем стабильный docker репозиторийsudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/debian $(lsb_release -cs) stable"
Ставим Docker CEsudo apt update
sudo apt install docker-ce
Пробуем выполнить тестовый контейнер:sudo docker run hello-world
Если все нормально увидим следующий вывод:
Резервная копия VM
Так как это уже вторая виртуалка с Docker за последнее время, решил сделать бэкап виртуалки, чтоб не инсталить одно и то жеВыключаю, иду в консоль Proxmox VE и делаю резервную копию:
Установка:
Для всех контейнеров будем использовать официальные образы.Поднимаем и запускаем redis контейнер:
docker run -d --name sentry-redis redis
Проверяем результат:docker ps
Наблюдаем появившийся контейнер |
docker run -d --name sentry-postgres -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=sentry postgres
Проверяем:docker ps
Наблюдаем, что контейнеров 2 |
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
Добавился 3й контейнер |
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
Входим пользователем, созданным на этапе инициализации базы данных, в качестве логина необходимо ввести указанную почту.
В случае необходимости, можно добавить нового пользователя в командной строке:
docker run -it --rm -e SENTRY_SECRET_KEY='<secret-key>' --link sentry-redis:redis --link sentry-postgres:postgres sentry createuser
Установка завершена.Небольшое продолжение...
Добрый день,
ОтветитьУдалитьспасибо за инструкцию, все запустилось.
Но вот работало только до первого ребута, потом ничего автоматически не запустилось. Как запускать сделать автозапуск всех этих контейнеров?
Запустите по очереди руками или напишите скрипт последовательного запуска.
УдалитьЭто же сервер - у меня он с момента написания заметки по моему и не перезагружался.
Контейнер запускается коммандой:
docker start container_name
--restart=always
Удалить