OpenReplay 管理

如何轻松管理和维护您的 OpenReplay 实例。

OpenReplay 管理

CLI 有助于管理 OpenReplay 实例的基本方面,例如重启或重新安装服务、访问组件的日志,或者只是检查后端服务的状态。

使用 -h 选项运行 CLI:

openreplay -h

并查看所有可用选项的列表:

  ___                   ____            _
 / _ \ _ __   ___ _ __ |  _ \ ___ _ __ | | __ _ _   _
| | | | '_ \ / _ \ '_ \| |_) / _ \ '_ \| |/ _` | | | |
| |_| | |_) |  __/ | | |  _ <  __/ |_) | | (_| | |_| |
 \___/| .__/ \___|_| |_|_| \_\___| .__/|_|\__,_|\__, |
      |_|                        |_|            |___/

[INFO]
  Usage: openreplay [ -h | --help ]
                    [ -s | --status ]
                    [ -i | --install DOMAIN_NAME ]
                    [ -u | --upgrade ]
                    [ -U | --deprecated-upgrade /path/to/old_vars.yaml]
                    [ -r | --restart ]
                    [ -R | --Reload ]
                    [ -c | --cleanup N (in days) ]
                    [ -e | --edit ]
                    [ -p | --install-packages ]
                    [ -l | --logs SERVICE ]
         Services: alerts assets assist chalice
                   db ender frontend heuristics
                   http integrations nginx-controller
                   peers sink sourcemapreader storage

OpenReplay 后端依赖以下组件/服务:

服务描述
http摄取事件和会话录制
sink从流式管道(企业版为 Redis 或 Kafka)读取数据并插入到临时存储(NFS)
storage将临时会话录制文件移动到对象存储服务
assets用于缓存资源(CSS、字体和图标)以正确渲染录制内容
db读取和写入各种数据库(企业版为 Postgres + ClickHouse)
ender在用户会话处于非活动状态或断开连接时终止会话
chalice为前端提供服务的 API
alerts当任何性能指标达到用户设置的阈值时发送通知(电子邮件、slack、应用内、webhook)
integrations从受支持的第三方 API(Sentry、Elastic、GitHub、Jira 等)推送和拉取数据
  • 检查 OpenReplay 的健康状态
openreplay -s
  • 检查服务日志
openreplay -l <service name>

可以通过覆盖默认的 cpu/内存分配值来增加任何服务的容量。后者在安装过程中根据您的实例容量确定,应该能满足大多数安装的需求。

如果您的流量很大且机器配置很高,只需运行 openreplay -e 文件并覆盖服务的资源。在下面的示例中,我们针对 http worker 进行操作。但这可以对任何服务(即 sink、storage、postgresql、redis 等)进行,方法是取消注释并更新下面的代码块。如果您需要为多个服务执行此操作,只需复制并重命名/更新相同的代码块(注意重复)。

http:
  resources:
    limits:
      cpu: 4096m
      memory: 8192Mi
    requests:
      cpu: 1024m
      memory: 2056Mi

最后,重新安装该服务以使新的限制生效(您的数据不会丢失):

openreplay -R

以下是将 PostgreSQL 升级到 1.16 或更高版本的说明:

  1. 在持久卷中创建数据库转储:

    如果您使用的是标准安装,请执行以下命令来创建数据库转储:

    注意:您可以预期数据将以 3:1 的比例被压缩(例如:如果您有 15G 的 postgres 数据,那么在转储中将为 5G)。因此请确保您有足够的磁盘空间。

    kubectl -n db exec -it postgresql-0 -- /bin/bash -c 'PGPASSWORD=$POSTGRES_PASSWORD PGUSER=postgres pg_dumpall -v > /bitnami/postgresql/dumpall.sql'
  2. 删除现有的数据目录:

    kubectl -n db exec -it postgresql-0 -- /bin/bash -c 'rm -rf /bitnami/postgresql/data'
  3. 将 PostgreSQL StatefulSet 缩放为零以停止当前的 pod:

    kubectl scale sts postgresql --replicas=0 -n db
  4. 将 PostgreSQL 镜像更新到 16.3.0 或更高版本:

    kubectl set image statefulset/postgresql postgresql=bitnamilegacy/postgresql:16.3.0-debian-12-r9 -n db
  5. 将 StatefulSet 缩放回一个以启动更新后的 pod:

    kubectl scale sts postgresql --replicas=1 -n db
  6. 确保 pod 正在运行且缩放操作已完成:

    kubectl get pod -n db -l app.kubernetes.io/name=postgresql
  7. 从转储中恢复数据库:

    kubectl -n db exec -it postgresql-0 -- /bin/bash -c 'PGPASSWORD=$POSTGRES_PASSWORD PGUSER=postgres psql -f /bitnami/postgresql/dumpall.sql'
  8. 升级完成后,您可以从 PostgreSQL pod 中删除转储文件:

    kubectl -n db exec -it postgresql-0 -- /bin/bash -c 'rm /bitnami/postgresql/dumpall.sql'

运行以下命令来卸载 OpenReplay:

sudo k3s-uninstall.sh

所有配置都存储在 /var/lib/openreplay/ 中。

sudo rm -rf /var/lib/openreplay