阿里云ubuntu搭建sentry服务
1. 安装docker
首先先确定你的Ubuntu是否符合安装Docker的前提下。如果没有问题,你可以通过下边的方式来安装Docker:
查看是否安装了wget
which wget
如果wget没有安装,先升级包管理器,然后再安装他。
sudo apt-get update $ sudo apt-get install wget
获取最新版本的Docker安装包
wget -qO- https://get.docker.com/ | sh
通过 docker --version
可以查看版本号并确认是否安装成功。
由于某种神秘原因国内无法直接从 docker 官方库直接获取镜像 这里我们使用 Docker 加速器 运行下面命令即可。
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://4031ebb7.m.daocloud.io
2. 安装 docker-compose
推荐使用python的pip管理工具来安装docker-compose
sudo pip install -U docker-compose
到这里安装就结束了;Compose
已经安装完成。你可以使用 docker-compose --version
来进行测试
3. 正是搭建sentry
做完了准备工作,就可以开始搭建 sentry 了。
从 GitHub 上面获取最新的 sentry
git clone https://github.com/getsentry/onpremise.git
获取到本地之后,就可以根据他的 README.md 开始着手搭建了,整个过程还是比较顺利的。
进入 clone 下来的 onpremise
目录依次执行
1. 创建对应的目录
mkdir -p data/{sentry,postgres}
2. 创建env配置文件
cp -n .env.example .env
3. 构建和标记Docker服务
docker-compose build
4. 生成密钥。将其添加.env
为SENTRY_SECRET_KEY
docker-compose run --rm web config generate-secret-key
添加key到.env中
[dy@iz2zeacp86oa3ile21ueg2z onpremise]$ vi .env # Run `docker-compose run web config generate-secret-key` # to get the SENTRY_SECRET_KEY value. SENTRY_SECRET_KEY= 'e@lcae#hd&g6p4)qzkmfi8iu#n(&j@vzx4*hkt0zm+n^o-4k37' # 此处要写自己生成的key
5. 构建数据库。使用交互式提示创建用户帐户
docker-compose run --rm web upgrade
异常情况一:如果在执行上图红框第5步时,没有提示创建超用户!!!!
解决方法:
1. 打开一个终端,进入sentry的web的shell里面,其实就是一个python端
docker-compose run --rm web shell
2. 输入以下命令进行初始化数据
from sentry.models import Project from sentry.receivers.core import create_default_projects create_default_projects([Project])
3. 退出shell,创建自己的用户
docker-compose run --rm web createuser
4. 重新启动sentry服务
$ docker-compose down # 停止
$ docker-compose up -d # 启动
异常情况二:安装完成后无法登录(请求超时)!!!!
解决方法:重新执行安装步骤中的3~4,重新生成key,并重新生成数据表,如下图:
异常情况三:sentry面板不显示新建的项目,或者不显示接收到异常信息,但是统计中有记录!!!!
统计中有数据:
解决方法:
-
执行这个命令进入 postgres docker
docker exec -it onpremise_postgres_1 bash
-
进入postgre database
psql -h 127.0.0.1 -d postgres -U postgres
View Code
-
执行这段代码:
1 create or replace function sentry_increment_project_counter( 2 3 project bigint, delta int) returns int as $$ 4 5 declare 6 7 new_val int; 8 9 begin 10 11 loop 12 13 update sentry_projectcounter set value = value + delta 14 15 where project_id = project 16 17 returning value into new_val; 18 19 if found then 20 21 return new_val; 22 23 end if; 24 25 begin 26 27 insert into sentry_projectcounter(project_id, value) 28 29 values (project, delta) 30 31 returning value into new_val; 32 33 return new_val; 34 35 exception when unique_violation then 36 37 end; 38 39 end loop; 40 41 end 42 43 $$ language plpgsql;
4.配置邮箱发送
1. 打开docker-compose.yml文件(在git clone 的目录onpremise下)
vim docker-compose.yml
2. 复制以下几行到docker-compose.yml文件
开始的时候我用的是网易的,但是邮件死活发不出去,后来换了qq邮箱就好了
SENTRY_EMAIL_HOST: 'smtp.sina.com' SENTRY_EMAIL_USER: 'dongyang***@sina.com' SENTRY_EMAIL_PASSWORD: '*****' # 填写自己的密码 SENTRY_SERVER_EMAIL: 'dongyang***@sina.com' SENTRY_EMAIL_PORT: 587 # 阿里云必须写这一项 SENTRY_EMAIL_USE_TLS: 'true' # 阿里云必须写这一项
3. 重新启动sentry服务
docker-compose down # 停止
docker-compose up -d # 启动
4. 如下图可以测试邮件是否可以发送
进入用户设置
ip:9000/account/settings/