DevOps

2. 서비스에 APM을 적용해보자 - 슬랙 연동하기

dev.yong 2021. 4. 19. 17:27

 

 

이전글 [서비스에 APM을 적용해보자 - APM선택과 설치]에는 스카우터를 설치 및 실행까지 했다.

 

스카우터 클라이언트 프로그램을 띄워놓고 하루종일 모니터만 볼 수는 없기 때문에 서비스에 문제가 발생하면 메신저로 알람을 발송해보자

 

스카우터에서는 서버의 문제가 발생하거나 서버오류가 발생했을 때, 슬로우 쿼리가 발생했을 때와 같이 문제가 발생하면 알림을 보낼 수 있는 플러그인을 제공하고 있다. (슬랙/텔레그램/이메일/팀업/딩톡)


슬랙 메신져를 업무용으로 사용하고 있기 때문에 슬랙 플러그인을 적용해보았다.

 

슬랙 alert 플러그인

스카우터의 슬랙 alert플러그인은 서버에서 발생한 alert메세지를 슬랙메신저로 발송해준다.

아래 정보들에 대한 알림을 기본적으로 제공하고 커스텀 알림 또한 설정할 수 있다.

 

기본제공알림 옵션

  • CPU of Agent (warning / fatal) - CPU 알림 설정 옵션
  • Memory of Agent (warning / fatal) - 메모리 알림 설정 옵션
  • Disk of Agent (warning / fatal) - 디스크 사용량 알림 옵션
  • connected new Agent - 신규 서비스 연결 알림
  • disconnected Agent - 서비스 끊김 알림
  • reconnect Agent - 서비스 재연결 알림

작업

슬랙 Webhook Url 발급

슬랙 메세지를 받기 위해서는 Webhook Url을 발급받아야한다.(설정 파일에 url을 사용한다.)

슬랙 웹훅 발급받기

 

슬랙 플러그인 설치

- was가 설치된 서버에서 스카우터 플러그인을 다운로드 받고 빌드해준다.

# 1. 적당한 위치에 슬랙 플러그인을 git으로 clone
git clone https://github.com/scouter-project/scouter-plugin-server-alert-slack.git

# 2. 스카우터 플러그인 폴더로 이동
cd scouter-plugin-server-alert-slack/

# 3. 스카우터 플러그인 빌드
mvn package

 

- 빌드가 완료되었다면 아래 파일들을 "/{스카우터설치경로}/scouter/server/lib" 경로에 복사 또는 이동해준다.

  • scouter-plugin-server-alert-slack-1.0.1-SNAPSHOT.jar
  • commons-codec-1.9.jar
  • commons-logging-1.2.jar
  • gson-2.6.2.jar
  • httpclient-4.5.2.jar
  • httpcore-4.4.4.jar

 

설정파일 세팅

스카우터 서버 설치 경로 하위의 conf/scouter.conf 파일에서 필요한 값에 대한 설정을 해준다.

  • ext_plugin_slack_send_alert : 발송기능을 사용할지 여부. true/false
  • ext_plugin_slack_debug : 메시지를 로깅 할지 여부. true/false
  • ext_plugin_slack_level : 로깅 레벨. (0=info, 1=warn, 2=error, 3=fatal)
  • ext_plugin_slack_webhook_url : 슬랙 웹훅 url
  • ext_plugin_slack_channel : 채널명 (ex. #test1) 혹은 사용자명(ex. @user_id)
  • ext_plugin_slack_botName : 알림을 보낼 봇 이름
  • ext_plugin_slack_icon_emoji : 봇 아이콘
  • ext_plugin_slack_xlog_enabled : xlog 얼럿 활성화 여부 true/false
  • ext_plugin_elapsed_time_threshold : 응답시간의 임계치. 이 값 보다 큰 응답시간에 반응한다
  • ext_plugin_gc_time_threshold : gc 시간 임계치. 이 값보다 큰 gc 시간이 걸리면 반응한다
  • ext_plugin_thread_count_threshold : 쓰레드 갯수 임계치. 쓰레드 갯수가 임계치 보다 커지면 반응한다.

 

예시)

# External Interface (Slack)
ext_plugin_slack_send_alert=true
ext_plugin_slack_debug=true
ext_plugin_slack_level=1
ext_plugin_slack_webhook_url={웹훅URL}
ext_plugin_slack_channel=#scouter
ext_plugin_slack_botName=scouter
ext_plugin_slack_icon_emoji=:computer:
ext_plugin_slack_icon_url=http://XXX.XXX.XXX/XXX.gif
ext_plugin_slack_xlog_enabled=true
ext_plugin_elapsed_time_threshold=5000
ext_plugin_gc_time_threshold=5000
ext_plugin_thread_count_threshold=300

 

재시작

설정을 마친 후 스카우터를 재시작하면 슬랙 플러그인이 설정된 값에 따라 실행된다.

 

 

위에 설정값에 대한 이벤트가 발생하게 되면 아래와 같이 메세지가 발송되어 서비스에 문제가 발생했을때 빠르게 파악하고 대처할 수 있다.

DB관련 오류
톰캣 관련 메세지

 

 



참고
https://www.facebook.com/groups/scouterapm/

https://github.com/scouter-contrib/scouter-plugin-server-alert-slack/blob/master/README_kr.md