개발자는 기록이 답이다
CloudWatch 슬랙 알람1) - AWS Chatbot 본문
![](https://blog.kakaocdn.net/dn/9BObf/btsFjJyE2qB/KhKQGHDrGhe0SMBgibaMfK/img.png)
- 경보는 특정 지표를 넘는 경우 발생하는데, 경보(Alert)가 발생하면 Slack과 같은 알람을 보내 줘야 합니다.
- 로드밸런서, ECS, RDS, Auto Scaling 등에 경보(Alert)를 발생 시킬 수 있습니다
1. SNS (Simple Notification Service)
- 위치 : SNS > 주제 > 주제 생성
- 주제 : 표준
- 이름 : chatbot-alert-prod
![](https://blog.kakaocdn.net/dn/ebbZUA/btsFpQbK4wU/UCoqmUAOuzKwpkboHbbKRk/img.png)
2. 'IAM 정책 생성' 을 해줍니다
- 위치 : IAM > 정책 > 정책 생성 > JSON
- 정책 이름 : AWS-Chatbot-NotificationsOnly-Policy-prod
![](https://blog.kakaocdn.net/dn/cNdfax/btsFpQv2HCh/q7njtUYw84A4IlJiG4aGxK/img.png)
![](https://blog.kakaocdn.net/dn/CWkd4/btsFmlcG3EJ/UoCtrAeXA6Kpg1bwdClge1/img.png)
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"cloudwatch:*",
"cloudwatch:List*",
"cloudwatch:Get*",
"cloudwatch:Describe*"
],
"Resource": "*"
}
]
}
![](https://blog.kakaocdn.net/dn/bcn1wY/btsFm4okdu2/u434NFQIlFwf6wrRJNpsV1/img.png)
3. AWS Chatbot
(1) 새 클라이언트 구성 : Slack
![](https://blog.kakaocdn.net/dn/EVHmT/btsFqLVyPkw/rhnE5uRwrQG3UXjrSSNdVk/img.png)
![](https://blog.kakaocdn.net/dn/zdCRf/btsFiP6XzoF/NJb4nRAvifUk9uvVilGga1/img.png)
(2) 구성 세부 정보
- 구성 이름 : chatbot-alert-slack-prod
(3) Slack 채널
- 채널 유형 : 퍼블릭
- 퍼블릭 채널 이름 : -prodchatbot
- slack에서 chatbot-prod 채널은 미리 생성되어 있어야 합니다.
![](https://blog.kakaocdn.net/dn/bS8sTJ/btsFoJw67jF/4T5WIZ9zDhTRsvBoKG2ER0/img.png)
![](https://blog.kakaocdn.net/dn/bz4Ia7/btsFlQxiuE5/0oWK1sZz1buHZS0Pwk0kK0/img.png)
(4) 권한
- 채널 IAM 역할 : 템플릿을 사용하여 IAM 역할 생성
- 역할 이름 : chatbot-alert-slack-role-prod
- 정책 템플릿 : 알림 권한
- 채널 가드레일 정책 : AWS-Chatbot-NotificationsOnly-Policy-prod
![](https://blog.kakaocdn.net/dn/6EbhB/btsFnXJbVtM/lGw90ZYQNJCDilr0vIqrj1/img.png)
![](https://blog.kakaocdn.net/dn/ce80eD/btsFoJYcYB7/QegjQ34su0KMkk0YTfsCDk/img.png)
(5) 알림
- SNS 주제 : chatbot-alert-prod
![](https://blog.kakaocdn.net/dn/bnuCxU/btsFm2KJBcC/Dhqc0pvmQeGKADwOjvRLsK/img.png)
4. SNS
- 위치 : SNS > 구성
chatbot-alert-prod에서 구독 정보가 생성된 것을 확인 할 수 있습니다.
![](https://blog.kakaocdn.net/dn/dnHLBG/btsFmhIcX7e/wk8hI8jY2zNccGwAeuPdR0/img.png)
5. CloudWatch 경보 및 알림
- Alert (경보 상태) 일 때 알림 설정
- ECS의 CPU 사용률 관련 경보를 만듭니다.
- 조건은 테스트 용으로 CPU 사용률이 3%가 넘는 경우로 진행합니다. 실제 운영 서비스에서는 50% 정도로 진행합니다.
(1) 경보 생성
- CloudWatch의 경보(Alert)를 클릭 후 모든 경보를 클릭 후 경보를 생합니다.
![](https://blog.kakaocdn.net/dn/b10ou9/btsFm3pnBiL/kgd7jiVImVbcbkkgmwdcoK/img.png)
(2) 지표 및 조건 지정 : 지표선택
![](https://blog.kakaocdn.net/dn/daaxK1/btsFofb3NOG/9dD3App6Wc2X7arIrs2Ky1/img.png)
(3) 사용자 지정 네임스페이스 : ECS/ContainerInsights
![](https://blog.kakaocdn.net/dn/sDQTQ/btsFlTOjkJw/UfkE89OxIqJFEq1D5Xi670/img.png)
(4) ECS/ContainerInsights : ClusterName, ServiceName
![](https://blog.kakaocdn.net/dn/bbroQI/btsFjU1dOkg/qbW4EuzanAOB6kOGbswFBk/img.png)
(5) ClusterName, ServiceName
- ClusterName : 기존에 생성해둔 클러스터의 이름 - cluster-nestjs-02
- ServiceName : 기존에 생성해둔 서비스의 이름 - service-nestjs4
- 지표 이름 : CpuUtilzed
CPU 사용률을 기반으로 지표를 만듭니다. 특정 CPU 사용률을 초과하는 경우 스케일 아웃 합니다.
![](https://blog.kakaocdn.net/dn/p4bHe/btsFq0rBpXJ/pBLU61Af4qMpAIHKswXgoK/img.png)
(6) 지표
- 지표 이름 : CpuUtilzed
- ServiceName : service-nestjs4
- ClusterName : cluster-nestjs-02
- 통계 : 평균
- 기간 : 1분
![](https://blog.kakaocdn.net/dn/cNNjyP/btsFmfXTmdF/wWqJ4JHG7j0G35yYwJm9G1/img.png)
(7) 조건
- 임계값 유형 : 정적
- CpuUtilized : 보다 큼
- 임계값 : 3 //CPU 사용률이 ㄷ% 보다 클 때
- 추가 구성
- 경보를 알릴 데이터 포인트 : 1 / 1 (조건은 1분 동안 1번 경보가 울릴 때 입니다.)
![](https://blog.kakaocdn.net/dn/bTuSKP/btsFkH1Kdsv/Y6jysPr4AT8sQhVBj0II30/img.png)
1. 알릴 데이터 포인트 (Threshold):
이 옵션은 특정 지표 값에 기반하여 경보를 트리거할 조건을 설정하는 것을 의미합니다.
예를 들어 CPU 사용률, 네트워크 전송률, 디스크 공간 등의 지표를 모니터링하고 경보를 설정할 때, 다음과 같은 옵션을 구성할 수 있습니다.
- "평가 기간 내 기준을 위반하는 데이터 포인트 수를 정의합니다"라는 부분에서 "1/1"을 입력하는 것은 데이터 포인트 수가 1개라는 의미입니다. 이 설정은 특정 기간 1분 동안 데이터가 1개만 존재하면 조건이 충족되도록 설정하는 것입니다.
- 예를 들어, 이런 설정을 사용하면 특정 지표에 대해 특정 평가 기간(예: 5분, 1시간 등) 동안 단 한 번의 데이터 포인트가 생성되면 경보가 트리거됩니다. 이런 경우 단일 데이터 포인트의 값이 어떤 임계값을 넘어서거나 미만이더라도 경보가 트리거됩니다.
- 이렇게 단일 데이터 포인트 수에 대한 경보를 생성하는 경우는 일부 상황에서 유용할 수 있습니다. 하지만 대부분의 상황에서는 평가 기간 동안의 데이터 포인트들의 집계(예: 평균, 합계)를 사용하여 더 정확하고 유용한 경보를 생성하는 것이 일반적입니다. 예를 들어 평가 기간 내 CPU 사용률의 평균이 90% 이상인 경우에만 경보를 트리거하는 것이 더 의미있을 수 있습니다.
- 따라서 경보 설정에서는 데이터 포인트 수가 아닌, 데이터 포인트들의 값의 평균, 합계, 최대값 등을 활용하여 적절한 임계값과 조건을 설정하는 것이 좋습니다. 이렇게 하면 경보의 신뢰성과 유용성이 향상되며, 실제 시스템 또는 서비스의 상태를 정확하게 모니터링할 수 있습니다.
2. 누락된 데이터 처리 (Missing Data):
누락된 데이터 처리 옵션은 AWS에서 지표 값을 수집하지 못할 때 어떻게 대응할지를 설정하는 것입니다.
예를 들어 EC2 인스턴스가 특정 기간 동안 중단되어 모니터링 데이터가 수집되지 않을 경우를 대비하여 설정할 수 있습니다.
- 누락(Missing): 누락된 데이터에 대해 경보를 트리거합니다. 즉, 지표 데이터가 수집되지 않은 경우에도 경보를 발생시키고 알림을 보냅니다. 이 옵션을 선택하면 지표 데이터가 중요한 경우에 대비하여 누락된 데이터를 신속하게 파악할 수 있습니다.
- 양호(OK): 누락된 데이터에 대해 경보를 트리거하지 않고, 상태를 "양호"로 표시합니다. 일시적인 지표 데이터 누락에 대응할 때 유용합니다. 지표 데이터가 없는 기간 동안은 경보를 무시하고 양호한 상태로 표시합니다.
- 무시(Ignore): 누락된 데이터에 대해 경보를 트리거하지 않고, 경보를 무시합니다. 누락된 데이터에 대한 경보가 필요하지 않을 때 선택됩니다. 경보를 생성하되 실제로 누락된 데이터에 대해서는 신경쓰지 않을 때 유용합니다.
- 불량(NotBreaching): 누락된 데이터에 대해 경보를 트리거하지 않고, 데이터가 없는 것으로 간주하여 상태를 "불량"으로 표시합니다. 일부 데이터가 없는 경우에 대응할 때 유용합니다. 일부 데이터가 누락되었더라도 전반적으로 성능이 좋아서 불량 상태로 표시하고 싶을 때 선택될 수 있습니다.
(8) 알림
경보를 생성한 후 알림을 추가합니다.
- 기존 SNS 주제 선택 :chatbot-alert-prod
![](https://blog.kakaocdn.net/dn/kETJe/btsFimRfFZO/pp82Sz4OYRwpSnCUFOpz21/img.png)
- 이름 : ecs-cpu-alert-prod
![](https://blog.kakaocdn.net/dn/zlhmC/btsFlO0z1lQ/UBg1KgzKKPrnr97DX0LoZ1/img.png)
(9) 그래프
ecs-cpu-alert-prod 경보를 클릭하면 그래프를 볼 수 있습니다.
Alert을 넘으면 slack 알림이 오는 것을 확인 할 수 있습니다.
- 위치 : CloudWatch > 경보 > ecs-cpu-alert-prod
![](https://blog.kakaocdn.net/dn/X2ItY/btsFoIdV5Yl/C5phyyc7R4aAKdM6uKr7A0/img.png)
(10) 슬랙 알림
![](https://blog.kakaocdn.net/dn/LlZWM/btsFq0kPLmO/f7uAnawpP4kk8mevD0zJ50/img.png)
2021년 9월 기준으로, AWS Chatbot을 사용하여 오는 슬랙 알람의 언어를 바꾸는 기능은 기본적으로 제공되지 않습니다. AWS Chatbot은 Amazon Web Services (AWS) 리소스의 상태 변경 알림을 Slack 등의 대화형 플랫폼으로 라우팅하는 봇입니다. 이 알림은 기본적으로 영어로 제공됩니다.
다만, AWS Chatbot이 사용하는 알림은 JSON 형식으로 오기 때문에, 슬랙 채널에 올라가는 메시지 내용을 약간 수정하여 한글로 바꿀 수는 있습니다. 이렇게 하려면 AWS Lambda와 같은 서비스를 사용하여 슬랙 메시지를 받아서 원하는 형식으로 변환하여 다시 보내는 작업을 진행해야 합니다.
'DevOps > AWS' 카테고리의 다른 글
AWS CloudWatch 모니터링 대시보드 (0) | 2024.02.28 |
---|---|
AWS health check + Slack (0) | 2024.02.28 |
AWS 스케일링 RDS Scale up & out (수동) (0) | 2024.02.28 |
AWS 오토스케일링 (ECS) - Scale Up (0) | 2024.02.28 |
AWS 오토스케일링 (ECS) - Scale Out & Scale In (0) | 2024.02.28 |