본문으로 건너뛰기

시작하기

Observability 란?

옵저버빌리티(Observability)는 시스템의 내부 상태를 외부에서 관찰할 하는 것을 의미합니다.
기존 모니터링이 세세히 살펴보는 것이라면, 옵저버빌리티는 멀리서 지켜보는 것과 같은 방식으로 시스템의 전반적인 상태를 한눈에 파악할 수 있게 해줍니다.
클라우드 네이티브 환경으로 변화하면서 전통적인 3-tier 아키텍처(WEB, WAS, DB)와 달리 복잡도가 높아졌고 구조를 한 눈에 파악하기 어려워졌습니다. 이런 복잡한 환경에서 가장 중요한 것은 빠른 서비스 개선과 안정적인 서비스 운영입니다. 또한, MSA 환경에서는 각 팀별로 서비스만 제공하면 되기 때문에 다양한 언어들이 사용 될 수 있고. 이를 통합적으로 모니터링할 수 있어야 합니다.
Observability 는 이를 실현하기 위한 핵심 도구입니다.

오픈소스 Observability의 3대 요소

Metrics - Prometheus, Grafana
Tracing - Jaeger, Zipkin
Logging - Loki, EFK, ELK

오픈소스는 개별적으로 설치/구성하여야 하지만, Observability에서는 해당 3대 요소를 통합하여 한 눈에 볼수 있도록 지원하며, 추가로 Profiling 기능을 제공합니다.

주요 기능

실시간 모니터링

  • 애플리케이션 성능: 응답 시간, 처리량, 오류율 실시간 추적
  • 시스템 리소스: CPU, 메모리, 네트워크, 디스크 사용량 모니터링
  • 네트워크 분석: TCP 연결, 재전송, 지연 시간 등 상세 분석
  • 알림 및 인시던트: 임계값 기반 자동 알림 및 장애 대응

서비스 토폴로지

  • 자동 서비스 맵: 서비스 간 호출 관계 자동 탐지
  • 의존성 분석: 업스트림/다운스트림 서비스 영향도 분석
  • 트래픽 흐름: 실시간 트래픽 패턴과 병목 지점 시각화

Continuous Profiling

  • 운영 환경 프로파일링: 적은 오버헤드로 운영 중에도 성능 분석
  • 시스템 레벨 진단: 커널 레벨까지 분석하여 근본 원인 파악

Zero-Instrument Observability

  • 에이전트: 애플리케이션에 추가 에이전트 설치 없이 자동으로 정보를 수집
  • 다양한 언어 지원: Java, Golang, Python, Node.js, .NET, C, Ruby, PHP 등등 언어를 지원

호환

OPENMARU APM

  • OPENMARU APM과 통합되어 실시간 애플리케이션 성능 모니터링 제공

Open Telemetry

  • 분산 추적 등 Open Telemetry 연동을 통한 다양한 기능 제공

시스템 구성