시작하기
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 연동을 통한 다양한 기능 제공
시스템 구성
