-
Slack으로 로그 모니터링 시스템 구축하기Stack/Aws 2022. 12. 30. 16:47
도입배경
Cloud에 백엔드 서버를 배포 하면 로그 관리가 어렵다.
서버관리자나 백엔드인 경우에는 큰 무리없이 로그를 확인 할 수 있다.
하지만, 연차가 쌓인 프론트엔드 개발자와 프로젝트를 함께하다보니, 로그 모니터링을 얼른 구축해라는 요청을 자주 했다.
특히 CustomExceptiond으로 잡히지 않는 error의 로그를 보고 싶은 것 같았다.
그래서 로그 모니터링 시스템을 구축하기로 하였다.
도입근거
처음에는, Sentry 라는 통합 monitoring 시스템을 이용하려고 했다.
하지만, 무료 기간이 2주일 남짓이고, 우리 프로젝트는 최소한의 비용을 원했기에, 직접 구축하기로 했다.
물론 모든 통신을 구축 한것은 아니고, slack-web-hook-uri를 이용하는 방법이다.
무료이고, 소규모 프로젝트에서는 제한없이 사용이 가능하다.
도입과정
1. 채널을 새로 만든다.
monitor이라는 err-monitor 할 수 있는 채널을 만들었다.

2. 앱 추가를 한다
incoming Webhooks를 추가하면 된다.


3. webhook을 slack에 추가

4. 수신 채널을 새로 만든 monitor로 설정

5. WebHook uri를 복사한다.
이 값은 노출시키면 slack에서 이 uri를 벤을 시킨다.
github나 다양한 채널에 유출해서는 안된다.

6. Spring에서 세팅
이제 기본적인 인프라 세팅은 끝났다.
Spring에서 간단한 세팅만 하면 된다.
초보라면, 내가 시키는대로 하면된다.
resources에 logback-spring.xml파일을 만들고 복붙을 하시라.
커스텀을 추천하는 부분은
<username></username>의 이름을 변경이 가능하다.
<level>ERROR</level>의 경우는 전송할 log의 종류를 의미한다.
<?xml version="1.0" encoding="UTF-8" ?> <configuration> <springProperty name="SLACK_WEBHOOK_URI" source="logging.slack.webhook-uri"/> <appender name="SLACK" class="com.github.maricn.logback.SlackAppender"> <webhookUri>${SLACK_WEBHOOK_URI}</webhookUri> <layout class="ch.qos.logback.classic.PatternLayout"> <pattern>%d{yyyy-MM-dd HH:mm:ss.SSS} %msg %n</pattern> </layout> <username>f i n n's Monitor</username> <iconEmoji>:face_with_symbols_on_mouth:</iconEmoji> <colorCoding>true</colorCoding> </appender> <!-- Consol appender 설정 --> <appender name="Console" class="ch.qos.logback.core.ConsoleAppender"> <encoder> <Pattern>%d %-5level %logger{35} - %msg%n</Pattern> </encoder> </appender> <appender name="ASYNC_SLACK" class="ch.qos.logback.classic.AsyncAppender"> <appender-ref ref="SLACK"/> <filter class="ch.qos.logback.classic.filter.ThresholdFilter"> <level>ERROR</level> </filter> </appender> <root level="INFO"> <appender-ref ref="Console" /> <appender-ref ref="ASYNC_SLACK"/> </root> </configuration>마지막으로 application.properties 세팅이다
#Slack-log logging.slack.config=classpath:logback-spring.xml logging.slack.webhook-uri=https://hooks.slack.com/services~본인이-받은-uri-주소이렇게만 해주면 아주 쉽게 로그 모니터링이 세팅된다.
물론, 내가 진두지휘하고 있는 프로젝트는, 자동배포가 설정 되어있어, 저 uri를 빌드 시점에 넣어주는 로직이 추가 되어있지만, 기본 개념은 이 가이드와 동일하다.
끝
'Stack > Aws' 카테고리의 다른 글
[AWS]EC2 - S3 비용절감을 위한 안티패턴 개선 (1) 2023.05.17 aws codedeploy log 확인 (0) 2022.12.03 ec2 java install 커맨드 (0) 2022.11.28 https 인증서 발급+ 무료도메인+연결까지 (0) 2022.11.24 JAVA SPRING BOOT 시간 변경 (0) 2022.11.14