Sentry 是一个开源的实时错误报告工具,支持 web 前后端、移动应用以及游戏,支持 Python、OC、Java、Go、Node、Django、RoR 等主流编程语言和框架 ,还提供了 GitHub、Slack、Trello 等常见开发工具的集成。
官方文档:https://docs.sentry.io/server/installation/python/
运行Sentry所需的一些基本先决条件:
基于 UNIX 的操作系统
PostgreSQL:版本 9.5 以上
Redis
Python 2.7
Pip 8.1+
python-setuptools, python-dev, libxslt1-dev, gcc, libffi-dev, libjpeg-dev, libxml2-dev, libxslt-dev, libyaml-dev, libpq-dev
安装Redis:通过源码安装redis5.0.5
安装PostgreSQL:PostgreSQL的安装与使用
由于系统自带Python2.7,所以就不需要手动安装Python了。
[root@10-9-50-240 /]# python --version
Python 2.7.5
但是pip(Python包管理工具),是需要手动进行安装的。
[root@10-9-50-240 /]# pip --version
-bash: pip: command not found
安装pip
[root@10-9-50-240 /]# curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
[root@10-9-50-240 /]# python get-pip.py --default-timeout=1000
[root@10-9-50-240 /]# pip --version
pip 19.2.3 from /usr/lib/python2.7/site-packages/pip (python 2.7)
yum -y install python-setuptools \
python-dev \
libxslt1-dev \
gcc \
gcc-c++ \
libffi-dev \
libjpeg-dev \
libxml2-dev \
libxslt-dev \
libyaml-dev \
libpq-dev
每个应用可能需要拥有自己独立的Python环境,virtualenv就是用来为一个应用创建一套隔离的Python运行环境。
# 安装virtualenv
pip install -U virtualenv
# 使用virtualenv命令创建Python虚拟环境
virtualenv /www/sentry/
# 使用虚拟环境的时候,必须"激活"它
source /www/sentry/bin/activate
# 安装Sentry
pip install -U sentry
# 如何关闭虚拟环境
deactivate
可能报错:
ERROR: Failed building wheel for uwsgi
解决:
yum -y install python-devel
初始化配置,指定配置路径为/etc/sentry。
sentry init /etc/sentry
/etc/sentry目录下创建了sentry.conf.py和config.yml两个配置文件。
配置数据库:
# vim /etc/sentry/sentry.conf.py
DATABASES = {
'default': {
'ENGINE': 'sentry.db.postgres',
'NAME': 'sentry',
'USER': 'sentry',
'PASSWORD': '123456@sentry',
'HOST': '127.0.0.1',
'PORT': '5432',
'AUTOCOMMIT': True,
'ATOMIC_REQUESTS': False,
}
}
配置邮箱:
# vim /etc/sentry/config.yml
mail.backend: 'smtp' # Use dummy if you want to disable email entirely
mail.host: 'smtp.163.com'
mail.port: 25
mail.username: 'xxx'
mail.password: 'xxx'
mail.use-tls: false
# The email address to send on behalf of
mail.from: 'xxx'
配置Redis:
# vim /etc/sentry/config.yml
redis.clusters:
default:
hosts:
0:
host: 127.0.0.1
port: 6379
需要在PostgreSQL中创建sentry用户、赋予sentry用户sentry数据库的所有权限、将sentry用户角色修改为superuser。
postgres=# CREATE USER sentry WITH PASSWORD '123456@sentry';
postgres=# GRANT ALL PRIVILEGES ON DATABASE sentry to sentry;
postgres=# alter role sentry superuser;
使用upgrade命令创建初始架构:
SENTRY_CONF=/etc/sentry sentry upgrade
报错:
django.db.utils.OperationalError: FATAL: Ident authentication failed for user "postgres"
这是由于PostgreSQL的认证导致,解决:
# vim /var/lib/pgsql/9.6/data/pg_hba.conf
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 ident
# IPv6 local connections:
host all all ::1/128 ident
ident是Linux下PostgreSQL默认的local认证方式,改为md5认证方式:
# "local" is for Unix domain socket connections only
local all all peer
# IPv4 local connections:
host all all 127.0.0.1/32 md5
# IPv6 local connections:
host all all ::1/128 md5
重启PostgreSQL:
[root@10-9-156-155 sentry]# systemctl restart postgresql-9.6
重新执行上次的命令:
# 需要先激活虚拟环境
[root@10-9-156-155 sentry]# source /www/sentry/bin/activate
# 重新执行
(sentry) [root@10-9-156-155 sentry]# SENTRY_CONF=/etc/sentry sentry upgrade
报错:
django.db.utils.OperationalError: OperationalError('could not open extension control file "/usr/pgsql-9.6/share/extension/citext.control": No such file or directory\n',)
SQL: CREATE EXTENSION IF NOT EXISTS citext
解决,参考:getsentry/sentry#6229
# 这里用的是下面的解决方式
yum -y install postgresql96-contrib
创建第一个用户,该用户将充当超级用户:
(sentry) [root@10-9-156-155 sentry]# SENTRY_CONF=/etc/sentry sentry createuser
报错:
IndexError: list index out of range
解决,参考:getsentry/sentry#7015
# vim /etc/sentry/sentry.conf.py
# True改为False
SENTRY_SINGLE_ORGANIZATION = False
重新创建用户:
(sentry) [root@10-9-156-155 sentry]# SENTRY_CONF=/etc/sentry sentry createuser
04:40:05 [WARNING] sentry.utils.geo: settings.GEOIP_PATH_MMDB not configured.
Email: [email protected]
Password:
Repeat for confirmation:
Should this user be a superuser? [y/N]: y
User created: [email protected]
启动WEB服务:
SENTRY_CONF=/etc/sentry sentry run web
启动worker:
SENTRY_CONF=/etc/sentry sentry run worker
安装过程多去参考官方文档:https://docs.sentry.io/server/installation/python/
搭建Sentry尽量使用内存大于1g的机器
virtualenv要了解
PostgreSQL要了解
遇到问题多谷歌,看GitHub的issue