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, 앱 내, 웹훅)을 보냅니다 |
| 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 이상 버전으로 업그레이드하는 방법은 다음과 같습니다:
-
영구 볼륨에 DB 덤프를 생성합니다:
기본 설치를 사용 중이라면 다음 명령을 실행하여 데이터베이스 덤프를 생성합니다:
참고: 데이터는 3:1 비율로 압축될 것으로 예상할 수 있습니다(예: Postgres 데이터가 15G이면 덤프는 5G). 따라서 디스크 공간이 충분한지 확인하세요.
kubectl -n db exec -it postgresql-0 -- /bin/bash -c 'PGPASSWORD=$POSTGRES_PASSWORD PGUSER=postgres pg_dumpall -v > /bitnami/postgresql/dumpall.sql' -
기존 데이터 디렉터리를 삭제합니다:
kubectl -n db exec -it postgresql-0 -- /bin/bash -c 'rm -rf /bitnami/postgresql/data' -
PostgreSQL StatefulSet을 0으로 스케일하여 현재 파드를 중지합니다:
kubectl scale sts postgresql --replicas=0 -n db -
PostgreSQL 이미지를 16.3.0 이상 버전으로 업데이트합니다:
kubectl set image statefulset/postgresql postgresql=bitnamilegacy/postgresql:16.3.0-debian-12-r9 -n db -
업데이트된 파드를 시작하도록 StatefulSet을 다시 1로 스케일합니다:
kubectl scale sts postgresql --replicas=1 -n db -
파드가 실행 중이고 스케일링 작업이 완료되었는지 확인합니다:
kubectl get pod -n db -l app.kubernetes.io/name=postgresql -
덤프에서 데이터베이스를 복원합니다:
kubectl -n db exec -it postgresql-0 -- /bin/bash -c 'PGPASSWORD=$POSTGRES_PASSWORD PGUSER=postgres psql -f /bitnami/postgresql/dumpall.sql' -
업그레이드가 완료되면 PostgreSQL 파드에서 덤프 파일을 삭제할 수 있습니다:
kubectl -n db exec -it postgresql-0 -- /bin/bash -c 'rm /bitnami/postgresql/dumpall.sql'
OpenReplay 제거
Section titled OpenReplay 제거다음 명령을 실행하여 OpenReplay를 제거합니다:
sudo k3s-uninstall.sh
모든 구성은 /var/lib/openreplay/에 저장됩니다.
sudo rm -rf /var/lib/openreplay
ClickHouse 업그레이드
Section titled ClickHouse 업그레이드kubectl set image statefulset/databases-clickhouse clickhouse=clickhouse/clickhouse-server:26.8-alpine -n db