Skip to content

백엔드 로그 모니터링 구성도

Moly edited this page Oct 2, 2024 · 5 revisions

로그 모니터링

로그 모니터링 필요이유

  1. 직접 EC2 서버에 접속하지 않고도 로그를 확인할 수 있다.
  2. 로그를 분류하고 필터링 하여, 더 쉽게 조회할 수 있다

로그 모니터링 구성 흐름

  1. 생성 (Spring 애플리케이션, Nginx 웹 서버의 로그)
  2. 수집 (Promtail)
  3. 전송 (Promtail → Loki)
  4. 저장 및 인덱싱 (Loki)
  5. 조회 및 시각화 (Grafana)

로그 모니터링 구성도

구성 파헤치기

1. 로그 생성 (Code-zap EC2 Instance)

  • SLF4J와 Logback을 사용하여 지정된 폴더에 Spring 애플리케이션 로그가 생성
  • Nginx 실행 시 기본적인 로그 설정이 제공
    • 접근 로그(access log)와 오류 로그(error log)가 각각 별도의 파일로 저장

2. 로그 수집 (Promtail)

Promtail은 Code-zap EC2 Instance에서 실행

  • 로그 파일들을 지속적으로 모니터링하고 새로운 로그 항목을 감지

설정 파일(promtail-config.yml)을 통해 모니터링할 로그 파일들을 지정합니다. 예시 설정:

yamlCopyscrape_configs: # 수집할 대상들의 설정을 정의
  - job_name: system
    static_configs: # 동적으로 변하지 않는 로그 소스
    - targets:
        - localhost # 로그를 수집할 대상을 지정
      labels:
        job: varlogs
        __path__: /var/log/*log # 수집할 로그 파일의 경로
  - job_name: code-zap
    static_configs:
    - targets:
        - localhost
      labels:
        job: code-zap
        __path__: /var/log/code-zap/*log

3. 로그 전송 (Promtail → Loki):

  • Promtail은 감지한 새로운 로그 항목을 Loki 서버로 전송
    • HTTP POST 요청을 통해 Loki 서버(Code-zap-monitoring EC2 Instance)로 로그를 전송

4. 로그 저장 및 인덱싱 (Loki)

Loki는 Code-zap-monitoring EC2 Instance에서 실행

  • Promtail로부터 받은 로그 데이터를 저장하고 인덱싱
    • 라벨을 기반으로 인덱스를 생성

5. 로그 조회 및 시각화 (Grafana):

Grafana도 Code-zap-monitoring EC2 Instance에서 실행

  • Loki를 데이터 소스로 설정
    • Loki에 저장된 로그에 접근
  • Grafana 대시보드를 통해 로그를 확인 가능
    • 쿼리 실행
    • 시각화
    • 알림 설정

500 대 에러 발생 시 5분동안 Pendig 후 Slack - 그라파나로 알람이 갑니다.

⚡️ 코드zap

프로젝트

규칙 및 정책

공통

백엔드

프론트엔드

매뉴얼

백엔드

기술 문서

백엔드

프론트엔드


Clone this wiki locally