
예전 포스팅에서 다루었듯,
TIFY 프로젝트에서는 서버 에러를
Slack 웹훅으로 받아 Slack에서 확인할 수 있도록 하였다.
에러 로그 말고도
어플리케이션에서 발생하는 쿼리, 트랜잭션 로그와 같은
쓸만한 로그를 보고 성능 개선 / 분석을 할 수 있으니
로그를 쉽게 확인하는 것이 요즘 들어 매우 중요하다고 생각이 들더라,,
그러나 (서버가 한대인데도) Docker 컨테이너 로그를 확인하는 과정이
귀찮아서 막상 잘 들여다 보지 않았었고,
심지어 위 사진에서 볼 수 있듯
필자의 프로젝트에는 Spring Boot 서버가 3개나 돌아가고 있다.
그래서...
0) Effective Log Search & Analytics(ELSA)란?

Effective Log Search & Analytics를 도입하기로 했다!
Effective Log Search & Analytics는 네이버 클라우드에서 제공하는 서비스로,
여러 개의 서버에서 발생하는 로그를 모아 볼 수 있고,
로그를 시각화까지 할 수 있는 서비스이다.
이 서비스를 사용하기 위해 NAT Gateway까지 뚫었고 -> [관련 포스팅]
오래된 서비스라 그런지 업데이트도 없어보이고..
꽤 고생하면서 적용시킨 서비스이다.
1) 어플리케이션에 적용하기 전 준비
1-1) SDK 다운로드
바로 위 사진의 설명에도 나오듯이
클라우드 서비스 콘솔에서 Repository를 만들고
어플리케이션 내부에 전용 SDK를 놓아두면 Repository에 로그가 전송된다.

링크에서 SDK를 다운받을 수 있는데,
필자는 nelo2-java-sdk-log4j-1.6.6과 nelo2-java-sdk-logback-1.6.6을 다운로드했다.
1-2) 프로젝트에 SDK 추가

프로젝트 내부에 아무 디렉토리나 만들어 다운받은 SDK를 위치시킨다.
1-3) ELSA Repository 생성

네이버 클라우드 콘솔의
Effective Log Search & Analytics 서비스에서 Repository를 생성한다.
Object Storage에 로그들을 저장하고 싶다면 하단의 Log Export를 설정하면 된다.
2) 어플리케이션 적용하기
어플리케이션 적용에 앞서,
필자가 진행한 프로젝트의 경우
spring.profiles.active의 local, dev를 확실히 나누고자 했다.
github 참고 ⬅️ 이 링크의 application-local.yml과 application-dev.yml의 차이점을 보면 알 수 있다.
local 개발환경에서 일어나는 로그들은 ELSA에 전송하지 않고,
dev, 즉 배포되는 최종 단계(?)의 어플리케이션에서 발생하는 로그들만 ELSA에 전송하려 한 것이다.
이에 대한 부가적인 설명은 이전 포스팅의 0-1에서 확인할 수 있다.
2-1) build.gradle 의존성 추가
네이버 클라우드 공식 사이트에는 xml로 나와있으므로
이를 build.gradle의 형식으로 알맞게 의존성을 추가해주어야 한다.
dependencies {
implementation files("libs/nelo2-java-sdk-core-1.6.6.jar")
implementation files("libs/nelo2-java-sdk-logback-1.6.6.jar")
implementation('org.apache.thrift:libthrift:0.9.3') {
//Commons-logging 충돌로인한 삭제
exclude group: 'commons-logging', module: 'commons-logging'
}
}
네이버 ELSA가 사용하는 commons-logging과
Spring Boot 3이 사용하는 commons-logging이 충돌이 나서
exclude 해주었다.
2-2) logback.xml 파일 추가

파일의 내용은 github 참고 링크에 있다.
네이버 클라우드 공식 사이트를 참고하여
프로젝트에 맞게 xml 파일을 구성하면 되겠다.
3) 실행 테스트

로그들이 ELSA 웹 어플리케이션으로 나타난다.
원하던 대로 로그들이 잘 모이는 걸 확인하니 뿌듯하더라..
위 사진에 나오는 것처럼
Papago Translation을 배포 환경에서 테스트할 때
ELSA 덕을 톡톡히 보았다.
이는 추후 Papago Translation API 포스팅에서 써보려 한다.
Slack 웹훅으로만 서버의 로그를 뽑아낼 수 있다고만 생각했는데
ELSA 같은 서비스를 알아보게 되었는데
AWS CloudWatch Logs가 비슷한 것 같았다.
나중에 적용할 때에 조금 수월하지 않을까.. 생각이 든다!
'🎉 프로젝트 > 🍀 Naver Cloud' 카테고리의 다른 글
| [NCP] 어플리케이션 성능 모니터링하기 with Pinpoint (0) | 2024.01.31 |
|---|---|
| [NCP] public area - private area 간의 통신 가능하게 하기 with NAT Gateway (1) | 2024.01.30 |
| [NCP] 무중단 배포 환경 구축하기 with Jenkins (0) | 2024.01.15 |
| [NCP] Oriental Unity 프로젝트 (0) | 2024.01.15 |
| [NCP] Multipart 파일 업로드 with Object Storage (2) | 2023.10.02 |