도입 계기

서버에 에러가 발생하면 직접 SSH 접속 후 도커 컨테이너의 로그를 출력해 확인해야 했다.

스크린샷 2024-11-16 120314.png

이러한 불편함을 겪은 후,

브라우저에서 로그를 확인하고, 필터링 할 수 있도록 해야겠다고 생각했다.

사전 준비

Pino 라이브러리를 사용해 로그를 json 포맷으로 작성

https://github.com/iamolegga/nestjs-pino

Docker-compose 를 사용해 ELK 스택을 실행할 수 있도록 설정된 레포지토리를 클론해 사용

https://github.com/deviantony/docker-elk

설정

아래와 같이 설정 스크립트를 작성해, 환경 이전에 쉽게 대처할 수 있도록 하였다.

web09-DailyRoad/backend/resources/scripts/elk at develop · boostcampwm-2024/web09-DailyRoad

스크립트 내용은 아래와 같다.

  1. 필요 패키지 업데이트 및 설치 : docker, docker-compose
  2. 위 레포지토리 클론
  3. .env 파일에 사용할 패스워드를 설정
  4. Logstash pipeline 설정 파일 복사
  5. 초기 사용자 및 권한 설정 ( 위 레포지토리에서 제공 )
  6. ELK 스택 시작
  7. Logstash 에게 추가로 인덱스 작성 권한 부여
  8. Elasticsearch인덱스 템플릿 등록