예전 포스팅에서 다루었듯,
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 |