ClickStack과 chDB (HyperDX 관측성 스택, 임베디드 ClickHouse)
ClickHouse 와 HyperDX, OpenTelemetry 컬렉터로 이루어진 관측성 스택 ClickStack 의 구성, 배포 방식, 수집과 알림, 과금을 정리하고, 서버 없이 프로세스 안에서 ClickHouse 엔진을 쓰는 chDB 와 pandas 호환 DataStore API, WASM 과 Durable Layer 까지 어디에 무엇을 쓰면 좋은지 설명합니다.
두 가지를 한 글에 묶은 이유
ClickStack 과 chDB 는 둘 다 "ClickHouse 엔진을 서버 클러스터가 아닌 다른 모양으로 쓰는" 제품입니다. ClickStack 은 로그, 트레이스, 메트릭을 넣는 관측성 플랫폼이고, chDB 는 Python 스크립트나 노트북 안에서 ClickHouse SQL 을 실행하는 라이브러리입니다. MSP 현장에서는 "Datadog 비용을 줄이고 싶다" 와 "pandas 가 메모리 부족으로 죽는다" 라는 서로 다른 질문의 답이 됩니다.
ClickStack 이란
ClickStack 은 ClickHouse 가 2025년 3월에 인수한 HyperDX 를 UI 로 삼은 오픈소스 관측성 스택입니다. OpenTelemetry 로 들어온 로그, 트레이스, 메트릭, 세션 리플레이를 ClickHouse 에 넣고, HyperDX 화면에서 검색하고 상관관계를 찾습니다. 데이터는 그냥 ClickHouse 테이블이라 SQL 로도 바로 분석할 수 있고, 압축률이 10배 이상 나와 같은 보존 기간을 훨씬 싸게 유지합니다.
| 구성 요소 | 역할 | 메모 |
|---|---|---|
| ClickHouse | 저장과 쿼리 | OSS 또는 ClickHouse Cloud |
| HyperDX UI | 검색, 대시보드, 알림, 세션 리플레이 | Lucene 식 검색과 자연어 검색, SQL 모드 |
| OpenTelemetry 컬렉터 | 수집과 스키마 적재 | ClickStack 배포판은 OTel 스키마에 맞춘 테이블을 자동 생성 |
| MongoDB | HyperDX 의 대시보드와 알림 같은 앱 상태 저장 | OSS 배포에만 필요. Managed ClickStack 은 없음 |
배포 방식
| 방식 | 언제 | 비고 |
|---|---|---|
| Managed ClickStack (ClickHouse Cloud) | 상용, 운영 인력 적을 때 | HyperDX 가 Cloud 콘솔 안에 들어 있고 SSO 와 SAML 을 콘솔과 공유. MongoDB 없음. OTel 컬렉터는 고객이 운영 |
| Helm 차트 | Kubernetes 상용 | 컬렉터, HyperDX, MongoDB, ClickHouse 를 선택적으로 설치 |
| Docker Compose | 소규모 상용, 검증 | 각 컨테이너 분리 |
| All-in-One 이미지 | 로컬 평가 | 모든 구성 요소가 컨테이너 하나. 상용 비권장 |
| HyperDX Only | ClickHouse 가 이미 있을 때 | 기존 OTel 스키마 테이블이나 자기 스키마에 연결 |
| Local Mode | 브라우저에서만 | 저장 없음. 외부 ClickHouse 를 보는 뷰어로 |
# 로컬 평가용 All-in-One (HyperDX 8080, OTLP gRPC 4317, HTTP 4318)
docker run -p 8080:8080 -p 4317:4317 -p 4318:4318 \
clickhouse/clickstack-all-in-one:latest참고 Managed ClickStack 을 쓰더라도 OTel 컬렉터는 고객 쪽에 띄워야 합니다. Cloud 가 받아 주는 것은 ClickHouse 쪽 저장과 UI 이고, 애플리케이션에서 나오는 트래픽을 모아 보내는 역할은 여전히 고객의 Kubernetes 나 VM 에서 돌아갑니다.
수집
애플리케이션은 OpenTelemetry SDK 나 자동 계측으로 OTLP 를 컬렉터로 보내고, 컬렉터가 ClickHouse 에 적재합니다. ClickStack 배포판의 컬렉터는 OTel 스키마에 맞는 테이블(otel_logs, otel_traces, otel_metrics_*)을 자동으로 만들고, HyperDX 는 그 테이블을 소스로 등록해 바로 검색합니다.
-- 최근 10분간 에러 로그가 많은 서비스 (OTel 스키마)
SELECT ServiceName, count() AS errors
FROM otel_logs
WHERE Timestamp > now() - INTERVAL 10 MINUTE AND SeverityText = 'ERROR'
GROUP BY ServiceName ORDER BY errors DESC LIMIT 10;팁 기존에 Fluent Bit 나 Vector 로 로그를 모으고 있다면 그 출력만 OTLP 로 바꿔 컬렉터에 붙이는 것이 가장 적은 변경입니다. 전부 OTel SDK 로 바꾸는 작업은 트레이스가 필요한 서비스부터 단계적으로 합니다. ClickHouse 적재 일반론은 INSERT 모범 사례 와 Kafka 스트리밍 을 참고하세요.
기능
- 검색: Lucene 식 문법(
level:error service:api)과 자연어 검색, SQL 모드를 오갑니다. 라이브 테일로 흘러오는 로그를 실시간으로 봅니다. - 상관관계: 로그에서 트레이스로, 트레이스에서 세션 리플레이로 넘어가며 한 요청의 전 과정을 따라갑니다.
- 이벤트 패턴과 델타: 비슷한 로그를 묶어 패턴을 보여 주고, 느린 요청과 정상 요청의 속성 차이를 비교합니다.
- 대시보드: 차트는 SQL 로 정의되고, 어떤 차트든 알림으로 바꿀 수 있습니다.
- 알림: 검색 알림(조건에 맞는 이벤트 수가 기간 안에 임계값을 넘으면, group by 지원)과 대시보드 차트 알림을 Slack, PagerDuty, 일반 웹훅으로 보냅니다. 2026년 10월에는 Managed ClickStack 에 이상 탐지 기반 알림이 추가되었습니다.
주의 ClickStack 의 쿼리는 결국 ClickHouse 의 전체 스캔과 집계입니다. 보존 기간을 길게 두고 대시보드가 90일 범위를 계속 조회하면 컴퓨트 비용이 늘어납니다. 자주 보는 집계는 머티리얼라이즈드 뷰 로 미리 만들고, 원시 로그는 TTL 과 계층화 로 정리합니다. 읽기와 쓰기를 웨어하우스로 나누는 방법은 컴퓨트와 스케일링 에 있습니다.
과금 (Managed ClickStack)
Managed ClickStack 은 월 원시 수집량 구간으로 가격이 나뉩니다. 10 TB 미만, 10 TB 에서 100 TB, 100 TB 이상이고 200 TB 를 넘으면 별도 견적입니다. 저장은 압축 후 크기로 ClickHouse Cloud 와 같은 방식이라, 원시 100 TB 가 압축 후 10 TB 안쪽으로 떨어지는 것이 보통입니다. 자세한 비교는 비용 구조와 절감 을 보세요.
팁 Datadog 같은 SaaS 와 비교할 때는 "수집 GB 당" 만 보지 말고 보존 기간을 같게 맞춰서 월 총액을 비교합니다. ClickStack 은 보존을 늘려도 저장 요금만 늘고 수집 요금은 그대로여서, 30일 이상 보존이 필요할수록 차이가 커집니다.
chDB 란
chDB 는 ClickHouse 엔진을 프로세스 안에 넣은 임베디드 OLAP 라이브러리입니다. 서버를 띄우지 않고 Python, Go, Rust, Node.js, Bun, C/C++ 에서 바로 SQL 을 실행하고, Parquet, CSV, JSON 등 70개가 넘는 포맷과 S3 같은 오브젝트 스토리지를 테이블 함수로 읽습니다. 2024년 3월 ClickHouse 팀에 합류했고 Apache 2.0 라이선스입니다.
pip install "chdb>=2.0.2"-- Python 에서 chdb.query() 로 실행하는 SQL. S3 의 Parquet 을 바로 집계
SELECT toStartOfDay(ts) AS d, count(), avg(latency_ms)
FROM s3('https://my-bucket.s3.ap-northeast-2.amazonaws.com/logs/2026/10/*.parquet')
GROUP BY d ORDER BY d;pandas 사용자를 위한 DataStore API 는 from chdb import datastore as pd 한 줄로 바꿔 쓰는 것을 목표로 합니다. DataFrame 메서드 209개를 포함해 630개 넘는 메서드가 호환되고, .str, .dt 외에 .arr, .json, .url, .ip, .geo 접근자가 더 있습니다. 연산은 지연 평가되어 SQL 로 합쳐져 ClickHouse 엔진에서 실행됩니다. 공식 벤치마크(1,000만 행)에서 GroupBy 가 pandas 347 ms 대비 17 ms, 복잡한 파이프라인이 2,047 ms 대비 380 ms 였습니다.
# DataStore 사용 예 (Python). pandas 와 같은 모양으로 쓰고 실행은 ClickHouse 엔진
python3 - <<'PY'
from chdb import datastore as pd
df = pd.read_parquet("events-2026-10.parquet")
out = (df[df["status"] >= 500]
.groupby("service")["latency_ms"]
.mean()
.sort_values(ascending=False)
.head(10))
print(out)
PY참고 chDB 는 세션 안의 임시 데이터베이스이거나 파일 경로를 지정한 영속 데이터베이스로 쓸 수 있습니다. 서버 ClickHouse 와 SQL 이 같으므로, 노트북에서 chDB 로 쿼리를 다듬고 그대로 Cloud 서비스에 올리는 흐름이 자연스럽습니다. 함수와 문법은 SQL 기초 와 배열과 JSON 을 그대로 씁니다.
WASM 과 Durable Layer
- 2026년 8월(26.8) 릴리스와 함께 chDB 가 WebAssembly 로 빌드되어 브라우저 안에서 ClickHouse 엔진을 돌릴 수 있게 되었습니다. 서버 없는 데모, 민감 데이터를 브라우저 밖으로 내보내지 않는 분석 도구에 쓰입니다.
- 2026년 10월에는 Durable Layer 가 발표되어 chDB 의 상태를 S3, GCS, Azure Blob 에 영속화할 수 있습니다. 공식 소개는 AI 에이전트의 장기 메모리 저장소를 주요 용례로 들었습니다. 프로세스가 죽어도 데이터가 남고, 다른 프로세스가 같은 버킷을 열어 이어 쓸 수 있습니다.
주의 chDB 는 프로세스 하나의 메모리와 CPU 를 씁니다. 수십 GB 를 넘는 데이터를 반복해서 조회하거나 여러 사용자가 동시에 쓰는 상황은 chDB 가 아니라 서버 ClickHouse 의 영역입니다. 한계 판단에는 메모리 문제 해결 의 기준이 그대로 통합니다.
어디에 어떤 것을
| 상황 | 추천 |
|---|---|
| 로그, 트레이스 SaaS 비용이 부담 | Managed ClickStack 으로 시작, 컬렉터만 자체 운영 |
| 이미 ClickHouse 에 로그가 있음 | HyperDX Only 로 기존 테이블에 연결 |
| 노트북에서 수 GB Parquet 집계가 느림 | chDB 와 DataStore |
| ETL 스크립트에서 S3 파일 변환 | chDB 로 INSERT INTO FUNCTION file(...) SELECT ... FROM s3(...) |
| 브라우저 안 데이터 탐색 도구 | chDB WASM |
| 에이전트나 배치 작업의 상태 저장 | chDB Durable Layer (아직 초기) |
| 수십 명이 동시에 쓰는 대시보드 | ClickHouse Cloud 서비스 (chDB 아님) |