brunch

388. CloudWatch,SNS,Slack알람받기

프로세스만 확인하자

by Master Seo

CloudWatch + SNS + 람다 이용해 이벤트시 Slack 받는법


생성 하기

<1> 구성

<2> Slack 가입

<3> Slack 에서 WebHooks URL 확인하기

<4> SNS

<5> Lambda 함수 생성

<6> lambda 테스트

<7> SNS > Topic > Create subscription > AWS Lambda 로 설정

<8> cloudwatch 경보 생성

<9> lambda 테스트하여 Slack 수신 확인

<10> 참고 사이트



<1> 구성과 동작



AWS 서비스 이벤트 ---- CloudWatch Event ---- SNS ----- lambda ------Slack 수신



1

동작 ?

1) cloudwatch 알람에 설정한 값이 들어오면 SNS로 보내는 설정을 한다. SNS보낸다.

2) Lambda는 SNS를 이벤트로 받아 코드 동작을 한다. Slack으로 보낸다.

// Lambda에서 테스트로 이벤트를 만들어 Slack으로 가는지 미리 확인한다.

3) Slack에서 수신한다.


2

작업순서?

1) Slack 가입, Webhook URL확인

2) SNS설정

3) 람다 설정 , lambda-role필요(s3, logs 권한) , #general , webhook URL 필요

4) 테스트 이벤트로 Slack수신 확인 테스트

5) 서버 생성

6) Cloudwatch 알람 설정, 이벤트 설정 , SNS보내기 설정

7) 서버 부하주기



<2> Slack 가입


https://slack.com/intl/en-kr/

taeho0281@hanmail.net



<3> Slack 에서 WebHooks URL 확인하기


1

Saved Items > More 클릭 > Apps > Search 란에

Incoming WebHooks

add > 슬랙에 추가 > post to channel > 선택 > #general > 수신 WebHooks 통합 추가 > 저장


2

Webhook URL 제공됨.

url 복사.

아래 SAVE Settings




<4> SNS


1

> 주제생성 > 표준

seo-slack2

seo-cloudwatch-to-slack1 //메일 수신시 표시 이름이다. 정하자~

주제 생성


2

구독 생성 > 프로토콜 : email

엔드포인트 : taeho0281@hanmail.net > 구독 생성


3

이메일가서 Confirm 확인




<5> Lambda


1

Lambda > 함수 생성 > 블루프린트 사용 > cloudwatch-alarm-to-slack-python 선택

설정 >

함수이름

seo-cloudwatch-to-slack-lambda1

새 역할 사용

또는

기존 역할 사용 :

lambda-full-role // s3 , logs 권한



2

SNS주제 > seo-slack2 선택 > SNS트리거 활성화(디폴트) >


3

환경변수 > slackChannel

#general <-------- 이곳 이름과 Slack 채널이름이 같아야 한다.

Url

https://hooks.slack.com/services/T014XT1T3AQ/B01xxxxxxxxxxxxxxxxxx > 함수 생성


4

General configuration > Edit > 3초 -> 10초로 변경

// 3초이상 걸린다.



5

함수 코드

// 코드 입력

코드 다운로드 받는곳

https://cafe.naver.com/dnspro/28503



<6> lambda 테스트


기타

# 테스트는 안해도 됨~

테스트 > 이벤트 템플릿 :

Amazon SNS Topic Notification

이벤트 이름

seoslackevent2

생성 > 테스트

// 테스트 코드로 변경

Slack으로 메시지가 가는지 확인




<7> SNS > Topic > Create subscription > AWS Lambda 로 설정


Endpoint > seo-cloudwath-to-slack-lambda1 선택

> Create Subscription


람다가 생성되어 SNS수신시 람다로 보낼수 있다.



<8> cloudwatch 경보 생성


1

cpu 부하줘서 테스트


2

cloudwatch > 경보 > 지표선택 > 람다 > 함수이름별 > 함수이름 : 오류(Errors) > 지표 선택 클릭

> 통계 X 해서 변경 : 합계 > 1분 보다 크거나 같음

1 > 다음

경보 생성 > sns > 알람 보내기 >

seo-SlackAlarm1

seo-SlackAlarm11

다음 > 경보생성




<9> lambda 테스트하여 Slack 수신 확인


테스트

모니터링텝







<10> 참고 사이트


1

AWS 챗봇을 이용해 Slack으로 보내 방법이 좀 더 간단하다.


챗봇 --------- Slack


https://brunch.co.kr/@topasvga/1590


2

SNS메시지를 팀즈나 Slack으로 보내기


https://aws.amazon.com/ko/premiumsupport/knowledge-center/sns-lambda-webhooks-chime-slack-teams/



3

Cloudwatch 알람을 이용해 , 서버 상태 변경시 알람 받는법

https://docs.aws.amazon.com/ko_kr/AWSEC2/latest/UserGuide/UsingAlarmActions.html


4

CloudWatch Event Rules 이용- 전체 서버 상태 모니터링

https://aws.amazon.com/premiumsupport/knowledge-center/ec2-email-instance-state-change/?nc1=h_ls


5

서버 부하 주기

https://brunch.co.kr/@topasvga/1585


6

https://docs.aws.amazon.com/chatbot/latest/adminguide/chatbot-cli-commands.html


7

https://medium.com/@obutterbach/aws-guardduty-to-slack-6419e758aa8f




https://brunch.co.kr/@topasvga/1581


감사합니다.


keyword
매거진의 이전글387. Aurora 시작하기, Aurora로 이전하기