
Monitoring은 시스템 상태를 지속적으로 감시하는 활동을 의미한다. CPU 사용률, 메모리 사용량, 요청 수, 에러 발생 여부와 같은 사전에 정의된 지표를 수집하고, 특정 임계값을 초과하면 알림을 발생시키는 방식이 일반적이다. Monitoring의 목적은 시스템이 정상 상태인지 여부를 빠르게 판단하는 데 있다.
이 방식은 명확하고 효율적이지만 한 가지 한계를 가진다. Monitoring은 미리 정의된 문제만 감지할 수 있다. 예상하지 못한 장애가 발생하거나 여러 서비스 간 상호작용으로 문제가 발생하는 경우에는 원인을 파악하기 어렵다.
Observability는 이러한 한계를 보완하기 위한 개념이다. Observability는 시스템 내부 상태를 외부에서 수집한 데이터만으로 이해할 수 있는 능력을 의미한다. 단순히 이상 여부를 감지하는 것을 넘어, 문제가 발생했을 때 어떤 요청에서 시작되었고 어느 구간에서 지연이 발생했으며 어떤 조건에서 오류가 발생했는지를 분석할 수 있어야 한다.
| 구분 | Metrics | Logs | Traces |
|---|---|---|---|
| 데이터 형태 | 시간 기반 수치 데이터 | 이벤트 기록 | 요청 흐름 정보 |
| 목적 | 시스템 상태 파악 | 사건 분석 | 지연 구간 분석 |
| 주요 질문 | 현재 상태는 정상인가 | 무엇이 발생했는가 | 어디에서 느려졌는가 |
| 데이터 특성 | 집계 가능, 경량 | 상세 정보 포함 | 서비스 간 관계 표현 |
| 사용 시점 | 모니터링, 알람 | 디버깅 | 성능 분석 |
| 대표 저장소 | Prometheus | Loki / Elasticsearch | Tempo / Jaeger / Jipkin |
Grafana는 Metrics, Logs, Traces 데이터를 통합해 시각화하는 플랫폼이다. 데이터 저장 기능은 포함하지 않으며, 외부 데이터 저장소에 연결해 조회 결과를 대시보드 형태로 표현한다.
일반적으로 Metrics는 Prometheus, Logs는 Loki, Traces는 Tempo에 저장되며, Grafana는 이들 데이터소스를 단일 인터페이스에서 통합적으로 조회할 수 있는 환경을 제공한다. 대시보드 구성, 데이터 탐색, 알람 설정 기능 Grafana에서 처리할수 있다.