升级 Sentry 自主部署实例

Sentry 使用日历版本(CalVer)生成版本号,即按照特定时间来发布版本,比如今年是 2022 年,在刚刚过去的 10 月份,他们就发布了 22.10 版本。按照这种方式,很快 22.11 也会发布。

每个版本都会有一些问题修复、新功能添加。而且,作为一个错误管理平台,里面存储数据,很多都跟我们的代码有关,所以我们也很关注它的安全问题。所以,我建议大家及时升级到新版本。

按照 Sentry 的设计,升级其实很简单:

  1. 下载最新版本:https://github.com/getsentry/self-hosted/releases/
  2. 解压缩到目标文件夹
  3. 执行 ./install.sh 即可

不过考虑到 清理 Sentry 磁盘占用 时需要安装 pg_repack 插件,这个过程实际要复杂一些。否则,可能会安装失败,到时候,恢复也很麻烦。

升级 Sentry self-hosted 实例

停用 pg_repack

  • 进入 sentry 配置目录,对于我来说,就是 ~/sentry
  • 登录 Postgresql 容器:sudo docker compose exec postgres bash
  • 之前我们已经装过 vim,所以不用再装。否则话,需要先安装一个文本编辑器:apt update && apt install vim
  • 修改配置:
    • su postgres
    • cd $PGDATA
    • vim postgresql.conf
    • shared_preload_libraries = 'pg_repack' <– 找到并注释这一句
    • 保存并退出 wq
  • 进入 postgresql shell:psql postgres
    • psql postgres
    • 执行 SQL:DROP EXTENSION pg_repack;

更新配置文件

  • 下载新版本之后,解压缩到新目录 sentry_new
  • 备份之前的配置文件,对于我而言,需要备份三个文件:
    • ~/entry/docker-compose.yml 里面关于 Kafka 的配置
    • ~/sentry/sentry/config.yml 里的邮箱配置
    • ~/sentry/sentry/sentry.conf.py 最后面的其它配置
  • sentry_new 复制到原本的 sentry
  • 将备份的配置复制回去

安装新版本

接下来安装新版本:sudo ./install.sh

安装脚本会自动停止服务,然后拉新的镜像,然后部署新的容器。这个过程会持续一段时间,与网络状态、机器性能都有关,需要提前做好准备。

这个过程如果断开连接,会出错失败。所以建议用 screentmux 等工具保持进程运行。

安装成功后,正常启动服务即可:sudo docker compose up -d,然后就可以使用新版本的 Sentry 了。

清理老的镜像和容器

一般来说,这个过程不是很必要,至少不用每次升级都做。为了避免未来的使用问题,可以先留一阵子,我建议最多清理一年前的残留镜像和容器。

(过程方法待补充)

常见更新失败及解决

container for service "postgres" is unhealthy

这就是我前面说到的原因:因为事前在 Postgresql 容器里启动过 pg_repack 插件,升级之后的容器里并没有这个插件,但因为继承了以前的存储卷(Volume),所以启动容器时还是会查找这个插件,因为容器里没有,就挂了。

解决方案是:

  1. 回滚到之前的版本,其实就是把比老版本配置文件拷回来
  2. 因为我们并没有清理镜像和容器,所以此时老版本是可以正常启动的
  3. 不用完全启动,启动 postgresql 即可:sudo docker compose start postgres
  4. 然后登入 postgres 容器,执行前面的操作,清理 pg_repack 插件
  5. 退出并关闭 postgres 容器
  6. 重复上面的新版本安装过程

总结

作为一名土前端,我对 docker 不太熟悉,对 Kafka、Postgresql 也知之甚少。使用 Sentry 之后,迫不得已必须学习很多新知识,我觉得很有意思。如今我已经尽量使用 Docker Desktop 去使用和管理一些软件,我觉得很方便。接下来好好学习,争取把 Docker 生态的工具也为我所用。

如果你有任何问题、建议,欢迎留言讨论。

如果您觉得文章内容对您有用,不妨支持我创作更多有价值的分享:


已发布

分类

来自

评论

欢迎吐槽,共同进步

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据