이 포괄적인 Docker image에는 모든 ClickStack 오픈 소스 구성 요소가 포함되어 있습니다:
- ClickHouse
- HyperDX
- OpenTelemetry (OTel) collector (
4317및4318포트에서 OTLP 노출) - MongoDB (애플리케이션 상태를 영구적으로 저장하기 위한 용도)
이 옵션에는 인증이 포함되어 있어 세션과 사용자 전반에서 대시보드, 알림, 저장된 검색을 유지할 수 있습니다.
적합한 용도
- 데모
- 전체 스택 로컬 테스트
배포 단계
Docker로 배포
다음을 실행하면 OpenTelemetry collector(포트 4317 및 4318)와 HyperDX UI(포트 8080)가 실행됩니다.
docker run -p 8080:8080 -p 4317:4317 -p 4318:4318 clickhouse/clickstack-all-in-one:latest데이터 수집
데이터를 수집하려면 "Ingesting data"를 참조하십시오.
데이터 및 설정 유지
컨테이너를 다시 시작한 후에도 데이터와 설정을 유지하려면 위의 docker 명령을 수정해 /data/db, /var/lib/clickhouse, /var/log/clickhouse-server 경로를 마운트할 수 있습니다. 예시는 다음과 같습니다:
# 디렉터리가 존재하는지 확인
mkdir -p .volumes/db .volumes/ch_data .volumes/ch_logs
# 경로를 마운트하도록 명령 수정
docker run \
-p 8080:8080 \
-p 4317:4317 \
-p 4318:4318 \
-v "$(pwd)/.volumes/db:/data/db" \
-v "$(pwd)/.volumes/ch_data:/var/lib/clickhouse" \
-v "$(pwd)/.volumes/ch_logs:/var/log/clickhouse-server" \
clickhouse/clickstack-all-in-one:latest프로덕션 배포
다음과 같은 이유로 이 옵션은 프로덕션 환경에 배포해서는 안 됩니다.
- 비영구 스토리지: 모든 데이터는 Docker의 네이티브 오버레이 파일 시스템을 사용해 저장됩니다. 이 구성은 대규모 환경에서 필요한 성능을 지원하지 않으며, 사용자가 필수 파일 경로를 마운트하지 않으면 컨테이너가 제거되거나 재시작될 때 데이터가 손실됩니다.
- 컴포넌트 격리 부족: 모든 컴포넌트가 단일 Docker 컨테이너에서 실행됩니다. 이로 인해 각 컴포넌트를 독립적으로 스케일링하거나 모니터링할 수 없고,
cgroup제한도 모든 프로세스에 일괄 적용됩니다. 그 결과 컴포넌트들이 CPU와 메모리 자원을 두고 서로 경합할 수 있습니다.
포트 사용자 지정
HyperDX Local이 사용하는 애플리케이션(8080) 또는 API(8000) 포트를 사용자 지정해야 한다면, 해당 포트가 전달되도록 docker run 명령을 수정하고 몇 가지 환경 변수를 설정해야 합니다.
OpenTelemetry 포트는 포트 포워딩 플래그를 수정하는 것만으로 간단히 변경할 수 있습니다. 예를 들어 OpenTelemetry HTTP 포트를 4999로 변경하려면 -p 4318:4318을 -p 4999:4318로 바꾸십시오.
docker run -p 8080:8080 -p 4317:4317 -p 4999:4318 clickhouse/clickstack-all-in-one:latestClickHouse Cloud 사용
이 배포판은 ClickHouse Cloud와 함께 사용할 수 있습니다. 로컬 ClickHouse 인스턴스도 계속 배포되지만 사용되지는 않으며, 환경 변수 CLICKHOUSE_ENDPOINT, CLICKHOUSE_USER, CLICKHOUSE_PASSWORD를 설정하면 OTel collector가 ClickHouse Cloud 인스턴스를 사용하도록 구성할 수 있습니다.
예시:
export CLICKHOUSE_ENDPOINT=<HTTPS ENDPOINT>
export CLICKHOUSE_USER=<CLICKHOUSE_USER>
export CLICKHOUSE_PASSWORD=<CLICKHOUSE_PASSWORD>
docker run -e CLICKHOUSE_ENDPOINT=${CLICKHOUSE_ENDPOINT} -e CLICKHOUSE_USER=default -e CLICKHOUSE_PASSWORD=${CLICKHOUSE_PASSWORD} -p 8080:8080 -p 4317:4317 -p 4318:4318 clickhouse/clickstack-all-in-one:latestCLICKHOUSE_ENDPOINT는 포트 8443이 포함된 ClickHouse Cloud HTTPS 엔드포인트여야 합니다. 예: https://mxl4k3ul6a.us-east-2.aws.clickhouse.com:8443
HyperDX UI에 연결한 후 Team Settings로 이동하여 ClickHouse Cloud 서비스에 대한 연결을 생성하고, 이어서 필요한 소스를 생성하십시오.
OpenTelemetry collector 구성하기
필요하면 OTel collector 구성을 수정할 수 있습니다. "구성 수정"을 참조하십시오.
스키마 선택: Map vs JSON
ClickStack는 기본적으로 속성을 Map(LowCardinality(String), String) 컬럼에 저장합니다. 이는 관측성 워크로드에 권장되는 스키마입니다. 버킷 기반 맵 직렬화와 맵 키 및 값에 대한 텍스트 인덱스를 함께 사용하면, 동적 JSON 서브컬럼에서 발생하는 키별 수집 오버헤드 없이 필요한 항목만 선택적으로 조회할 수 있습니다.
JSON 타입 스키마는 속성 키 집합이 작고 안정적인 워크로드에서 평가할 수 있도록 베타로 제공됩니다. 기본값으로는 권장되지 않습니다. 전체 비교 내용과 JSON 지원을 활성화하는 데 필요한 환경 변수는 Map vs JSON type에서 확인하십시오.
