|
Sentry为一套开源的应用监控和错误追踪的解决方案。这套解决方案由对应各种语言的SDK和一套庞大的数据后台服务组成。应用需要通过与之绑定的token接入SentrySDK完成数据上报的配置。通过SentrySDK的配置,还可以上报错误关联的版本信息、发布环境。同时SentrySDK会自动捕捉异常发生前的相关操作,便于后续异常追踪。异常数据上报到数据服务之后,会通过过滤、关键信息提取、归纳展示在数据后台的Web界面中。转转使用Sentry监控前端错误已经有好几年了。我们在SDK端封装的统一的@zz-common/sentry库。从而实现了vue、react、小程序、node、ssr的统一接入和错误分级管理。可以参考文章:转转商业前端错误监控系统(Sentry)策略升级。之前我们使用的Sentry是源码安装的老版本。后来客户端需要接入Sentry并上传mapping文件。但是老版本的Sentry总是上传失败。所以我们就准备升级一下Sentry。本文就是用来记录Sentry升级部署和遇到的问题。部署Sentry服务快速的部署Sentry服务,官方提供了基于Docker的Compose。Docker用来构建和容器化应用的开源容器化技术。Compose是用于配置和运行多Docker应用的工具,可以通过一个配置文件配置应用的所有服务,并一键创建和运行这些服务。部署配置要求:Docker19.03.6+Compose1.24.1+4CPUCores8GBRAM20GBFreeDiskSpace安装dockeryum install docker -y# 查看版本信息docker info或者docker -vdocker镜像加速:vim /etc/docker/daemon.json{ "registry-mirrors": [ "https://registry.docker-cn.com", //国内官方镜像 "https://mirrors.tuna.tsinghua.edu.cn", //清华镜像 "http://hub-mirror.c.163.com", //网易163镜像 "https://docker.mirrors.ustc.edu.cn", //中科大镜像 ]}# 重启dockersudo systemctl daemon-reloadsudo systemctl restart docker安装docker-composewget -O /usr/local/bin/docker-compose https://github.com/docker/compose/releases/download/1.27.3/docker-compose-Linux-x86_64chmod 777 /usr/local/bin/docker-compose# 查看docker-compose 版本docker-compose version克隆源代码到安装目录:git clone https://github.com/getsentry/onpremise.git# 切换需要安装的分支git checkout 21.4.1运行部署脚本:cd onpremise./install.sh启动服务docker-compose up -dSentry服务作用通过dockerps命令,我们可以看到Sentry启动的很多服务rediskafkaclickhousezookeeperpostgresmemcachedstmpsentry-cronsentry-workersentry-webnginxSentry的整体的运行流程如下图:image配置文件onpremise部署之后的主要配置文件config.yml:配置文件sentry.conf.py:为python代码,覆盖或合并至sentry服务中,从而影响sentry运行。.env:镜像版本、数据保留天数、端口等配置升级Sentry服务新的服务已经安装完成,现在需要把旧的数据迁移到新的服务上面来。之前的服务是使用的单独的postgres集群。修改数据库配置通过修改sentry.conf.py文件,把数据库配置到独立的集群DATABASES = { 'default': { 'ENGINE': 'sentry.db.postgres', 'NAME': 'sentry', 'USER': 'postgres', 'PASSWORD': 'postgres', 'HOST': 'HOST', 'PORT': '7001', 'AUTOCOMMIT': True, 'ATOMIC_REQUESTS': False, }}运行升级命令sentry提供了升级命令,一键升级数据库到对应的新版本,但是需要注意之前的版本需要是9.1.2之上。如果小于9.1.2是不兼容的。只能通过命令把用户和项目数据导出。放弃之前的错误信息。docker-compose run --rm web upgrade升级遇到的问题磁盘占用过大的问题随着数据的上报,服务器本地的磁盘占用会越来越大,Sentry默认的配置保留90天来说,全量接入后磁盘占用会维持在一个比较大的值,同时这么大的数据量对数据的查询也是一个负担。为了减轻负担,需要从服务端和业务应用端同时入手。综合考虑我们将数据保留时长改为7天。修改.env文件即可:SENTRY_EVENT_RETENTION_DAYS=7同时需要修改docker数据存储位置修改。dockervolume默认挂载在/var目录下,我们的/var目录容量只有100G,随着服务的运行会很快占满,需要对dockervolume挂载目录进行修改。# 在容量最大的目录下创建文件夹mkdir -p /opt/var/lib# 停止 docker 服务systemctl stop docker# 迁移数据/bin/cp -a /var/lib/docker /opt/var/lib/docker & rm -rf /var/lib/docker & ln -s /opt/var/lib/docker /var/lib/docker# 重启 docker 服务systemctl start docker用户数量丢失升级之后用户数量获取失败,也就是Sentry服务获取不到真实的IP。在Sentry的管理后台中默认会关闭获取IP,需要手动的打开。image
|
|