文章目录
- 一、选择机器配置
- 二、安装docker-ce和docker-compose
- 三、安装sentry服务
- 3.1 安装sentry
- 3.2 外部代理Nginx配置
- 四、报错与踩坑解决记录
- 4.1 yum update 报错Could not retrieve mirrorlist http://mirrorlist.centos.org
- 4.2 yum install docker-ce出现如下报错 Requires: slirp4netns >= 0.4
- 4.3 install.sh执行过程clickhouse服务启动不起来Waiting for clickhouse server, 18 remaining attempts...
- 4.4 install.sh执行过程数据库字段冲突报错
- 4.5 geoipupdate服务报错
- 4.6 关于报错 Error in bootstrap-snuba.sh:3
- 4.7 关于sentry启动后无法登录报错CSRF验证失败的问题。
这次搭建sentry24.8
这个版本,这是一个比较新的版本,安装过程中多去github
以及stack overflow
上面去寻找问题,由于百度上面可以搜索到的内容很有限,所以本次将一些踩坑记录都记录一下。
一、选择机器配置
先列一下我的操作配置:
操作系统:CentOS Linux release 7.6
docker版本:Docker version 26.1.4
docker-compose版本:Docker Compose version v2.5.0
服务器情况:8核16G,磁盘至少50G,建议实际使用配置100G以上。
注意:
docker尽量用新版的,docker低于21的版本不建议考虑,因为新版的sentry要求比较新的docker。建议大家都用到我这个配置之上,不然会出现一些莫名奇妙的问题。服务器配置不低于8核16G,因为启动的时候有50多个docker服务,有条件直接上32G的。
由于业务需要,我搭建的是比较新的版本,sentry 24.8.0。
dockercedockercompose_16">二、安装docker-ce和docker-compose
如果有报错请去下面报错专区寻找相关问题
dockerce_18">2.1 安装docker-ce
配置源
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
or
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
然后开始安装docker-ce
yum install docker-ce docker-ce-cli containerd.io
安装完成后启动并检查版本
service docker start
docker --version
dockercompose_37">2.2 安装docker-compose
依次执行下面的命令即可,这个步骤一般没啥问题,比较顺利
sudo curl -L "https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/bin/docker-compose
sudo chmod +x /usr/bin/docker-compose
docker-compose --version
sentry_44">三、安装sentry服务
sentry_45">3.1 安装sentry
这次我们使用的离线项目本地安装的方式安装sentry
# 创建源码目录
mkdir /root/sentry
cd /root/sentry
# 获取基于dokcer-compose的构建项目并解压进入
wget https://github.com/getsentry/self-hosted/archive/refs/tags/24.8.0.zip
unzip 24.8.0.zip
cd self-hosted-24.8.0/
# 开始安装
./install.sh
原则上讲这里就结束了,启动起来就够了,但是会遇到很多问题,如果有问题请见下面的报错部分查找,大概问题有如下一些。
- clickhouse服务启动不起来
- 数据库字段冲突报错
- geoipupdate服务启动不起来
- Error in bootstrap-snuba.sh:3
3.2 外部代理Nginx配置
因为sentry在机器上面启动的是9000端口,为了更好的对外通过80提供服务,我们在宿主机器上面搭建一个Nginx进行一层代理。
安装Nginx。
yum install nginx
主要配置如下
server {
listen 80;
listen 443 ssl;
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
index index.php index.html index.htm;
server_name sentry.{your domian}.com;
# 443需要证书,这里自行寻找配置即可
ssl_certificate /etc/nginx/ssl/ssl.crt;
ssl_certificate_key /etc/nginx/ssl/ssl.key;
location / {
proxy_pass http://127.0.0.1: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;
proxy_set_header X-Forwarded-Proto $scheme;
}
}
然后启动Nginx后就可以通过域名进行访问了。
nginx
如果访问这里可能存在问题CSRF验证失败,解决方式见报错处理部分。
四、报错与踩坑解决记录
4.1 yum update 报错Could not retrieve mirrorlist http://mirrorlist.centos.org
Could not retrieve mirrorlist http://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stock error was
14: curl#6 - "Could not resolve host: mirrorlist.centos.org; Unknown error"
http://mirror.centos.org/centos/7/os/x86_64/repodata/repomd.xml: [Errno 14] curl#6 - "Could not resolve host: mirror.centos.org; Unknown error"
Trying other mirror.
解决办法是:
从 2024 年 7 月 1 日起,在 CentOS 7 上,请切换到 Vault 存档存储库:
vi /etc/yum.repos.d/CentOS-Base.repo
复制/粘贴以下内容并注意您的操作系统版本。如果需要,请更改。此配置中的版本为 7.9.2009:
[base]
name=CentOS-$releasever - Base
baseurl=http://vault.centos.org/7.9.2009/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[updates]
name=CentOS-$releasever - Updates
baseurl=http://vault.centos.org/7.9.2009/updates/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[extras]
name=CentOS-$releasever - Extras
baseurl=http://vault.centos.org/7.9.2009/extras/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
[centosplus]
name=CentOS-$releasever - Plus
baseurl=http://vault.centos.org/7.9.2009/centosplus/$basearch/
gpgcheck=1
enabled=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7
如果需要,请执行以下操作:
yum clean all
dockerce_Requires_slirp4netns__04_154">4.2 yum install docker-ce出现如下报错 Requires: slirp4netns >= 0.4
解决办法:
vi /etc/yum.repos.d/docker-ce.repo
在结尾添加:
[centos-extras]
name=Centos extras - $basearch
baseurl=http://vault.centos.org/centos/7/extras/x86_64
enabled=1
gpgcheck=0
然后执行:
yum remove slirp4netns fuse-overlayfs container-selinux
yum -y install slirp4netns fuse-overlayfs container-selinux
4.3 install.sh执行过程clickhouse服务启动不起来Waiting for clickhouse server, 18 remaining attempts…
这个问题我的主要报错是先用dokcer logs查看clickhouse容器的报错,显示
DB::Exception::Exception(DB::Exception::MessageMasked&&, int, bool)
Probably you are trying to upgrade from version older than 20.7. If so, you should upgrade through intermediate version
这个提示比较明显,就是要通过中间版本来依次升级。解决方式是查看cat install/upgrade-clickhouse.sh这个文件。
然后更改docker-compose文件,将原来代码这个位置更换成21.8.13.1.altinitystable
,不得不说官方这里留了一个坑。
然后重新执行install.sh,我的这个问题得以解决。
4.4 install.sh执行过程数据库字段冲突报错
constraint "sentry_externalactor_actor_id_a8478274_fk_sentry_actor_id" for relation "sentry_externalactor" already exists
这个问题也是一个坑,后面的数据库迁移文件执行的时候需要创建这个约束,但是前面又有,我处理这个做法是,在install/set-up-and-migrate-database.sh文件中先删除这个字段。还有一个user_case也是这个问题。添加如下两行到这个位置。
cursor.execute('ALTER TABLE IF EXISTS sentry_externalactor DROP CONSTRAINT IF EXISTS sentry_externalactor_actor_id_a8478274_fk_sentry_actor_id;')
cursor.execute('ALTER TABLE IF EXISTS sentry_projectkey DROP COLUMN IF EXISTS use_case;')
然后重新执行install.sh,我的这个问题得以解决。
4.5 geoipupdate服务报错
这个包主要用于更新这个文件:geoip/GeoLite2-City.mmdb,就是通过IP定位城市的功能。
通过docker日志发现这里主要是没有 /sentry/GeoIP.conf这个文件,这又是官方包的一个坑。
error loading configuration file /sentry/GeoIP.conf: error opening file: open /sentry/GeoIP.conf: no such file or directory
我采取的方式是直接创建,执行如下三行命令。
vi geoip/GeoIP.conf
rm -rf sentry/GeoIP.conf
cp geoip/GeoIP.conf sentry/
GeoIP.conf 里面的内容主要是三行。
AccountID 12312123
LicenseKey asdfasdfaf
EditionIDs GeoLite2-City
AccountID和LicenseKey可以去 这里注册后获取。并登录后在这里生成。
然后重新执行docker-compose up geoipupdate,我的这个问题得以解决。
geoipupdate启动一次后会自行退出,容器处于exit状态,属于正常情况。
4.6 关于报错 Error in bootstrap-snuba.sh:3
这个问题通过升级docker版本后得以解决,之前我的版本是20,现在是26。
sentryCSRF_225">4.7 关于sentry启动后无法登录报错CSRF验证失败的问题。
这个问题的解决方式是找到sentry/config.yml,将如下配置放开,并改成你的域名。
system.url-prefix: http://xx.xx.x.xx
并且Nginx的反向代理按照我上面给出的配置配好,然后执行docker-compose restart。