1. 로그(Log)
로그는 시스템, 애플리케이션, 또는 서비스에서 발생한 이벤트, 동작, 오류 등을 기록한 텍스트 기반 데이터이다.
이벤트의 시간, 위치, 상태 등을 포함하고, 오류의 원인을 파악하는 데 쓰인다.
2. 메트릭(Metric)
메트릭은 시스템 또는 애플리케이션의 성능과 상태를 나타내는 수치 데이터이다.
주기적으로 수집되어 시간에 따른 변화를 분석할 수 있다.
대표적으로 CPU 사용률, 메모리 사용량, 스레드 풀, 데이터베이스 커넥션 풀 상태 등이 있다.
3. 로그와 메트릭을 수집해 본 적 있는가?
Spring Boot Actuator를 사용해 메트릭을 생성하고 Prometheus에 저장한 다음 그라파나로 시각화한 경험이 있다.
서버가 종료되거나, CPU 사용량, JVM 메모리, 톰캣 스레드 풀, 데이터베이스 커넥션 풀, 에러 로그가 특정 임계치를
넘기면 슬랙으로 알림을 보내도록 설정했다. 로그는 Loki에 보관하도록 설정했다.
4. 위의 메트릭을 수집한 이유는?
CPU, 메모리, 톰캣 스레드 풀, 데이터베이스 커넥션 풀 상태, error 로그 증가량을 수집한 이유는 애플리케이션의 성능과 안정성을 모니터링하고 잠재적인 문제(시스템 병목 현상, 리소스 부족, 장애 상황)를 조기에 발견하여 대응하기 위함이다.
- CPU: 사용률이 높다면, 스레드 수 조정, 코드 최적화, 인프라 확장이 필요하다.
- JVM 메모리: 힙 메모리가 지속적으로 증가하면 메모리 누수 가능성을 의심해야 한다.
- 스레드 풀: 과도하게 사용중이라면 scale-out, 비동기 처리(WebFlux)로 개선해야 한다.
- 커넥션 풀: 슬로우 쿼리를 찾고, 쿼리 튜닝을 해야 한다.
- error 로그: 급증하면 즉각적인 원인 분석과 대응이 필요하다.
References
https://www.maeil-mail.kr/question/66
'백엔드 면접 질문' 카테고리의 다른 글
서버 사이드 렌더링과 클라이언트 사이드 렌더링의 차이점은 무엇인가요? (0) | 2025.01.09 |
---|---|
TCP 3-way handshake에 대해서 설명해주세요. (0) | 2025.01.07 |
HTTP 메서드에서 멱등성(Idempotent)이란 무엇인가요? (0) | 2025.01.03 |
웹 브라우저에 www.google.com 을 입력했을 때 어떤 과정이 이뤄지나요? (0) | 2024.12.31 |
데이터베이스 커넥션 풀(Connection Pool)을 사용하지 않으면 어떤 문제가 발생할 수 있나요? (0) | 2024.12.26 |