OpenTelemetry와 ClickHouse 데이터 시각화를 위한 그라파나 커스텀 APM 산점도 패널 구현

ARCH-B

ARCH-B

여기어때 기술블로그 기반 · 2026년 10월 9일 · 5분 분량

0

한눈에 보는 핵심요약

여기어때 숙박플랫폼개선TF팀이 오픈텔레메트리와 클릭하우스에 적재된 대규모 트레이스 스팬 데이터를 효율적으로 시각화하기 위해 그라파나 커스텀 패널 플러그인을 개발한 사례를 공개했습니다. 기본 패널의 기능적 한계를 보완하고 10만 점 규모의 요청 지연 분포를 표현하기 위한 구조적 설계와 개발 방식을 다룹니다.

  • 상태별 색상 및 카테고리별 모양 분리, 드래그 영역 서버 재조회 등 내장 패널로 불가능한 APM 상호작용 요구를 커스텀 플러그인으로 해결했습니다.
  • 그라파나 공식 표준 구조(plugin.json, module.ts)를 준수하며 런타임 템포(Tempo) 연동을 위한 동적 커스텀 에디터를 구축했습니다.
  • 대규모 데이터 렌더링 부하 제어를 위해 서버 격자 집계와 사전 집계 롤업 설계를 적용했으나, 공개된 수치는 로컬 환경 검증 기록으로 프로덕션 부하 평가는 추가 확인이 필요합니다.
OpenTelemetry와 ClickHouse 데이터 시각화를 위한 그라파나 커스텀 APM 산점도 패널 구현
이미지 제공: 여기어때 기술블로그 · 원출처 기사

기본 시각화 도구의 상호작용 한계와 커스텀 플러그인 도입

여기어때 기술블로그를 통해 공개된 내용에 따르면, 개발팀은 오픈텔레메트리 컬렉터(OpenTelemetry Collector)로 수집해 클릭하우스(ClickHouse)에 저장한 개별 스팬 데이터를 직관적인 산점도(Scatter plot) 형태로 표현하는 작업을 진행했습니다. 요청별 응답 지연 시간의 전수 분포를 확인하기 위해서는 단일 요청을 점 단위로 나타내야 했지만, 그라파나에 내장된 기본 패널들로는 운영 요구사항을 충족하기 어려웠다고 밝혔습니다.

기존 타임 시리즈(Time series) 패널은 통상 시간 버킷 기반 집계 쿼리를 선으로 잇는 방식이라 개별 데이터의 분포 특성을 접어버리는 한계가 있었습니다. 히트맵(Heatmap)이나 XY 차트(XY chart) 역시 상태 코드(정상, 지연, 4xx, 5xx)에 따른 색상 구분과 호출 카테고리(HTTP In, 메시지 컨슈머, 스케줄러)에 따른 도형 모양 구분을 동시에 독립적으로 적용하기 어려웠습니다. 특히 화면에서 마우스 드래그로 이상 징후 구간을 지정했을 때 단순 브라우저 줌인이 아니라 서버로 해당 영역의 원본 목록을 재질의하는 상호작용은 기본 패널로 구현할 수 없었습니다.

공식 규격을 준수한 패널 플러그인 아키텍처와 식별자 관리

개발팀은 요구사항을 해결하기 위해 그라파나 커스텀 패널 플러그인을 직접 제작했습니다. 플러그인의 최소 필수 구성 요소는 공식 가이드라인에 규정된 메타데이터 파일 `src/plugin.json`과 프론트엔드 진입점 파일 `src/module.ts`입니다. 메타데이터에는 플러그인 유형, 명칭, 의존 버전, 고유 식별자(ID)가 명시됩니다.

그라파나 공식 문서에 따르면 플러그인 폴더와 식별자는 `<organization>-<pluginName>-<pluginType>` 형태의 표준 명명 규칙을 따르도록 권장됩니다. 이 식별자는 대시보드 JSON 구조, 프로비저닝 설정, 디렉터리 경로 전반에 결합되기 때문에 개발 초기 단계에서 신중하게 확정하지 않으면 변경 시 광범위한 파일 수정이 수반됩니다. 진입점인 `module.ts`에서는 `@grafana/data` 패키지의 `PanelPlugin` 인스턴스를 `plugin`이라는 고정된 이름으로 내보내며 리액트 컴포넌트와 제어 옵션들을 바인딩합니다.

ARCH.B 분석

동적 런타임 제어를 위한 커스텀 패널 에디터 구축

그라파나 패널 빌더가 지원하는 정적 입력 컴포넌트만으로는 관측성 도구 간 유기적인 연계 환경을 구성하기 어렵습니다. 점 하나를 클릭했을 때 관련 분산 추적(트레이스)이나 로그로 이동하려면 대상 데이터소스(Tempo 또는 Loki)의 UID를 패널 설정에서 지정할 수 있어야 하지만, 등록된 데이터소스 목록은 그라파나 실행 인스턴스마다 다르기 때문입니다.

여기어때 팀은 `builder.addCustomEditor` 메서드와 `StandardEditorProps` 인터페이스를 채택해 정적 설정의 한계를 보완했습니다. `@grafana/runtime`의 `getDataSourceSrv().getList()` API를 호출하여 브라우저 실행 시점에 등록된 데이터소스를 조회하고, 그중 분산 추적 시스템에 해당하는 항목만 필터링해 드롭다운 옵션으로 노출하도록 설계했습니다. 이는 하드코딩된 대시보드 설정을 지양하고 실행 환경에 유연하게 대응하는 커스텀 UI 개발 표준 패턴으로 평가할 수 있습니다.

ARCH.B 분석

대규모 렌더링 병목 완화 기법과 성능 검증 범위의 제약

10만 점 규모의 대용량 산점도를 프론트엔드에 렌더링할 때 발생하는 성능 저하는 시각화 도구의 대표적인 장애물입니다. 브라우저의 DOM 노드 수직 상승과 메모리 점유 문제를 완화하기 위해 저자는 서버 격자 집계, 사전 집계 롤업 테이블, 변경 구간에 대한 증분 조회, 화면 픽셀 단위당 시간 갱신을 제어하는 적응형 리프레시(Adaptive Refresh) 기법을 구조적으로 배치했습니다.

다만 실무 도입 관점에서 주의할 점은 공개된 성능 수치와 동작 검증의 범위가 '로컬 개발 환경에서의 실측'으로 한정되어 있다는 사실입니다. 실제 대규모 트래픽이 유입되는 프로덕션 환경에서의 클릭하우스 쿼리 레이턴시(p95/p99), CPU 및 메모리 리소스 소비량, 클라이언트 브라우저의 렌더링 프레임(FPS) 저하 여부 등은 기재되지 않았습니다. 따라서 사내 인프라에 동일 아키텍처를 도입할 때는 상용 환경 지표를 별도로 계측하고 검증하는 절차가 필수적입니다.

ARCH.B 분석

엔터프라이즈 모니터링 적용 시 고려할 점과 확인 필요 사항

자체 제작한 APM 산점도 패널은 기존 관측 플랫폼(Datadog, Scouter 등)의 핵심 기능을 오픈소스 기반(OpenTelemetry, ClickHouse, Grafana)으로 내재화하려는 조직에 실질적인 레퍼런스를 제공합니다. 특히 드래그 선택 시 서버 재질의 방식을 택함으로써 클라이언트 렌더링 한계치를 초과해 유실될 수 있는 원본 요청을 정확히 확보할 수 있다는 점은 심층 분석에 유용합니다.

그러나 해당 플러그인의 소스 코드가 깃허브(GitHub) 공개 저장소나 그라파나 공식 마켓플레이스에 배포되었는지 여부는 확인되지 않았습니다. 현재로서는 기술블로그에 서술된 아키텍처와 코드 조각을 참고하여 각 조직이 자체적으로 플러그인을 구현해야 하는 상태입니다. 향후 공식 패키징 배포 여부 및 프로덕션 환경의 장기 부하 테스트 결과가 추가로 공개되는지 지켜볼 필요가 있습니다.

출처

여기어때 기술블로그의 원출처와 본문에 표시한 참고자료를 바탕으로 한국어로 재구성했습니다. ‘ARCH.B 분석’은 자료를 읽고 덧붙인 편집 해석입니다.

OpenTelemetry + ClickHouse 로 APM 스캐터 차트 만들기[2편] — Grafana 커스텀 패널 (새 창)

Share

Related

함께 읽기 좋은 글

상용 APM 의존 벗는 산점도 파이프라인: OpenTelemetry와 ClickHouse 설계

개발

상용 APM 의존 벗는 산점도 파이프라인: OpenTelemetry와 ClickHouse 설계

여기어때 숙박플랫폼개선TF팀이 오픈소스 표준인 OpenTelemetry와 컬럼형 DBMS인 ClickHouse를 활용해 상용 APM 수준의 분산 추적 스캐터 차트를 구축하는 아키텍처를 공개했습니다. 개별 지연 분포를 시각화하기 위한 SpanKind 분류 기준과 MergeTree 스토리지 최적화 방안이 제시되었습니다.

2026. 10. 11.

클라우드플레어, 에지 전 구간 관측하는 '트레이시스' 오픈 베타 출시… WAF·캐시부터 오리진까지 추적

개발

클라우드플레어, 에지 전 구간 관측하는 '트레이시스' 오픈 베타 출시… WAF·캐시부터 오리진까지 추적

클라우드플레어가 프록시 및 에지 계층 전체의 요청 흐름을 OpenTelemetry 호환 스팬으로 기록하는 '클라우드플레어 트레이시스(Cloudflare Traces)' 오픈 베타를 공개했습니다. W3C 분산 추적 표준과 데이터 볼륨 기반 과금제를 도입해 풀스택 관측성을 확장했으나, 일부 보안 제품군과 비동기 파이프라인의 스팬 누락 등 실무 적용 시 유의해야 할 한계도 명확합니다.

2026. 10. 11.

GitHub Copilot 텔레메트리, 사용자 식별과 프롬프트·도구 내용 수집을 분리

개발

GitHub Copilot 텔레메트리, 사용자 식별과 프롬프트·도구 내용 수집을 분리

GitHub가 관리 설정에서 Copilot 활동의 사용자·기기 식별 정보와 다섯 종류의 내용 수집을 독립 제어하도록 확장했다. 각 수집 항목은 기본적으로 꺼져 있으며 명시적 관리 값이 로컬 설정보다 우선한다. CLI·앱·VS Code의 실행 방식에 따라 적용 범위도 다르다.

2026. 10. 15.