Skip to main content

시작하기

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 연동을 통한 다양한 기능 제공

시스템 구성