Установка Sentry — различия между версиями

Материал из megapuper
Перейти к: навигация, поиск
Строка 135: Строка 135:
 
</spoiler>
 
</spoiler>
 
/etc/sentry/sentry.conf.py<spoiler>
 
/etc/sentry/sentry.conf.py<spoiler>
 +
# This file is just Python, with a touch of Django which means
 +
# you can inherit and tweak settings to your hearts content.
 +
from sentry.conf.server import *
 +
 +
import os.path
 +
 +
CONF_ROOT = os.path.dirname(__file__)
 +
 +
DATABASES = {
 +
    'default': {
 +
        'ENGINE': 'sentry.db.postgres',
 +
        'NAME': 'sentry',
 +
        'USER': 'sentry',
 +
        'PASSWORD': 'PASS_FOR_USER_sentry',
 +
        'HOST': 'localhost',
 +
        'PORT': '',
 +
        'AUTOCOMMIT': True,
 +
        'ATOMIC_REQUESTS': False,
 +
    }
 +
}
 +
 +
# You should not change this setting after your database has been created
 +
# unless you have altered all schemas first
 +
SENTRY_USE_BIG_INTS = True
 +
 +
# If you're expecting any kind of real traffic on Sentry, we highly recommend
 +
# configuring the CACHES and Redis settings
 +
 +
INSTALLED_APPS += ('sentry_telegram',)
 +
 +
###########
 +
# General #
 +
###########
 +
 +
# Instruct Sentry that this install intends to be run by a single organization
 +
# and thus various UI optimizations should be enabled.
 +
SENTRY_SINGLE_ORGANIZATION = 0
 +
DEBUG = False
 +
 +
#########
 +
# Cache #
 +
#########
 +
 +
# Sentry currently utilizes two separate mechanisms. While CACHES is not a
 +
# requirement, it will optimize several high throughput patterns.
 +
 +
# If you wish to use memcached, install the dependencies and adjust the config
 +
# as shown:
 +
#
 +
#  pip install python-memcached
 +
#
 +
# CACHES = {
 +
#    'default': {
 +
#        'BACKEND': 'django.core.cache.backends.memcached.MemcachedCache',
 +
#        'LOCATION': ['127.0.0.1:11211'],
 +
#    }
 +
# }
 +
 +
# A primary cache is required for things such as processing events
 +
SENTRY_CACHE = 'sentry.cache.redis.RedisCache'
 +
 +
#########
 +
# Queue #
 +
#########
 +
 +
# See https://docs.sentry.io/on-premise/server/queue/ for more
 +
# information on configuring your queue broker and workers. Sentry relies
 +
# on a Python framework called Celery to manage queues.
 +
 +
BROKER_URL = 'redis://localhost:6379'
 +
 +
###############
 +
# Rate Limits #
 +
###############
 +
 +
# Rate limits apply to notification handlers and are enforced per-project
 +
# automatically.
 +
 +
SENTRY_RATELIMITER = 'sentry.ratelimits.redis.RedisRateLimiter'
 +
 +
##################
 +
# Update Buffers #
 +
##################
 +
 +
# Buffers (combined with queueing) act as an intermediate layer between the
 +
# database and the storage API. They will greatly improve efficiency on large
 +
# numbers of the same events being sent to the API in a short amount of time.
 +
# (read: if you send any kind of real data to Sentry, you should enable buffers)
 +
 +
SENTRY_BUFFER = 'sentry.buffer.redis.RedisBuffer'
  
 +
##########
 +
# Quotas #
 +
##########
 +
 +
# Quotas allow you to rate limit individual projects or the Sentry install as
 +
# a whole.
 +
 +
SENTRY_QUOTAS = 'sentry.quotas.redis.RedisQuota'
 +
 +
########
 +
# TSDB #
 +
########
 +
 +
# The TSDB is used for building charts as well as making things like per-rate
 +
# alerts possible.
 +
 +
SENTRY_TSDB = 'sentry.tsdb.redis.RedisTSDB'
 +
 +
###########
 +
# Digests #
 +
###########
 +
 +
# The digest backend powers notification summaries.
 +
 +
SENTRY_DIGESTS = 'sentry.digests.backends.redis.RedisBackend'
 +
 +
##############
 +
# Web Server #
 +
##############
 +
 +
# If you're using a reverse SSL proxy, you should enable the X-Forwarded-Proto
 +
# header and uncomment the following settings
 +
# SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
 +
# SESSION_COOKIE_SECURE = True
 +
# CSRF_COOKIE_SECURE = True
 +
 +
# If you're not hosting at the root of your web server,
 +
# you need to uncomment and set it to the path where Sentry is hosted.
 +
# FORCE_SCRIPT_NAME = '/sentry'
 +
 +
SENTRY_WEB_HOST = '0.0.0.0'
 +
SENTRY_WEB_PORT = 9000
 +
SENTRY_WEB_OPTIONS = {
 +
    # 'workers': 3,  # the number of web workers
 +
    # 'protocol': 'uwsgi',  # Enable uwsgi protocol instead of http
 +
}
 
</spoiler>
 
</spoiler>
  

Версия 13:33, 19 января 2019

Ставим Sentry 9.0.0 на Debian Stretch


1. Установим нужные пакеты

# apt install python python-setuptools python-pip python-dev libxslt1-dev libjpeg-dev libxml2-dev libpq-dev libffi-dev gcc libxslt-dev libyaml-dev


2. Nginx

# apt install nginx

Правим конфиг /etc/nginx/sites-available/sentry.conf

server {
   listen 80;
   server_name sentry.megapuper.ru;
   location / {
       proxy_pass         http://localhost:9000;
       proxy_redirect     off;
       proxy_set_header   Host              $host;
       proxy_set_header   X-Real-IP         $remote_addr;
       proxy_set_header   X-Forwarded-For   $proxy_add_x_forwarded_for;
       proxy_set_header   X-Forwarded-Proto $scheme;
    }
}


3. Postgresql

# apt install postgresql

Создаём БД

# cd /tmp/
/tmp # su postgres 
postgres@sentry01:/tmp$ psql
CREATE DATABASE sentry encoding utf8;
CREATE USER sentry WITH password 'PASS_FOR_USER_sentry';
GRANT ALL privileges ON DATABASE sentry TO sentry;
\q


4. Redis

# apt install redis-server


5. Устанавливаем Sentry

# pip install -U virtualenv
# virtualenv /srv/www/sentry/
# source /srv/www/sentry/bin/activate
(sentry)# pip install -U sentry
(sentry)# sentry init /etc/sentry

Правим конфиги
/etc/sentry/config.ymlSpoiler

/etc/sentry/sentry.conf.pySpoiler


==

если во время sentry upgrade будет падать с ошибкой django.db.utils.ProgrammingError: ProgrammingError('permission denied to create extension "citext"\nHINT: Must be superuser to create this extension.\n',) перед тем как запускать sentry update, временно дадим sentry права суперюзера, потом заберём

==

su postgresql psql alter role sentry superuser;

SENTRY_CONF=/etc/sentry sentry upgrade

alter role sentry nosuperuser;


Заводим пользователя

# useradd -u 20005 -s /bin/bash -m -d /home/sentry sentry
# chown -R sentry:sentry /srv/www/sentry


6. Supervisor

# apt install supervisor

/etc/supervisor/conf.d/sentry.conf [program:sentry-web] environment=SENTRY_CONF="/etc/sentry/" directory=/srv/www/sentry/ command=/srv/www/sentry/bin/sentry run web autostart=true autorestart=true redirect_stderr=true user=sentry

[program:sentry-worker] environment=SENTRY_CONF="/etc/sentry/" directory=/srv/www/sentry/ command=/srv/www/sentry/bin/sentry run worker autostart=true autorestart=true redirect_stderr=true user=sentry

[program:sentry-cron] environment=SENTRY_CONF="/etc/sentry/" directory=/srv/www/sentry/ command=/srv/www/sentry/bin/sentry run cron autostart=true autorestart=true redirect_stderr=true killasgroup=true

==================================

https://docs.sentry.io/server/installation/python/ https://docs.sentry.io/server/nginx/ https://docs.sentry.io/server/warnings/

==================================

подключение плагина redmine (https://github.com/getsentry/sentry-redmine) pip install sentry-redmine в настройках проекта, в пункте integrations появляется redmine, конфигурим его

если плагин не подтягивается из-за конфликта версий Failed to load plugin 'redmine': ---cut--- ContextualVersionConflict: (redis 2.10.5 (/srv/www/sentry/lib/python2.7/site-packages), Requirement.parse('redis==2.10.6'), set(['redis-py-cluster'])) грохаем redis-py-cluster и ставим версию 1.3.4 pip uninstall redis-py-cluster pip install redis-py-cluster==1.3.4 pip install sentry-redmine рестартим supervisor-web

https://github.com/getsentry/sentry-redmine/issues/16

==================================