четверг, 22 августа 2019 г.

Debian 10. Установка 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

Ставим пакеты:
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 CE
sudo 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
Наблюдаем появившийся контейнер
Поднимаем и запускаем postgresql контейнер:
docker run -d --name sentry-postgres -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=sentry postgres
Проверяем:
docker ps
Наблюдаем, что контейнеров 2
Генерируем ключ, который будет использоваться всеми 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
Добавился 3й контейнер
Теперь необходимо запустить 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
Установка завершена.
Небольшое продолжение...


3 комментария:

  1. Добрый день,
    спасибо за инструкцию, все запустилось.
    Но вот работало только до первого ребута, потом ничего автоматически не запустилось. Как запускать сделать автозапуск всех этих контейнеров?

    ОтветитьУдалить
    Ответы
    1. Запустите по очереди руками или напишите скрипт последовательного запуска.
      Это же сервер - у меня он с момента написания заметки по моему и не перезагружался.
      Контейнер запускается коммандой:
      docker start container_name

      Удалить