美文网首页
Sentry 完全离线部署

Sentry 完全离线部署

作者: luckriver | 来源:发表于2023-11-06 16:15 被阅读0次

Sentry 离线部署

此篇为 Sentry 完全离线部署的操作步骤,来源于自己在一个无网络的 linux 系统中实际操作的总结。主要是一些踩坑的记录和操作手法,留作日后参考。

Sentry 的基本部署方法

首先,如果想在自己的环境中部署 Sentry,完全可以按照官网指南操作即可Self-Hosted Sentry

self_hosted.png

我已经在一台有网络的环境下部署了 sentry(23.7.1)并且已经正常运行了一段时间。 现在需要在一台没有网络的环境下安装 sentry。

下面是一些具体的操作步骤。

离线导出/导入镜像

官方的 self hosted 的版本最终安装后是运行 docker 上的。因为很自然的想到把镜像单独导出来,然后上传到新的服务器上,再进行导入操作。

因为 sentry 的服务很多,这里采用的是分批导出的方式

docker save -o common.tar redis:6.2.12-alpine clickhouse-self-hosted-local confluentinc/cp-zookeeper:5.5.7

在远端服务器上导入镜像

docker load -i common.tar

这里需要注意的是,由于我们是在一个已经运行起来的 sentry中导出的镜像,需要连带将sentry 的安装目录一起拷贝到新的环境,这里是 self-hosted-23.7.1 目录下的所有文件。这个目录也是后面运行 docker-compose 的目录。

启动 Sentry

现在就可以通过 docker-compose up -d 来启动 Sentry 服务了。这个启动和运行过程就是一个不断解决问题的过程。

报错 external volume sentry-kafka not found

这个比较好理解,我们在一台新的机器上,需要的卷肯定是没有的,用如下命令创建。

docker volume create sentry-kafka

之后通过 ls 可以查看是否创建成功

docker volumne ls

启动postgres 报错

错误如下

cp: cannot stat /opt/sentry/wal2json/wal2json.so, no such file or directory

这个报错主要还是因为之前用的 sentry 的安装包是全新的,不是从之前机器上拷贝出来的,因此这些文件都没有。如果使用的是从之前机器上拷贝的安装目录,就不会有这个问题的。

那这些确失的文件是哪来的呢,我们可以看下安装目录下的 install/install-wal2json.sh

mkdir -p "$WAL2JSON_DIR"
if [ ! -f "$WAL2JSON_DIR/$VERSION/$FILE_NAME" ]; then
  mkdir -p "$WAL2JSON_DIR/$VERSION"
  docker_curl -L \
    "https://github.com/getsentry/wal2json/releases/download/$VERSION/$FILE_NAME" \
    >"$WAL2JSON_DIR/$VERSION/$FILE_NAME"
fi

可以看出,正常能使用 install.sh 安装的情况下,会从网络上下载对应的文件。

table sentry_relay does not exist

这还是一个关于 Postgres 的报错。看起来是相应的数据库表不存在,应该是数据库没有做正确的初始化。

还是参考 install/set-up-and-migrate-database.sh 数据库初始化脚本

if [[ -n "${CI:-}" || "${SKIP_USER_CREATION:-0}" == 1 ]]; then
  $dcr web upgrade --noinput
  echo ""
  echo "Did not prompt for user creation. Run the following command to create one"
  echo "yourself (recommended):"
  echo ""
  echo "  $dc_base run --rm web createuser"
  echo ""
else
  $dcr web upgrade
fi

$dcr 是一个变量,其实就是


这里最关键的就是需要运行

docker-compose run --rm web upgrade

运行完之后可以去 postgres 容器上确认一下

可以看到表已经创建出来了


Postgres tables.png

其他

出现的各种问题总结下来其实都和初始化相关,参考一下 install.sh 会有一些思路。

比如如果出现 kafka topic 没有创建的问题,运行一下 install/create-kafka-topics.sh 就可以了。

Nginx 转发的配置

Sentry 启动之后,我想把它放在已有域名的目录下进行访问,应该如何配置 nginx?

首先说这种转发的方式并不是官方推荐的,只是在一个网络受限的环境中不得以采用的访问方法。

为了让 sentry 的管理界面能够正常显示到域名的 sentry/ 路径下,在 nginx 相应的配置下增加如下


转发配置

注意这些路径是否和自己已有路径冲突,不要覆盖自己正常业务的访问。

另外就是要修改 sentry 自身的配置。sentry 的配置一般放在两个文件中,一个是 config.yml, 另外一个是 sentry.conf.py。如果是自定义的域名,首先要修改的就是 config.yml 的如下配置。

system.url-prefix: 'http://test.com/sentry'

转发后出现的问题

其实依然是和初始化相关的问题

  • clickhouse 报错 table default.errors_local does not exist,解决办法 参考 install/bootstrap-snuba.sh

期间还遇到一个比较诡异的问题,sentry 管理界面进去之后,不能加载 issues 页面,访问接口 500。看日志发现入口容器 self-host-web 报错, 连不上 127.0.0.1:1218。通过配置知道 1218 是 snuba-api 的接口,但是不知道为什么 snuba-api 解析到了 127.0.0.1 上去了。 通过一番调试后发现 docker-compose.yml 中定义的环境变量没有传递到容器内。 原来是自己在 yml 文件的 web 下添加了一个环境变量,导致最上层的环境变量不能传递进来

command: ["run", "web"]
  environment:
    PYTHONUSERBASE: "/data/custom-packages"
    SENTRY_CONF: "/etc/sentry"
    SNUBA: "http://snuba-api:1218"
    VROOM: "http://vroom:8085"

DSN 的配置

最后需要验证的就是业务的异常能不能正常发送给 sentry 了。管理后台给出的 DSN 一般格式是 http://47279ec255024a269b4cfa3c9744aa14@test.com/sentry:9000/7这样的链接,但是使用时需要考虑业务所在的环境是否可以通过 test.com/sentry 正常发送数据。

由于之前已经申请了业务方所在的 pod(没错,这里是 k8s 环境) 和 sentry 安装机器的 9000 端口能直接通信,所以另外一种方案就是直接通过 ip 进行发送,比如 http://47279ec255024a269b4cfa3c9744aa14@192.168.0.2:9000/7

实际通过验证发现,通过域名发送会在 sentry 端报错,而 ip 直连的方式可以正常发送异常给 sentry。

通过以上一些配置,最后终于能在域名下看到了 sentry 界面和业务方发送的异常信息

相关文章

  • Electron 集成 Sentry

    Electron 集成 Sentry sentry分为支持本地部署。目前只涉及在线版本。 Sentry 创建org...

  • [转]CDH5.16.1集群企业真正离线部署

    一.准备工作1.离线部署主要分为三块: MySQL离线部署 CM离线部署 Parcel文件离线源部署 2、规划 3...

  • ubuntu 16.04 部署sentry

    sentry 部署 一 准备:机器及域名 * 机器: 阿里云ecs * 域名:sentry.domai...

  • CDH 6.3.1 rpm+http安装部署

    一、准备工作 1.离线部署主要分为三块: a.MySQL离线部署 b.CM离线部署 c.Parcel⽂件离线源部署...

  • sentry 部署

    使用docker-compose 安装sentry 首先clone Sentry On-Premise 构建sen...

  • RedHat7离线部署

    主要内容:由于Redhat是离线的,所以程序部署时,boost,qt,数据库都需要离线安装。这里记录一下离线部署的...

  • Docker 部署 Sentry

    创建目录及文件 编辑 docker-compose.yml 查看 SECRET 并替换 将 docker-com...

  • 涨知识丨nginx完全离线部署

    有一些参与实际项目部署的童鞋都知道,在一个完全离线的过程中进行中间件部署是一件很痛苦的事,这里就记录一下再Read...

  • docker离线部署及设置开机自启

    问题:centos7 离线部署docker, 离线部署docker后,设置开启自启。 解决如下: 1. 首先看这篇...

  • 基于Helm安装sentry

    前言 最初的需求就是在k8s上安装sentry。之前通过自己梳理sentry工程各组件的关联关系做过一次部署。后面...

网友评论

      本文标题:Sentry 完全离线部署

      本文链接:https://www.haomeiwen.com/subject/xlqxwdtx.html