일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- BFS
- 예외처리
- DP
- thundering herd
- 타임아웃
- 트라이 자료구조
- 벌크헤드패턴
- Entity Manager
- session인증
- 알고리즘
- queue
- 슬라이스 테스트
- ddl-auto
- 백준
- 자바
- prg패턴
- 이분탐색
- 낙관적 락
- 베타락
- id생성
- java
- 이진탐색
- expired key
- 다중 서버
- 캐시 스탬피드
- Stack
- 스택
- 외부 서비스 장애
- 비관적 락
- JPA
- Today
- Total
Coding 01
로그와 메트릭이 무엇인가 본문
백엔드 시스템에서 로그와 메트릭은 시스템의 상태와 성능을 모니터링하고 문제를 해결하는데 도움을 받을 수 있는 중요한 요소이다.
로그란 서버가 동작할 때 서버의 상태와 동작 정보를 시간 경과에 따라 기록된 결과이다.
프로젝트를 진행할 때 로그를 찍어본다라는 말을 알 것이다. 이 로그를 사용하면 시스템의 오류와 문제들을 쉽게 찾아낼 수 있다.
주요 로그로는
ERROR: 심각한 문제나 오류 사항
WARN: 잠재적인 문제나 경고 사항
INFO: 일반적인 시스템 동작 정보
DEBUG: 개발자를 위한 상세 디버깅 정보
TRACE: 가장 상세한 수준의 로깅
System.out.println() 사용
가장 기본적인 방법이지만 권장되지 않는다.
SLF4j + Logback 사용(권장)
import로 slf4j를 받아 log.~ 을 사용하는 방법이다.
로그를 사용하면 개발할 때 상세정보, 로그 파일 관리 기능으로 유용하게 사용할 수 있다.
메트릭은 시스템의 상태와 성능을 수치화하여 측정하는 데이터이다.
서버, 애플리케이션을 계속해서 상태 체크를 한다고 생각하면 된다.
서비스를 운영한다 했을 때
접속자 수, 응답 속도, 서버 상태, 오류 발생률 이런 정보들을 수집해서 시각적으로 볼 수 있다.
실제 코드에서 메트릭을 측정하고 수집하는 부분을 구현하여 사용한다.
메트릭의 4가지 주요 유형이 있다.
Counter
계속 증가만 하는 값
예시로는 총 API호출 횟수, 전체 주문 수, 에러 발생 횟수가 있다.
Gauge
증가하거나 감속할 수 있는 값이다.
현재 상태를 나타낸다.
예시로는 접속자 수, 메모리 사용량, CPU 사용률이 있다.
Timer
작업 수행 시간을 측정
예시로는 API응답 시간, 데이터베이스 쿼리 시간, 파일 업로드 시간이 있다.
DistributionSummary(분포 요약)
크기나 양의 분포를 측정한다.
예시로는 파일 크기 분포, 주문 금액 분포, 페이로드 크기가 있다.
자바의 경우 Micrometer 라이브러리를 사용하여 메트릭 수집을 쉽게 할 수 있다.
Spring Boot프로젝트에서 의존성 추가, yml 설정 파일 추가하여 실제 메트릭을 사용할 수 있다.
이렇게 수집된 메트릭을 Prometheus + Grafana와 같은 모니터링 시스템을 통해 시각화를 하여 시각적으로 볼 수 있다.
실무에서는
application -> proemtheus(데이터 수집) -> grafana(시각화) 흐름으로 모니터링을 구성한다고 한다.
로그와 메트릭을 적절히 사용해서 문제를 빠르게 해결하고 파악할 수 있으니 사용해보면 좋을 것 같다.
'기술면접' 카테고리의 다른 글
일급 컬렉션에 대해서 (0) | 2024.12.04 |
---|---|
Checked Exception과 Unchecked Exception (0) | 2024.12.04 |
JPA의 N + 1 문제 (0) | 2024.12.02 |
엔티티 매니저란 무엇인가 (1) | 2024.11.29 |
JPA의 ddl-auto 옵션은 각각 어떤 동작을 하고 어떤 상황에 사용해야 하는가 (0) | 2024.11.28 |