Amazon CloudWatch, AWS Lambda를 이용한 Slack notification
2020. 2. 26. 17:38ㆍIT/AWS
728x90
본문에서는 CloudWatch Alarms과 Lambda를 이용하여 사용자에게 리소스 상황을 Slack으로 notification을 하도록 구성한다.
1. 사전 준비
1.1 Slack Webhook URL 생성
Slack에서 'incomming webhooks'을 검색하여 설치한다.
notification을 받을 채널을 선택한다.
Webhook URL을 생성한다. 이 주소는 추후 Lambda에서 사용된다.
다음과 같이 curl 명령으로 해당 주소에 테스트 메세지를 보내면, 수신되는 것을 확인할 수 있다.
1.2 AWS Key 생성
AWS CLI를 통해 키를 생성하고 KeyId를 저장한다.
aws kms create-key --region ap-northeast-2
해당되는 KeyId와 Slack URL를 넣어 연결한다.
aws kms create-alias --alias-name "alias/SlackKey"
--target-key-id "KeyId" --region ap-northeast-2
aws kms encrypt --key-id alias/SlackKey --plaintext
"hooks.slack.com/services/Slack Webhook URL" --region ap-northeast-2
1.3 AWS Lambda 생성 및 설정
AWS Lambda에서 함수를 생성하고, 다음과 같이 선택한다.
SlackChannel은 전송하고자 하는 채널 이름을 입력하고, kmsEncryptedHookUrl는 CiphertexBlob 값을 입력한다.
1.4 구현
CPU에 부하를 발생시켜 테스트한다. 정해놓은 임계치 이상 발생하면, Slack notification을 받을 수 있다.
stress 명령으로 인위적인 부하를 발생시켜 테스트한다.
sudo amazon-linux-extras install epel -y
sudo yum install stress -y
stress --cpu 1 --timeout 300
정해놓은 채널과 메세지로 알람오는 것을 확인할 수 있다.
300x250
'IT > AWS' 카테고리의 다른 글
AWS API Gateway를 이용한 DynamoDB 데이터 적재 (0) | 2020.04.09 |
---|---|
AWS DataSync 이용하여 S3 버킷에서 EFS 파일 시스템으로 데이터 전송 (0) | 2020.04.09 |
AWS에서의 DevOps (0) | 2020.02.18 |
AWS S3 버킷을 이용한 CI/CD Pipeline 구축 (0) | 2020.02.17 |
AWS Elastic BeanStalk, Jenkins 기반 CI/CD 구축 (0) | 2020.02.17 |