Sentry

来自百合仙子's Wiki
跳转到导航 跳转到搜索

安装

安装 postgresql-devel 等需要的库。

安装 Python 2 的 pip,然后建立一个 virtualenv:

pip install virtualenv
virtualenv /usr/local/sentry
. /usr/local/sentry/bin/activate

在激活了 virtualenv 的 shell 中安装:

pip install sentry

配置

基本配置

初始化模板配置文件:

sentry init /etc/sentry

准备目录与用户:

mkdir -p /var/lib/sentry /data/logs/sentry
useradd -r -s /bin/sh -U -d /var/lib/sentry sentry
chown sentry: /var/lib/sentry /data/logs/sentry

编辑生成的配置文件,设置好邮件(比如 Postfix)、RedisPostgreSQL

确保 RedisPostgreSQL 已经在运行。

初始化数据库:

sudo -u postgres createuser -d sentry
sudo -u sentry createdb
sudo -u sentry SENTRY_CONF=/etc/sentry /usr/local/sentry/bin/sentry upgrade

nginx 反代:

server {
        server_name sentry.example.com;
        access_log /data/logs/nginx/access_$host.log;

        location / {
                proxy_pass http://localhost:9000;
                proxy_set_header Host $host;
                proxy_set_header X-Real-IP $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
}

速率限制

(旧版本;可能已经失效。)

SENTRY_QUOTAS = 'sentry.quotas.redis.RedisQuota'
SENTRY_QUOTA_OPTIONS = {
    'hosts': {
        0: {
            'host': 'localhost',
            'port': 6379,
            'db': 8,
        }
    }
}
SENTRY_SYSTEM_MAX_EVENTS_PER_MINUTE = 500

运行

手动

sudo -u sentry SENTRY_CONF=/etc/sentry /usr/local/sentry/bin/sentry run web    >> /data/logs/sentry/sentry.log 2>&1 &
sudo -u sentry SENTRY_CONF=/etc/sentry /usr/local/sentry/bin/sentry run worker >> /data/logs/sentry/sentry-worker.log 2>&1 &
sudo -u sentry SENTRY_CONF=/etc/sentry /usr/local/sentry/bin/sentry run cron   >> /data/logs/sentry/sentry-cron.log 2>&1 &

或者,使用当前用户:

SENTRY_CONF=$HOME/etc/sentry $HOME/sentry/bin/sentry run web    >> $HOME/sentry/var/logs/sentry.log 2>&1 &
SENTRY_CONF=$HOME/etc/sentry $HOME/sentry/bin/sentry run worker >> $HOME/sentry/var/logs/sentry-worker.log 2>&1 &
SENTRY_CONF=$HOME/etc/sentry $HOME/sentry/bin/sentry run cron   >> $HOME/sentry/var/logs/sentry-cron.log 2>&1 &

使用 supervisord

[group:sentry]
programs = sentry-web,sentry-worker,sentry-cron

[program:sentry-web]
environment = SENTRY_CONF=/home/work/sentry/etc/sentry
command = /home/work/sentry/bin/sentry run web
user = work
group = work

redirect_stderr = true
stdout_logfile = /home/work/.local/var/log/sentry-web.log

[program:sentry-worker]
environment = SENTRY_CONF=/home/work/sentry/etc/sentry
command = /home/work/sentry/bin/sentry run worker
user = work
group = work

redirect_stderr = true
stdout_logfile = /home/work/.local/var/log/sentry-worker.log

[program:sentry-cron]
environment = SENTRY_CONF=/home/work/sentry/etc/sentry
command = /home/work/sentry/bin/sentry run cron
user = work
group = work

redirect_stderr = true
stdout_logfile = /home/work/.local/var/log/sentry-cron.log

注意事项

  • 要求 Redis 版本 >= 2.8.9
  • 要求 PostgreSQL 版本 >= 9 并且安装 contrib 包
  • 邮件设置中,mail.use-tls 实际上使用的是 STARTTLS 而非直接进行 TLS 连接,因此需要选择非加密端口然后协商(版本 8.22.0,使用 Django 版本 1.6.11)

参见

外部链接

参考资料