Администрирование OpenReplay

Как легко администрировать и управлять вашим экземпляром OpenReplay.

Администрирование OpenReplay

CLI полезен для управления базовыми аспектами вашего экземпляра OpenReplay, такими как перезапуск или переустановка сервиса, доступ к журналам компонента или просто проверка состояния ваших бэкенд-сервисов.

Запустите CLI с опцией -h:

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 для версии enterprise) и вставляет их во временное хранилище (NFS)
storageПеремещает временные файлы записей сессий в сервис объектного хранилища
assetsДля кэширования ресурсов (CSS, шрифтов и иконок) для корректного отображения записей
dbЧитает и записывает в различные базы данных (Postgres + ClickHouse для версии enterprise)
enderЗавершает пользовательские сессии, если они неактивны или отключены
chaliceAPI для обслуживания фронтенда
alertsОтправляет уведомления (email, slack, в приложении, webhook), когда установленный пользователем порог достигнут по любой из метрик производительности
integrationsОтправляет и извлекает данные из поддерживаемых сторонних API (Sentry, Elastic, GitHub, Jira и т. д.)

Полезные команды

Section titled Полезные команды
  • Проверить состояние работоспособности OpenReplay
openreplay -s
  • Проверить журналы сервисов
openreplay -l <service name>

Увеличение мощности сервиса

Section titled Увеличение мощности сервиса

Можно увеличить мощность любого сервиса, переопределив значения распределения cpu/памяти по умолчанию. Последние определяются в процессе настройки на основе мощности вашего экземпляра и должны удовлетворять потребностям большинства установок.

Если у вас большой объём и мощная машина, просто запустите файл openreplay -e и переопределите ресурсы сервиса. В приведённом ниже примере мы делаем это для воркера http. Но это можно сделать для любого сервиса (т. е. sink, storage, postgresql, redis и т. д.), раскомментировав и обновив блок ниже. Если вам нужно сделать это для более чем одного сервиса, просто скопируйте и переименуйте/обновите тот же блок (следите за дублированием).

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

Наконец, переустановите сервис, чтобы новые лимиты вступили в силу (ваши данные не будут потеряны):

openreplay -R

Обновление PostgreSQL

Section titled Обновление PostgreSQL

Ниже приведены инструкции по обновлению 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. Масштабируйте StatefulSet PostgreSQL до нуля, чтобы остановить текущие поды:

    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 обратно до единицы, чтобы запустить обновлённый под:

    kubectl scale sts postgresql --replicas=1 -n db
  6. Убедитесь, что под запущен и операция масштабирования завершена:

    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:

    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