관측성 최적화 가이드

지원 버전: Amazon EKS 1.29+, OpenTelemetry 0.90+ 마지막 업데이트: 2026년 2월 23일


목차


1. 관측성 3대 축 개요

현대 클라우드 네이티브 환경에서 **관측성(Observability)**은 시스템의 내부 상태를 외부 출력을 통해 이해하는 능력입니다. EKS 환경에서 효과적인 관측성을 구현하려면 세 가지 핵심 축을 이해해야 합니다.

1.1 로깅, 메트릭, 트레이싱의 관계

spinner

1.2 각 축의 역할과 선택 기준

주요 역할
질문 유형
데이터 볼륨
비용 특성

로깅

이벤트 기록, 감사, 디버깅

"무엇이 일어났나?"

높음

저장 비용 높음

메트릭

시스템 상태 모니터링, 알림

"시스템이 정상인가?"

중간

카디널리티에 민감

트레이싱

요청 흐름 추적, 병목 분석

"왜 느린가?"

높음 (샘플링 필요)

샘플링률에 비례

1.3 EKS 관측성 아키텍처 전체 그림

spinner

2. 로깅 솔루션 비교

2.1 로그 저장소 비교

기준
CloudWatch Logs
OpenSearch
Loki
ClickHouse

비용

수집: $0.50/GB 저장: $0.03/GB/월

인스턴스 비용 + EBS r6g.large: ~$150/월

오브젝트 스토리지 비용 S3: $0.023/GB/월

인스턴스 + 스토리지 높은 압축률로 절감

성능

소규모 우수 대규모 지연

전문 검색 최적화 복잡한 쿼리 강점

레이블 기반 빠른 필터링 전문 검색 제한적

분석 쿼리 최적화 실시간 집계 우수

운영 복잡성

완전 관리형 운영 부담 최소

클러스터 관리 필요 튜닝 복잡

단순한 아키텍처 운영 용이

스키마 관리 필요 중간 복잡도

쿼리 기능

Logs Insights 기본적인 분석

Lucene 쿼리 강력한 전문 검색

LogQL 레이블 기반 필터링

SQL 기반 복잡한 분석 쿼리

확장성

자동 확장 제한 없음

수동 샤딩 노드 추가 필요

수평 확장 용이 오브젝트 스토리지 활용

샤딩 지원 페타바이트 규모

적합 사용 사례

AWS 네이티브 환경 간단한 로깅

복잡한 검색 요구 보안/컴플라이언스

비용 효율 중시 Grafana 통합

로그 분석/집계 장기 보관

2.2 로그 에이전트 비교

기준
Fluent Bit
Fluentd
Vector

메모리 사용량

~15MB

~60MB

~30MB

CPU 사용량

낮음

중간

낮음

처리량

최대 ~200K msg/s

최대 ~50K msg/s

최대 ~300K msg/s

언어

C

Ruby/C

Rust

플러그인 생태계

제한적이나 핵심 지원

매우 풍부

성장 중

설정 복잡도

낮음

중간

중간

EKS 통합

네이티브 지원

지원

지원

2.3 EKS에서 Fluent Bit + Loki 구성 예제


3. 메트릭 수집 및 저장

3.1 메트릭 저장소 비교

기준
Prometheus
VictoriaMetrics
AMP (Amazon Managed Prometheus)

확장성

단일 노드 수직 확장만

클러스터 모드 수평 확장

자동 확장 제한 없음

비용

인프라 비용만 EC2/EBS

인프라 비용 Prometheus 대비 절감

수집: $0.90/10M 샘플 저장: $0.03/GB/월

HA

별도 구성 필요 Thanos/Cortex

내장 복제 자동 장애 조치

완전 관리형 HA 다중 AZ

운영 오버헤드

높음 스토리지/확장 관리

중간 단순한 운영

낮음 AWS 관리

장기 저장

별도 솔루션 필요

내장 지원

무제한 보관

쿼리 성능

우수

매우 우수 (최적화된 엔진)

우수

PromQL 호환

네이티브

완전 호환 + 확장

완전 호환

3.2 Cardinality 관리 전략

**카디널리티(Cardinality)**는 고유한 시계열 수를 의미합니다. 높은 카디널리티는 메모리 사용량과 쿼리 성능에 직접적인 영향을 미칩니다.

3.3 Recording Rules로 쿼리 성능 개선

Recording Rules는 복잡한 쿼리를 미리 계산하여 저장합니다.

3.4 장기 저장 전략

spinner

4. 분산 트레이싱

4.1 OpenTelemetry 개요 및 아키텍처

OpenTelemetry(OTel)는 관측성 데이터(트레이스, 메트릭, 로그)를 수집하고 내보내기 위한 벤더 중립적 표준입니다.

spinner

4.2 트레이싱 백엔드 비교

기준
Grafana Tempo
Jaeger
AWS X-Ray

아키텍처

오브젝트 스토리지 기반 인덱스 없음

Elasticsearch/Cassandra 인덱스 기반

AWS 관리형 서버리스

비용

S3 저장 비용만 매우 저렴

인프라 비용 인덱스 스토리지

트레이스당 과금 $5/백만 트레이스

확장성

무제한 수평 확장

노드 추가 필요 인덱스 관리

자동 확장 제한 없음

쿼리 방식

TraceID 직접 조회 Exemplars 연계

태그 기반 검색 시간 범위 검색

서비스 맵 필터 검색

Grafana 통합

네이티브

지원

제한적

AWS 통합

별도 구성

별도 구성

네이티브 Lambda, ECS 등

적합 사용 사례

비용 효율 중시 Grafana 스택

복잡한 검색 요구 자체 인프라

AWS 네이티브 서버리스 환경

4.3 샘플링 전략

4.4 EKS에서 OTel Collector DaemonSet 구성

애플리케이션에서 OTel SDK 자동 계측 구성:


5. eBPF 기반 No-Code 모니터링

5.1 왜 eBPF 모니터링인가

**eBPF(extended Berkeley Packet Filter)**는 리눅스 커널에서 안전하게 프로그램을 실행할 수 있는 기술입니다. eBPF 기반 모니터링의 가장 큰 장점은 코드 수정 없이 관측성을 확보할 수 있다는 점입니다.

spinner
특성
전통적 계측
eBPF 계측

코드 수정

필요

불필요

배포 영향

재배포 필요

별도 배포

오버헤드

애플리케이션 레벨

커널 레벨 (매우 낮음)

언어 종속성

SDK별 지원 필요

언어 무관

커버리지

계측된 부분만

시스템 전체

유지보수

코드와 함께 관리

독립적

5.2 Coroot: 자동 서비스 맵 및 지연 시간 분석

Coroot는 eBPF를 활용하여 자동으로 서비스 맵을 생성하고 지연 시간을 분석합니다.

Coroot 주요 기능:

  • 자동 서비스 발견: eBPF로 네트워크 연결을 감지하여 서비스 맵 자동 생성

  • 지연 시간 분석: 각 서비스 간 지연 시간을 자동으로 측정

  • 리소스 사용량 추적: CPU, 메모리, 디스크 I/O를 서비스별로 분석

  • 로그 수집: 코드 수정 없이 애플리케이션 로그 수집

5.3 Pixie (현재 New Relic): Kubernetes 특화 관측성

Pixie는 Kubernetes 환경에 특화된 eBPF 기반 관측성 플랫폼입니다.

Pixie 주요 기능:

  • 즉시 사용 가능한 대시보드: 배포 즉시 HTTP, DNS, MySQL, PostgreSQL 등 자동 모니터링

  • PxL 스크립트: Python 유사 쿼리 언어로 커스텀 분석

  • 로컬 데이터 저장: 민감한 데이터가 클러스터를 떠나지 않음

  • 자동 암호화 분석: TLS 트래픽도 eBPF로 복호화하여 분석

5.4 Cilium Hubble: 네트워크 흐름 관찰

Cilium CNI를 사용하는 EKS 클러스터에서 Hubble은 네트워크 가시성을 제공합니다.

5.5 Kepler: 에너지 소비 모니터링

Kepler(Kubernetes Efficient Power Level Exporter)는 eBPF를 사용하여 워크로드의 에너지 소비를 측정합니다.

Kepler 메트릭 예시:


6. 비용 모니터링

6.1 KubeCost / OpenCost 설치 및 구성

OpenCost는 CNCF 프로젝트로, Kubernetes 비용 모니터링의 오픈소스 표준입니다.

6.2 네임스페이스/팀별 비용 할당

OpenCost API를 통한 비용 조회:

6.3 CloudWatch 비용 최적화

6.4 로그/메트릭 저장 비용 절감 전략

spinner
전략
적용 대상
예상 절감

로그 레벨 필터링

DEBUG/TRACE 로그 드롭

40-60%

샘플링

고빈도 이벤트

30-50%

압축

모든 로그/메트릭

60-80%

계층화 저장

오래된 데이터

70-90%

보존 기간 최적화

중요도 낮은 데이터

50-70%


7. 통합 관측성 대시보드

7.1 Grafana 기반 통합 대시보드 구성

7.2 로그 -> 메트릭 -> 트레이스 연계 (Exemplars)

Exemplars는 메트릭 데이터 포인트에 트레이스 ID를 연결하는 기능입니다.

애플리케이션에서 Exemplars 내보내기 (Go 예시):

7.3 알림 전략: 경고 피로 방지

7.4 SLO/SLI 기반 모니터링


8. 운영 과제와 해결 방법

8.1 로그/메트릭 저장 비용 폭증 대응

문제 상황
원인
해결 방법

로그 비용 급증

DEBUG 로그 과다

로그 레벨 필터링, 샘플링

메트릭 카디널리티 폭발

Pod UID, 타임스탬프 레이블

레이블 정리, 메트릭 드롭

트레이스 저장 비용

100% 샘플링

Tail Sampling 적용

장기 보관 비용

모든 데이터 동일 보관

계층화 저장 (Tiered Storage)

8.2 EKS Auto Mode 노드 모니터링

EKS Auto Mode에서는 노드가 자동으로 관리되므로 특별한 모니터링 전략이 필요합니다.

8.3 도구 간 데이터 상관관계 분석

spinner

8.4 대규모 클러스터에서 모니터링 시스템 성능 유지

8.5 고가용성 관측성 스택 구성

spinner

9. 모범 사례와 다음 단계

9.1 단계별 도입 전략

spinner
단계
구성 요소
소요 기간
비용
운영 복잡도

1단계 (기본)

CloudWatch 기반

1-2일

낮음

낮음

2단계 (중급)

Grafana 스택

1-2주

중간

중간

3단계 (고급)

OpenTelemetry + eBPF

2-4주

높음

높음

9.2 비용 대비 효과 분석

도구 조합
월 예상 비용 (100노드)
기능 커버리지
ROI

CloudWatch 전체

$500-1,000

기본

낮음

Prometheus + Loki + Grafana

$200-400 (인프라)

중급

중간

AMP + Tempo + eBPF

$300-600

고급

높음

상용 솔루션 (Datadog 등)

$2,000-5,000

전체

상황에 따라

9.3 체크리스트

관측성 구현 체크리스트:

9.4 관련 문서 및 퀴즈

관련 문서:

관련 퀴즈:


참고 자료

마지막 업데이트