Home
home

08. Amazon EKS - Observability

1. Observability 란?

: Observability는 시스템 내부 상태를 외부에서 관찰하는 새로운 접근법으로 발생 가능한 근본 원인을 파악하는 관찰자 역할을 수행합니다. 이를 통해 복잡한 분산 시스템에서 문제가 발생했을 때 원인을 빠르게 파악하고 조치할 수 있는 필수적인 개념입니다.
쿠버네티스 환경에서 Observability
쿠버네티스는 유동적으로 변화하는 환경으로 파드나 노드나 서비스 등이 지속적으로 생성되거나 삭제됩니다.
이러한 복잡한 분산 시스템 환경에서는 단순한 모니터인으로 문제를 효율적으로 해결하기 어렵습니다.
Observability는 시스템의 상태를 더 깊이 이해하고, 다양한 현상의 원인을 파악하고 신속히 해결하는 데 도움을 줍니다.
Monitoring과 Observability의 차이점
Monitoring
시스템의 상태를 추적하고 경고를 설정하여 문제 발생을 알리는 역할
사전에 정의된 메트릭 데이터에 의존하여 동작
[What, When] 문제가 무엇이고 언제 발생했는지 초점
Observability
시스템 내부 상태를 이해하고 문제의 원인을 파악하는 초점
메트릭, 로그, 트레이스 데이터를 활용해서 동작
[Why, How] 문제가 왜 발생했는지 어떻게 발생했는지 초점
구분
Monitoring
Observability
목적
문제 감지
원인 분석
데이터 유형
메트릭
메트릭, 로그, 트레이스
질문 관점
“문제가 있습니까?”
“왜 문제가 발생했습니까?”
[Caption] Monitoring vs Observability
Monitoring은 전체 시스템을 이해하고 대응하는데 빙산에 일각에 불과합니다. Observability는 Monitoring를 포함한 큰 범주로 이해할 수 있습니다.

2. Observability 3대 구성 요소

: Observability는 메트릭, 로그, 트레이스 세 가지 데이터 유형으로 구분할 수 있습니다.
메트릭 (Metrics)
[정의]
시간 주기에 따라 측정되는 시계열 수치 데이터
시스템 성능 및 상태를 수치화한 데이터
[적용 사례]
CPU, 메모리 등의 리소스 사용량 추적
SLA(Service Level Agreement) 준수 확인
로그 (Logs)
[정의]
시간 순서에 따라 텍스트로 저장되는 데이터
시스템 프로세스 별로 발생하는 이벤트의 기록
[적용 사례]
오류 메시지 확인 및 예외 상황 분석
애플리케이션 동작의 흐름 분석
트레이스 (Traces)
[정의]
사용자 요청이 처리될 때 까지 전체 스택을 추적
분산 시스템에서 요청이 각 서비스 간을 이동하는 경로와 시간을 추적
[적용 사례]
특정 서비스 호출 간 병목 현상 파악
요청 지연에 따른 포인트 확인

3. Observability 기본 아키텍처

: 큰 그림에서 Observability 구조를 이해할 때 3가지 주요 구성 요소를 분류해서 이해할 수 있습니다.
주요 구성 요소
1.
Collector
메트릭, 로그, 트레이스 데이터를 수집하여 Backend System으로 전달
2.
Backend System
수집된 메트릭, 로그, 트레이스 데이터를 저장하고 처리하는 역할
3.
Visualization
데이터를 시각적으로 표현하여 사용자가 쉽게 이해할 수 있도록 표출
아키텍처 흐름
[Application] → 수집 → [Collector] → 전달 → [Backend System] ← 쿼리 ← [Visualization]
EKS Observability 주요 도구
구분
Collector
Backend System
Visualization
메트릭
Prometheus Telegraf OpenTelemetry
Prometheus Mimir InfluxDB VitoriaMetrics
Grafana Kibana
로그
Promtail & Alloy (Loki) Fluentd Logstash OpenTelemetry
Loki ElasticSearch
Grafana Kibana
트레이스
Jaeger Zipkin OpenTelemetry
Tempo Jaeger Zipkin
Grafana Jaeger UI Zipkin UI

4. 결론

EKS에서 Observability는 쿠버네티스 클러스터와 애플리케이션의 상태를 효과적으로 파악하고 문제를 해결하기 위한 필수적인 구성 요소입니다.
메트릭, 로그, 트레이스를 활용하여 시스템 내부 상태를 깊이 이해할 수 있습니다.
위에서 언급한 다양한 도구들을 조합하여 유연한 Observability 아키텍처를 구축할 수 있습니다.