参考文档
http://sinhub.cn/2019/07/getting-started-guide-of-sentry/ (仅供参考,但是内容不完全对应我的情况,估计是版本问题)
sentry是基于Django开发的应用。
自托管sentry
搭建方式:
有下面两种方式,这里我选择了Docker安装:
官方文档:
https://develop.sentry.dev/self-hosted/
我的环境:
1 | root@wen80:/home/cyagen# lsb_release -a |
开始搭建:
1 | mkdir sentry && cd sentry |
从上面可以看到,sentry是通过nginx容器代理访问的,对外端口是:9000
。浏览器输入服务器ip+端口号
即可看到如下页面:
若是首次登陆,之后会需要你配置具体的域名信息和邮箱信息,邮箱信息这一块下一节会具体详述,现在可以先用默认的即可。
配置完之后进可以进入Sentry了。
我这里首次登陆配置页面因为一些情况,没有看到是上面就回车了。所以我决定重新安装,步骤如下:
2021-03-14更新,下面不需要删除本地镜像,sentry的配置是在onpremise文件夹下的,需要重置sentry只需要删除所有容器,然后删除onpremise文件夹即可。
1
2
3
4
5
6
7
8
9
10
11
12
13 # 停止容器
docker-compose stop
# 删除容器(删除前需要确保容器没有在运行)
docker-compose rm
# 删除所有本地镜像(注意:这里删除的是所有镜像,包括compose外面的,暂时不知道该如何只删除compose使用到的镜像)
docker rmi `docker image -q`
# 为了以防万一,我仓库也重新克隆
cd ../ && rm -rf onpremise/
# 接上面安装的步骤(这里我不确定是镜像还是onpremise保存了配置,因为光删除容器是无法初始化sentry的)
外部SMTP服务器邮件配置:
自托管的Sentry附带有一个由exim4驱动的内置传出SMTP服务器。默认配置设置为使用此服务器。所有你需要做的是为设定一个有效的地址mail.from
在config.yml
。
如果要使用外部SMTP服务器,则可以mail.*
在config.yml
文件中设置相关设置,而忽略内置的SMTP服务器。
我这里使用内置的会报错,所以我使用外部SMTP服务器,步骤如下:
注意:下面用的25端口在网上购买的服务器上最好不要使用,具体请看
邮箱无法发送问题排查
一节
修改
/sentry/config.yml
文件1
2
3
4
5
6
7
8
9
10
11
12###############
# Mail Server #
###############
mail.backend: 'smtp' # Use dummy if you want to disable email entirely
mail.host: 'smtp.mxhichina.com'
mail.port: 25
mail.username: 'ionluo@***.com'
mail.password: '******'
mail.use-tls: true
# The email address to send on behalf of
mail.from: 'ionluo@***.com'配置修改后 update 一下 Sentry 并重启
1
2
3
4docker-compose down
docker-compose build
docker-compose run --rm web upgrade
docker-compose up -d测试是否成功
重启后打开如下链接:http://127.0.0.1:9000/manage/status/mail/,即`Admin`下的Mail即可看到修改后的配置。点击“Test Settings”下的按钮即可测试,如果没有失败提示,那么之后你的邮箱就会收到测试邮件了。
页面无法打开问题排查
首先检查是否存在端口占用
然后正式服务器上需要服务商放行指定的端口(如默认的9000端口)
邮箱无法发送问题排查
首先确定Sentry版本,因为我看到网上博客配置都是五花八门的,估计是不同版本的原因。
首先打开github查看tags,https://github.com/getsentry/onpremise/tags。
我这里是
21.3.0
,所以版本号就是21.3.0
(不绝对)如果需要完全确定,可以打开
http://[ip]:[端口]/manage/status/environment/
,里面就可以看到当前安装的版本了。版本号对上了,那么修改
vim onpremise/sentry/config.yml
1
2
3
4
5
6
7
8
9
10
11###############
# Mail Server #
###############
mail.backend: 'smtp' # Use dummy if you want to disable email entirely
mail.host: 'smtp.mxhichina.com'
mail.port: 25
mail.username: 'ionluo@xxx.com'
mail.password: 'xxxxx'
mail.use-tls: true
# The email address to send on behalf of
mail.from: 'noreply@xxxx.com'修改好后需要重启,不要忘记先关闭之前的容器
1
2
3
4docker-compose down
docker-compose build
docker-compose run --rm web upgrade
docker-compose up -d这里解决了我页面一直无法显示我的配置的问题,就是要先关闭容器。
-
1
2
3
4# 测试域名访问是否丢包
ping smtp.mxhichina.com
# 检查25端口是否可以连接上,正常的话会出现提示Escape character is '^]'.
telnet smtp.mxhichina.com 25如果这两个都能够正常访问,那么跳过,这里是正常的。
然而,我这里是能够ping通,但是
telnet
无法正常连上邮件服务器的25
端口。但是阿里云的465
端口是能够正常访问的。后来通过阿里云工单得知,2018年9月份之后购买的服务器的25端口是受限的。详情查看所以,我们可以通过申请
25
端口解封来解决这个问题。或者配置sentry支持ssl
。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30# 修改配置
vim onpremise/sentry/config.yml
###############
# Mail Server #
###############
mail.backend: 'django_smtp_ssl.SSLEmailBackend'
# mail.backend: 'smtp' # Use dummy if you want to disable email entirely
mail.host: 'smtp.mxhichina.com'
mail.port: 465
mail.username: 'ionluo@xxx.com'
mail.password: 'xxxx'
mail.use-tls: true
# The email address to send on behalf of
mail.from: 'noreply@xxxx.com'
# sentry模块配置
vim onpremise/sentry/requirements.txt
# Add plugins here
django-smtp-ssl==1.0
# 修改socket超时时间
vim onpremise/sentry/sentry.conf.py
# 头部插入如下两行代码(默认事件是5s,容易导致timeout)
import socket
socket.setdefaulttimeout(20)
cd onpremise
# 接下来按照步骤2重启即可,docker启动会自动安装requirements.txt里面的包 报错:
500, (440, b"mail from account doesn't conform with authentication (Auth Account:ionluo@xxx.com|Mail Account:noreply@xxxx.com)", 'noreply@xxxx.com')
原因是邮箱验证你指定的mail.from不属于你,防止其它账号打着自己的邮箱账号发送邮件?
修改配置
onpremise/sentry/config.yml
里面的mail.from
为上面的mail.username
相同的账号即可。
sentry设置https支持
通常正式站点都是需要支持https的,但是为了一个上报接口,专门创建一个域名和申购一个ssl证书比较麻烦。我这里使用一个有https证书的站点,使用nginx转发请求的方式绕过https限制。
nginx设置转发
1
2
3
4
5
6# nginx.conf
# 这里是让所有以/sentry开头的请求转发到我们的http的站点。
location ^~/sentry/ {
rewrite ^/sentry/(.*)$ /$1 break;
proxy_pass http://【ip】:9000;
}修改系统提供的dns链接, 规律如下:
1
2
3
4
5# 系统提供的
http://xxxxxxxxxxxxxxxx@www.xxx.com:9000/2
# 修改后的
https://xxxxxxxxxxxxxxxx@www.xxx.com/sentry/2
不要直接修改根URL去适配页面,我们只需要修改上报接口去转发就好了,如果修改根URL(http://ip:9000/manage/settings/),在用户确认邮件之后的页面就会出现页面无法加载的情况。
如下图:
相关文章推荐
-
最后一篇微信上的文章就是犯了使用25端口的错误,在通常的正式环境下,推荐还是使用ssl的465端口,因为一般服务运营商为了防止使用者搭建群发邮件的服务,都会禁掉25端口的。
本文链接: http://www.ionluo.cn/blog/posts/8491dc1r.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!