아키텍처

최종 수정: 2026. 1. 16.

아키텍처

Skuber+ Observability는 3-Tier 분산 아키텍처로 설계되어 멀티클러스터 환경에서 효율적으로 관측성 데이터를 수집하고 분석합니다.


개요


3-Tier 구성

Tier 구성 요소 역할
Tier 1 Agent Clusters (N개) 메트릭, 로그, 트레이스 수집
Tier 2 Host Cluster 데이터 수신, UI 제공, API 서비스
Tier 3 External ClickHouse 데이터 저장 및 쿼리 처리

ClickHouse를 별도 VM으로 분리하는 이유:

  • 성능 격리: 대용량 쿼리가 Kubernetes 클러스터 리소스에 영향을 주지 않음
  • 확장성: ClickHouse만 독립적으로 스케일 아웃 가능
  • 운영 안정성: 클러스터 장애 시에도 데이터 보존
  • 백업 용이성: VM 스냅샷으로 간편한 백업/복구

Host Cluster

Host Cluster는 중앙 수집 서버로, Agent Cluster에서 전송된 텔레메트리 데이터를 수신하고 External ClickHouse로 전달합니다.

주요 컴포넌트

컴포넌트 포트 역할
Nginx Proxy :80 (내부), :8080 (외부) 요청 라우팅, Same-Origin 정책 해결
UI & Backend :3000 (Frontend), :8080 (Backend) 메트릭/로그/트레이스 대시보드 UI 및 API
OTel Collector Gateway :4317 (LoadBalancer) OTLP 데이터 수신 및 ClickHouse로 전송
o11y-core API :3001 (ClusterIP) Service Map API, 과금 정보 집계

Nginx 라우팅

Nginx Proxy는 경로 기반으로 요청을 라우팅합니다:

경로 패턴 대상 용도
/api/v1/servicemap/* o11y-core (:3001) Service Map API
/* (그 외) UI & Backend (:8080) 대시보드 UI 및 기본 API

External ClickHouse

ClickHouse는 Host Cluster 외부의 별도 VM에 배포됩니다. 환경에 따라 두 가지 구성을 선택할 수 있습니다.

옵션 1: 단일 VM (Standalone)

소규모 환경 또는 개발/테스트 환경에 적합합니다.

구성:

항목
VM 수 1대
권장 사양 8+ cores, 32GB+ RAM, SSD 500GB+
포트 9000 (TCP Native), 8123 (HTTP)
데이터 경로 /var/lib/clickhouse

장점:

  • 간단한 설치 및 운영
  • 비용 효율적

단점:

  • 단일 장애점 (SPOF)
  • 수평 확장 불가

옵션 2: 클러스터 구성 (High Availability)

프로덕션 환경에 권장됩니다.

구성:

구성 요소 VM 수 역할
ClickHouse Shard 2+ 데이터 분산 저장
ClickHouse Replica 샤드당 2+ 데이터 복제 (HA)
ClickHouse Keeper 3 (별도 VM 권장) 메타데이터 관리, 리더 선출

샤드 VM 권장 사양:

항목
CPU 16+ cores
RAM 64GB+
스토리지 NVMe SSD 1TB+
네트워크 10Gbps+

Keeper VM 권장 사양:

항목
CPU 4+ cores
RAM 8GB+
스토리지 SSD 50GB+
VM 수 3대 (별도 VM 권장)

장점:

  • 고가용성 (노드 장애 시 자동 복구)
  • 수평 확장 가능 (샤드 추가)
  • 읽기 성능 향상 (복제본 분산 읽기)

단점:

  • 복잡한 설치 및 운영
  • 더 많은 리소스 필요

ClickHouse 데이터베이스 구조

데이터베이스 용도
signoz_metrics 메트릭 시계열 데이터
signoz_logs 로그 데이터
signoz_traces 분산 트레이스 데이터

주요 테이블 (signoz_traces):

테이블 용도
signoz_index_v3 트레이스 인덱스
network_map_connections 서비스 간 연결 정보 (Service Map)
pod_workload_map_dict Pod IP → Workload 매핑
cluster_service_dict Service IP → Service 매핑
cluster_nodes_dict 클러스터 → 노드 매핑

Agent Cluster

Agent Cluster는 모니터링 대상 Kubernetes 클러스터입니다. 각 Agent Cluster에 다음 컴포넌트가 설치됩니다:

컴포넌트 배포 형태 역할
OTel Collector DaemonSet + Deployment 메트릭/로그/트레이스 수집 및 Host Cluster로 전송
APM Agent DaemonSet eBPF 기반 제로 코드 자동 계측, 네트워크 플로우 수집
kube-state-metrics Deployment Kubernetes 리소스 상태 메트릭 노출
OpenTelemetry Operator Deployment 자동 계측 관리

OTel Collector 구성

DaemonSet (각 노드에서 실행):

  • hostmetrics: 시스템 메트릭 (CPU, 메모리, 디스크, 네트워크)
  • kubeletstats: 노드/파드/컨테이너 메트릭
  • filelog: 파드 로그 수집

Deployment (클러스터당 1개):

  • kube-state-metrics: Kubernetes 리소스 상태 수집
  • k8s_cluster: 노드 allocatable, conditions 수집
  • k8sEvents: Kubernetes 이벤트 수집

데이터 플로우

수집 경로


네트워크 요구사항

필수 포트

구분 소스 대상 포트 프로토콜 용도
Agent → Host Agent Cluster OTel Gateway 4317 gRPC OTLP 데이터 전송
Host → ClickHouse Host Cluster ClickHouse VM 9000 TCP 데이터 저장 (Native)
Host → ClickHouse Host Cluster ClickHouse VM 8123 HTTP 데이터 쿼리
User → UI 사용자 Nginx Proxy 8080 HTTP UI 접근

클러스터 구성 시 추가 포트

구분 소스 대상 포트 프로토콜 용도
CH 간 복제 ClickHouse ClickHouse 9009 TCP 데이터 복제
Keeper 통신 ClickHouse Keeper 9181 TCP 메타데이터 동기화
Keeper 간 Keeper Keeper 9234 TCP Raft 합의

보안 권장사항

  • Agent → Host 간 OTLP 통신에 TLS 적용 권장
  • ClickHouse 접근은 Host Cluster IP로 제한 (방화벽)
  • ClickHouse 기본 포트(9000, 8123) 변경 권장
  • LoadBalancer 앞에 방화벽 또는 인그레스 컨트롤러 구성

Skuber+ Client 연동

Skuber+ Client는 데스크톱 애플리케이션으로, Observability 플러그인을 통해 UI에 접근합니다:


배포 시나리오별 권장 구성

환경 Agent 클러스터 ClickHouse Keeper
개발/테스트 1-2개 단일 VM 불필요
스테이징 2-5개 단일 VM 또는 2 Shard 3대 (선택)
프로덕션 5개 이상 2+ Shard, 복제 구성 3대 (별도 VM)

다음 단계

  • 주요 기능 - 제공되는 기능 상세 확인
  • Host 클러스터 설치 - Host 클러스터 설치 가이드
  • Agent 클러스터 설치 - Agent 클러스터 설치 가이드
  • ClickHouse 설정 - ClickHouse 구성 상세