DevLog

엔지니어링 블로그를 한 곳에서 탐색하고, 최근 발행 흐름을 빠르게 파악할 수 있는 서비스 입니다.

Quick Links

  • Latest Feed
  • Engineering Directory

Support

  • 소개
  • 개인정보처리방침

Contribute

  • 원하는 블로그 추가 (준비 중)
  • Feedback

© 2026 DevLog Inc. All rights reserved.

본 사이트는 공개 RSS 피드를 통해 콘텐츠를 수집하며, 모든 콘텐츠의 저작권은 원저작자에게 있습니다.

Back to Feed
Read Original

Contents

Continue Reading

  • More from 여기어때
  • Related reads#OpenTelemetry
#DevOps

[1편] APM 스캐터 차트 직접 만들기 — OpenTelemetry 수집과 ClickHouse 저장

[1편] APM 스캐터 차트 직접 만들기 — OpenTelemetry 수집과 ClickHouse 저장
01

Summary

평균과 백분위가 감춘 장애 패턴, 오픈소스로 직접 그리는 APM 스캐터 차트 구축기

OpenTelemetry로 수집하고 ClickHouse로 압축 저장하여 상용 APM 못지않은 고성능 관측 인프라 만들기

평균 응답시간이나 P99 지표만으로는 발견하기 어려운 미세한 시스템 지연 현상을 시각화하기 위해, OpenTelemetry와 ClickHouse를 결합한 커스텀 APM 스캐터 차트 구축 과정을 공유합니다. 불필요한 데이터를 거르는 수집 필터 설계부터 대용량 시계열 로그 적재에 최적화된 ClickHouse 스키마 디자인까지, 비용 효율적인 파이프라인 설계 전략을 다룹니다.

  • 01집계 지표의 한계를 깨고 개별 요청을 시각화하는 스캐터 차트의 가치 전달
  • 02컬럼 지향 DBMS인 ClickHouse의 저장 구조 및 압축(ZSTD, Delta) 원리 상세 분석
  • 03기존 실서비스 분산 트레이싱 환경에 영향을 주지 않는 안전한 파이프라인 분기 구조 설계
  • 04비용 절감의 핵심인 OpenTelemetry Collector 필터 프로세서(Filter Processor) 구현 조건
  • 05MergeTree 테이블 엔진에 알맞은 배치(Batch) 적재 최적화 및 정렬 키(Sparse Index) 활용법

+RECOMMENDATION

고가의 상용 APM 도입 비용이 부담스럽거나, 이미 구축된 OpenTelemetry 기반 Grafana 환경에서 한 단계 높은 수준의 실시간 지연 패턴 탐지가 필요한 백엔드 및 인프라 엔지니어에게 적극 추천합니다.

The Problem

평균 응답 시간이나 백분위(P99) 등의 집계 지표는 개별 요청의 극단적인 지연이나 에러를 숨겨 오판을 유도하는 사각지대가 존재합니다. 이를 해결하고자 기존의 상용 APM 도구에 종속되어 있던 개별 요청 기반의 유용한 시각화 도구인 스캐터 차트를 오픈소스를 활용하여 직접 구축하고자 했습니다.

The Solution

OpenTelemetry Collector를 활용해 유입되는 Span 트래픽을 기존 파이프라인 손상 없이 분기 처리하였으며, 필터 프로세서를 적용해 비-HTTP CLIENT 등 불필요한 트레이스는 수집 단계에서 사전에 제외했습니다. 필터링된 대량의 Span 데이터는 시계열 분석 및 대규모 스캔에 최적화된 컬럼 지향 데이터베이스인 ClickHouse의 MergeTree 테이블 구조에 배치 형태로 적재하도록 구축했습니다.

The Result

ZSTD 및 Delta 압축 코덱 설정을 통해 로컬 실측 기준 원본 데이터 대비 약 10분의 1 수준(약 90% 용량 감소)의 효율적인 압축률을 달성했습니다. 또한, 진입점과 주요 하위 호출만 정교하게 분리하고 ClickHouse의 희소 인덱스(Sparse Index)를 최적화하여 대용량 범위 조회가 빠른 조회 전용 데이터 적재 인프라를 성공적으로 확보했습니다.

Trade-off

정밀한 분포 파악을 위해 샘플링을 비활성화(AlwaysOn)함에 따라 수집 경로에서의 리소스 부담과 가공 비용이 크게 증가하며, 데이터 수집량의 통제를 위해 DB 쿼리나 캐시 조회 등의 내부 CLIENT Span 기록을 수집 대상에서 과감히 포기해야 하는 타협이 따랐습니다.

03

Key Concepts

Concept · 01

OpenTelemetry Collector

다양한 형식의 텔레메트리 데이터를 수집, 처리 및 내보낼 수 있는 벤더 중립적인 고성능 프록시입니다.

  • 기존의 APM 수집 경로와 분리된 새로운 ClickHouse 전용 파이프라인을 구축하는 데 활용되었습니다.
  • Filter 프로세서를 활용해 헬스체크 및 무의미한 내부 트레이스를 적재 전 단계에서 효율적으로 제거했습니다.
Concept · 02

ClickHouse MergeTree

대규모 분석(OLAP) 워크로드를 위해 설계된 컬럼 지향 데이터베이스 엔진으로, 빠른 배치 쓰기와 효율적인 데이터 압축을 제공합니다.

  • 작은 INSERT의 빈번한 유입으로 파트가 폭증하는 문제를 막기 위해 큰 규모의 배치를 드물게 받는 형태로 설정을 최적화했습니다.
  • 동일한 데이터 컬럼에 대해 Delta 및 ZSTD 압축 코덱을 조합하여 데이터 용량을 90% 이상 절감했습니다.
Concept · 03

Sparse Index (희소 인덱스)

모든 행을 가리키는 일반적인 인덱스와 달리, 일정 행 그룹(Granule) 단위로 인덱스 마크를 생성하여 메모리 사용량을 최소화하는 기법입니다.

  • 정렬 키(ORDER BY)가 단순한 정렬 순서 정의를 넘어 성능을 결정짓는 인덱스로 활용됨을 설명하고 최적의 조회용 키를 구성하도록 유도했습니다.
Continue reading · same source

여기어때More from 여기어때

View all posts from 여기어때
  • 항공 프론트엔드 구축기 (10/10): 폴더 이름 앞의 기호 하나

    Frontend ArchitectureDirectory StructureFeature-Sliced Design
    3시간 전
  • 항공 프론트엔드 구축기 (8/10): 토큰이 세 군데서 온다

    NextJSWebViewAuthentication
    3시간 전
  • AI가 내 하루를 기억하게 하는 법 (1/2): 먼저, 기억할 곳을 만들었다 — 개인 LLM 위키

    LLMMarkdown WikiContext Window
    3시간 전
  • [2편] Grafana 커스텀 패널로 10만 점 산점도 그리기 — 만들고 나서야 보인 함정 3가지

    GrafanaCanvas APIReact
    3시간 전
  • 전시 QA에서 예약·정산 QA로 넘어가며 달라진 관점들

    QA-TestingData-ConsistencyState-Table
    3시간 전

Related reads#OpenTelemetry

Explore #OpenTelemetry
Airbnb

OpenTelemetry와 vmagent를 이용한 고대역폭 메트릭 파이프라인 구축

#OpenTelemetry5개월 전
카카오페이·ClickHouse

일 41TB, 200억 건의 로그를 ClickStack으로 실시간 처리하기 - 호그와트 도서관 프로젝트

#OpenTelemetry6개월 전

Source

여기어때
여기어때
Engineering Blog

Published · September 10, 2026

Topics

OpenTelemetryClickHouseAPMGrafanaData Pipeline