Observability 옵저버빌리티

2024. 12. 3. 22:32
728x90

시스템이, 해당 서비스가 잘 동작하고 있는지 파악하기 위해서는 모니터링을 해야 한다. 

 

1. Observability란?

- internal state system (app + infrastructure + network)

- 로그, 메트릭, 트레이스 등을 포함하는 데이터를 분석함으로서 시스템의 내부 상태를 파악하는 능력이다. 

- 디스크 사용량, CPU 사용량, 메모리 사용량, 성공 요청, 실패요청 등과 같은 정보들(what)과 그 이유(why), 어떻게 해결할지(how)를 알 수 있다. 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1) 메트릭 (Metrics) - WHAT

: 과거 이벤트 또는 정보 (CPU, 메모리, 디스크, 요청)

  • 메트릭명 (metric name)
  • 값 (metric value)
  • 메트릭 수집일시 (timestamp)
  • 태그 (tags)

- 상황 정보가 더해질 때 더욱 유용하게 활용이 가능하다.

ex) 하루 중 언제 CPU 사용량이 급격히 증가하는지 확인 가능.

 

- 4가지의 골든 시그널 - LETS

  • Latency 소요시간 : 요청을 처리하는데 얼마나 소요되었는지
  • Errors 실패한 요청 수 : 처리한 실패요청이 얼마나 되는지
  • Traffic 트래픽 : 서비스에 얼마나 많은 요청이 들어오고 있는지
  • Saturation 포화 : 현재 서비스가 얼마나 처리하고 있는지

>> 메트릭으로 에러를 파악했을 때에는!?

 

2) 로그 (Logs/Logging) - WHY

: 이벤트에 대한 기록. (info/ debug/ error/ trace)

- 문제가 발생하면 로그가 생성된다.

- 로그 메시지는 사람이 읽고 이해하기 쉬우며, 많은 부가 정보를 포함하고 있는 것이 장점이다. 

- JSON과 같은 정형화된 포맷으로 구성되어 있다면 로깅 플랫폼에서 쉽게 파싱하고 분석할 수 있다. 

 

>> 성능이 느리다는 VOC가 접수되고 있다.... 어떤 요청이 성능에 영향을 주는지 확인해볼 수 없을까? 

 

3) 트레이스 (Traces) - HOW

: 서로 연관된 메트릭들의 묶음 단위. 요청을 보냈을 때 서버로 들어오고 수행되는 애플리케이션의 로직 처리 정보.

- 클라이언트 -> 로드밸런서 -> 프론트 -> 백 -> DB 이러한 요청 혹은 트랜잭션의 플로우를 파악할 수 있어 디버깅, 트러블슈팅, 해결에 도움이 된다. 

- 간단히 라이브러리나 모듈을 임포트 해주면 된다. (기본 제공 X)

- 이 트레이스를 UI로 표현한 것을 Flame Graph라고 부른다. (한 눈에 문제점 확인 가능)

- 서비스 맵 : 서비스 간의 상관 관계. 점점 더 복잡해지는 서비스들이 서로 어떻게 어떤 상태로 통신하고 있는지 맵 형태로 표현. 

 

>> 여전히 VOC가 들어오는데, 특히 한 지역에서만 VOC가 들어온다면...?

 


+ 더 다양한 Observability

4) 신세틱 테스트 (Synthetic Testing) 

: 실제 엔드유저 환경과 유사한 조건에서 테스트를 수행해볼 수 있다. (프론트엔드 테스트)

이 때 하나의 리전에서도 테스트를 해볼 수 있다.

5) Real User Monitoring 

6) 대시보드 (Dashboards)

7) 알람 (Alerting) 

: 어떤 상황에 어떤 내용으로 누구한테 알려달라고 설정. 

- 반복적으로 뻔하게 대응해야 하는 프로세스가 생기기 마련인데, 이를 자동화하는 방법을 고려할 수도 있다. (workflow automation)

8) Security 보안관련 모니터링 

9) 생성형 AI

 

 


2. Monitoring vs. Observability

- 옵저버빌리티는 메트릭, 로그, 트레이스를 포함한다면 

- 모니터링은 메트릭을 말한다. (+알림, 대시보드) 즉, 모니터링은 옵저버빌리티의 한 부분이다. 

- 옵저버빌리티는 모니터링을 포함한 좀 더 넓은 개념.

카테고리 모니터링 옵저버빌리티
중점 모든 것이 기대한 대로 잘 작동하는지 확인 시스템에서 왜 어떤 일들이 일어나는지 이해
데이터 CPU 사용량, 메모리 사용량, 에러 비율과 같은 메트릭을 수집 전체 그림을 제공하기 위해 로그, 메트릭, 트레이스를 수집
알림 잘못된 경우 알림을 보낸다. 근본적인 이유를 식별하기 위해 이벤트와 변칙의 상관관계를 보여준다. 
예시 서버의 CPU 사용량이 90% 이상이 되었을 때, 알림을 받는다.  웹사이트가 느리면, 옵저버빌리티는 여러가지 서비스 중 병목 현상이 일어나는 유저의 요청을 찾도록 도와준다. 
인사이트 심각해지기 이전에 잠재적인 이슈들을 보여준다. 이슈들을 진단하고 시스템 전반을 이해하도록 도와준다.
도구 Prometheus, Grafana, Nagios, Zabbix, PRTG ELK Stack (Elasticsearch, Logstash, Kibana), EFK Stack (Elasticsearch, FluentBit, Kibana), Splunk, Jaeger, Zipkin, new Relic, Dynatrace, Datadog

 

 

 

 


이 글은 아래 유튜브 강의를 시청하고 정리한 글입니다. 

 

https://www.youtube.com/watch?v=wtQx2HYHWNM

 

https://www.youtube.com/watch?v=otY2_M_pTmU

 

728x90

BELATED ARTICLES

more