Установка Sentry, Debian 7

· На чтение уйдёт 2 минуты · (377 слов)

Переехавши на новый сервер, перетаскиваю туда всякие разные полезные сервисы. Что-то будет скопировано целиком, что-то ставлю заново. Вот sentry, систему для сбора всяческих ошибок (как со стороны сервера, так и клиента), решил переставить новую. Тем более, что со старой версией мой grails-raven не работал.

Дано: практически голый debian 7, есть правда postgresql, nginx, python 2.7.

Для начала мы создадим пользователя sentry и поставим несколько важных и полезных пакетов.

apt-get install redis-server memcached postgresql-server-dev-9.1 python-setuptools python-dev screen
useradd -d /home/sentry.domain.ru sentry
easy_install -UZ virtualenv

Дальше было настроено несколько "редисок", штука же полезная. Для этого был скопирован /etc/init.d/redis-server в /etc/init.d/redis-server2 и /etc/init.d/redis-server3, а также /etc/redis/redis.conf в /etc/redis/redis2.conf и /etc/redis/redis3.conf. Везде мы правим pid, имя файла с дампом базы, и порт. Ну и логи, куда же без них. Например, релевантная часть redis3.conf выглядит так:

dir /var/lib/redis
# The filename where to dump the DB
dbfilename dump3.rdb
port 6381
pidfile /var/run/redis/redis-server3.pid
logfile /var/log/redis/redis-server3.log

Как пользователь postgres, создадим нового пользователя БД sentry, с правом создания баз данных, но без прав суперпользователя и без прав создания новых пользователей.

su - postgres
createuser sentry
logout

После этого переключаемся на нового пользователя, sentry :). Я делал это уже по ssh, а не через su.

createdb sentry
virtualenv sentry
source sentry/bin/activate
cd sentry/
easy_install -UZ sentry
bin/sentry init
vim ~/.sentry/sentry.conf.py
easy_install -UZ psycopg2
easy_install -UZ redis
easy_install -UZ nydus
easy_install -UZ python-memcached
screen -d -m ~/sentry/bin/sentry start --verbosity=3 -w 5

Процитирую релевантную часть конфига:

DATABASES = {
    'default': {
        # package: psycopg2 (Postgres) or mysql-python
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'sentry', # os.path.join(CONF_ROOT, 'sentry.db'),
        'USER': 'sentry',
        'PASSWORD': '',
        'HOST': '',
        'PORT': '',
    }
}
CACHES = {
    'default': {
        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
        'LOCATION': ['127.0.0.1:11211'],
    }
}
BROKER_URL = 'redis://localhost:6381'
SENTRY_BUFFER = 'sentry.buffer.redis.RedisBuffer'
SENTRY_BUFFER_OPTIONS = {
     'hosts': {
         0: {
             'host': '127.0.0.1',
             'port': 6381,
         }
     }
}
SENTRY_KEY = '================ a very big secret =='
SENTRY_URL_PREFIX='http://s.domain.ru'
SENTRY_WEB_HOST = '0.0.0.0'
SENTRY_WEB_PORT = 9000
SENTRY_WEB_OPTIONS = {
    'workers': 5,  # the number of gunicorn workers
    'secure_scheme_headers': {'X-FORWARDED-PROTO': 'https'},
}

Всё на удивление работает, правда возникают проблемы при использовании SENTRY_USE_QUEUE = True, пришлось закомментировать и теперь всё работает. Проверить можно, подключившись к 9000 порту сервера. Но понятное дело, этого нам недостаточно, и теперь мы идём настраивать nginx. Проще пареной репы:

server {
        listen 80;
        server_name s.domain.ru;
        error_log /var/log/nginx/s.domain.ru.error_log;
        location / {
                proxy_pass http://localhost:9000;
        }
}

И оно работает!

Полезное