Главная
Главная Руководства Ubuntu › Ставим и настраиваем Sentry на Ubuntu 18.04



Автор:

Статья опубликована: 2019-11-14 12:39:50
Последние правки: 2019-11-14 21:28:31

Sentry - система мониторинга ошибок. Она существует в двух видах - сервис sentry.io, за пользование которым вы платите деньги и On-Premise версия, которая работает standalone на вашем сервере совершенно бесплатно, но без внятной поддержки разработчиками и, как это сейчас принято, под докером в виде нескольких черных ящиков. Установим и настроим данное чудо на Ubuntu 18.04.

  • Установка

    Предварительно надо поставить docker и docker-compose. Статьи на сайте имеются.
    Установка sentry on-premise уже не та, что раньше, генерация и запоминание secret_key, Volume для контейнера - всё это уже в прошлом, сейчас установка сводится к банальному скачиванию исходников с git и запуску скрипта установщика.
    # git clone https://github.com/getsentry/onpremise.git
    # cd onpremise
    # ./install.sh
    
    Во время установки скрипт настоИт на создании "системной" учётки и вы не сможете ему отказать :-)
    Если все сложится хорошо и скрипт отработает без ошибок, то вам будет предложена команда:
    # docker-compose up -d
    
    выполнив которую, вы получите несколько черных ящиков, которые и представляют собой sentry.
    Директорию ~/onpremise не удаляйте, она вам ещё пригодится.


  • Делаем sentry лучше

    Итак, мы установили и запустили докерную sentry. Команда:
    # netstat -ntlp
    Active Internet connections (only servers)
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
    tcp6       0      0 :::9000                 :::*                    LISTEN      8725/docker-proxy
    
    показывает нам, что на порту 9000 висит docker-proxy. Это и есть web-морда от sentry.
    Многих устроит вход по http://SITE_URL:9000/, но только не нас. Потому что мы хотим 80-й порт, а более продвинутые - ещё и https.
    И сделать так, как мы хотим, нам поможет вездесущий nginx.

    Вообще, хорошей практикой, и не только для sentry, является использование брандмауера, которым прикрываются все порты и открываются только те, которые нужны, в нашем случае это 80 и 443.

    Запиливаем конфиг сайта в nginx (конфиг ниже - без https):
    server{
       listen 80;
       listen [::]:80;
    
       server_name SITE_URL;
    
       location / {
          proxy_pass http://127.0.0.1:9000;
       }
    }
    

    В итоге у нас получится sentry, слушающий на 80-м порту.


  • Меняем в sentry параметры почтового сервера

    Параметры сервера для отправки почты, в web-админке можно только посмотреть, меняются они через командную строку.
    Ищем файл ~onpremise/sentry/config.yml. Внутри есть такие строки, в них записываем нужные значения:
    mail.host: 'mail_site_url'
    mail.port: 25
    mail.username: 'sentry'
    mail.password: 'PASSWORD'
    mail.use-tls: false
    # The email address to send on behalf of
    mail.from: 'sentry@site_url'
    
    После чего необходимо все пересобрать и запустить:
    # cd ~/onpremise
    # ./install.sh
    # docker-compose up -d
    


  • Автозапуск через systemd

    Создаем файл /etc/systemd/system/sentry-onpremise.service:
    [Unit]
    Description=Sentry OnPremise
    Requires=docker.service
    After=docker.service
    
    [Service]
    WorkingDirectory=</root/onpremise>
    ExecStart=/usr/bin/docker-compose up
    ExecStop=/usr/bin/docker-compose down
    TimeoutStartSec=0
    Restart=on-failure
    
    [Install]
    WantedBy=multi-user.target
    
    /root/onpremise - меняем на полный путь до onpremise

    Добавляем в "автозагрузку":
    # systemctl enable sentry-onpremise
    
    Для остановки-запуска:
    # systemctl stop sentry-onpremise
    # systemctl start sentry-onpremise
    


  • Обновление
    cd onpremise
    
    - скопировать в надежное место ~/onpremise/sentry/config.yml (у нас там secret key и настройки почтовика)
    - остановить systemctl stop sentry-onpremis, если запускаете через systemd
    git pull
    
    - скопировать из надежного места обратно ~/onpremise/sentry/config.yml
    docker-compose build
    docker-compose run --rm web upgrade
    
    - запустить sentry: или docker-compose up -d или systemctl start sentry-onpremis, если запускаете через systemd