![[1편] APM 스캐터 차트 직접 만들기 — OpenTelemetry 수집과 ClickHouse 저장](/_next/image?url=%2Flogos%2Fgccompany.png&w=3840&q=75)
OpenTelemetry로 수집하고 ClickHouse로 압축 저장하여 상용 APM 못지않은 고성능 관측 인프라 만들기
평균 응답시간이나 P99 지표만으로는 발견하기 어려운 미세한 시스템 지연 현상을 시각화하기 위해, OpenTelemetry와 ClickHouse를 결합한 커스텀 APM 스캐터 차트 구축 과정을 공유합니다. 불필요한 데이터를 거르는 수집 필터 설계부터 대용량 시계열 로그 적재에 최적화된 ClickHouse 스키마 디자인까지, 비용 효율적인 파이프라인 설계 전략을 다룹니다.
고가의 상용 APM 도입 비용이 부담스럽거나, 이미 구축된 OpenTelemetry 기반 Grafana 환경에서 한 단계 높은 수준의 실시간 지연 패턴 탐지가 필요한 백엔드 및 인프라 엔지니어에게 적극 추천합니다.
평균 응답 시간이나 백분위(P99) 등의 집계 지표는 개별 요청의 극단적인 지연이나 에러를 숨겨 오판을 유도하는 사각지대가 존재합니다. 이를 해결하고자 기존의 상용 APM 도구에 종속되어 있던 개별 요청 기반의 유용한 시각화 도구인 스캐터 차트를 오픈소스를 활용하여 직접 구축하고자 했습니다.
OpenTelemetry Collector를 활용해 유입되는 Span 트래픽을 기존 파이프라인 손상 없이 분기 처리하였으며, 필터 프로세서를 적용해 비-HTTP CLIENT 등 불필요한 트레이스는 수집 단계에서 사전에 제외했습니다. 필터링된 대량의 Span 데이터는 시계열 분석 및 대규모 스캔에 최적화된 컬럼 지향 데이터베이스인 ClickHouse의 MergeTree 테이블 구조에 배치 형태로 적재하도록 구축했습니다.
ZSTD 및 Delta 압축 코덱 설정을 통해 로컬 실측 기준 원본 데이터 대비 약 10분의 1 수준(약 90% 용량 감소)의 효율적인 압축률을 달성했습니다. 또한, 진입점과 주요 하위 호출만 정교하게 분리하고 ClickHouse의 희소 인덱스(Sparse Index)를 최적화하여 대용량 범위 조회가 빠른 조회 전용 데이터 적재 인프라를 성공적으로 확보했습니다.
Trade-off
정밀한 분포 파악을 위해 샘플링을 비활성화(AlwaysOn)함에 따라 수집 경로에서의 리소스 부담과 가공 비용이 크게 증가하며, 데이터 수집량의 통제를 위해 DB 쿼리나 캐시 조회 등의 내부 CLIENT Span 기록을 수집 대상에서 과감히 포기해야 하는 타협이 따랐습니다.
다양한 형식의 텔레메트리 데이터를 수집, 처리 및 내보낼 수 있는 벤더 중립적인 고성능 프록시입니다.
대규모 분석(OLAP) 워크로드를 위해 설계된 컬럼 지향 데이터베이스 엔진으로, 빠른 배치 쓰기와 효율적인 데이터 압축을 제공합니다.
모든 행을 가리키는 일반적인 인덱스와 달리, 일정 행 그룹(Granule) 단위로 인덱스 마크를 생성하여 메모리 사용량을 최소화하는 기법입니다.




