안녕하세요. ManVSCloud 김수현 입니다.
금일 포스팅은 네이버 클라우드 사용 시 모니터링 알림을 문자와 E-mail 뿐만 아니라
Slack으로 받는 방법에 대해 공유하고자 합니다.

Slack + Incoming WebHooks + Clound Insight(Integration)
System/Custom Metric을 이용하여 Template(Target Group&Rule)을 생성하고 Event Rule 설정 시 Incoming WebHooks의 Endpoint URL가 등록된 Integration을 추가하여 Slack으로 알람을 받을 수 있도록 할 것입니다.
“해당 포스팅에서는 Template 및 Event Rule 생성에 대한 내용은 생략되었습니다.”
Slack
요즘 모니터링 알림은 Slack이나 Telegram으로 받는 경우가 많습니다.
이제 요즘이라고 하기에 꽤 긴 시간이 흘러버린?
그 만큼 Slack은 업무와 관련된 커뮤니케이션(업무 확인 및 모니터링 알림, 의사 결정)을 하기 좋은 툴로 확실하게 자리잡은 듯합니다.
먼저 Slack 설치 및 가입이 되어있지 않다면 위 링크를 통해 진행해주시고 워크스페이스 생성 후 모니터링 알림을 받을 전용 채널을 하나 생성해줍니다.

이후 [앱 추가]에서 incoming webhooks을 검색하면 사용 가능한 앱이 아래 그림과 같이 보이는 것을 확인할 수 있습니다.

슬랙에서 설정 해주어야할 부분은 크게 없습니다. (설치+가입+앱 추가)
Incoming WebHooks
이제 추가 한 Incoming WebHooks 앱을 설정해주어야하는데 이 부분 역시 크게 어렵지 않습니다.
먼저 [Slack에 추가] 를 눌러 앱을 추가해줍시다.

이후 새로운 화면으로 넘어가게되면 그냥 쭈욱 내려와서 아래 그림과 같은 부분만 설정해주고 복사해주면 됩니다.

- 채널에 포스트 : 이 부분은 위 Slack에서 생성해준 채널을 선택해줍니다.
- 웹후크 URL : 해당 URL은 [URL 복사]를 이용해 따로 복사해주세요.
Cloud Insight 설정 시 사용됩니다. - 이름 사용자 지정 : 예를 들어 ncloud-cloud-insight 라고 지정하면 ncloud-cloud-insight이라는
이름의 봇이 알림을 계속 해준다고 보면 됩니다. - [설정 저장]
이미지 업로드 등 나머지 설정은 자유입니다.
Cloud Insight(Integration)
마지막으로 Cloud Insight의 Integration을 설정해줄 것입니다.

[Channel 생성]을 진행합니다.
이름과 엔드포인트 주소 그리고 페이로드를 설정한 뒤 [생성]을 해줍니다.
여기서 엔드포인트 주소는 위 Incoming Webhooks에서 복사해둔 URL을 붙여주시면 됩니다.

참고로 페이로드에 쓰일 변수는 이미 네이버 클라우드 가이드에서 제공하고 있으니 아래 링크를 참고하시기 바랍니다.
ex) EVENT_STATUS : Event의 상태
사용 방법 – #{EVENT_STATUS}
결과 – OPEN, REMIND, RESOLVE
페이로드는 json 형식만 가능하며, 최대 15KB로 제한됩니다.
총 21개의 변수를 제공하며, #{변수명}과 같은 포맷으로 사용 가능합니다.
생성한 Integration을 Event Rule의 액션에서 추가합니다.

이제 이벤트 알림이 발생하고 Slack으로 알림이 오는지만 확인하면 됩니다.
저는 간단하게 감시 항목으로 cpu가 80% 이상 1분간 지속될 경우 알림이 발생하도록 해둔 뒤 서버 내에서 stress 툴을 이용하여 테스트를 진행하였습니다.
[root@manvscloud-web-pub-kr2 ~]# stress --cpu `cat /proc/cpuinfo | grep processor | wc -l` stress: info: [62483] dispatching hogs: 2 cpu, 0 io, 0 vm, 0 hdd
[참고]
- 레드햇 계열
yum install epel-release
yum install stress - 데비안 계열
apt-get install stress
Slack에서 아래 그림과 같이 알림을 받았습니다.
Event 상태 및 Level, 이벤트 이름과 발생한 상품/리소스 명, 현재 값 그리고 조건까지 확인할 수 있습니다.

마지막으로 제가 설정한 Payload는 아래와 같습니다.
참고하여 동일하게 사용하시거나 변형하여 사용하셔도 됩니다.
{ "text": "[#{EVENT_STATUS}][#{LEVEL}] #{RULE_NAME}\n [ #{PRODUCT_NAME} : #{RESOURCE_NAME} ] [ 값 : #{VALUE} ] \n [ 조건 : #{METRIC} : #{CRITERIA}#{UNIT} ]" }
Personal Comments
Slack + Incoming WebHooks + Clound Insight(Integration)를 이용하여 간단하게 네이버 클라우드에서 Slack으로 알림을 받는 방법에 대해 알아보았습니다.
모니터링 설정 간에 도움되셨길 바랍니다.
긴 글 읽어주셔서 감사합니다.
