AWS Chatbot 으로 Health Dashboard 알람 받기

신동수·2024년 2월 24일
0

AWS

목록 보기
5/26

개요

  • EC2, RDS 등 자원에 대하여 maintenance 등 이벤트에 대한 내용을 슬랙으로 확인하여 일정을 파악하기 위하여 설정을 진행하기로 하였다.

기본 구조


AWS Health Dashboard 에 올라온 이벤트를 EventBridge 에서 정의한 패턴에서 필터링 후 일치하는 이벤트라면 SNS 로 보낸 후 Chatbot 에서 발생된 이벤트를 슬랙 채널에 알려주는 아키텍처

Chatbot - Slack 연동


AWS chatbot 페이지에 들어가서 아래 구성된 클라이언트 → 새 클라이언트 구성 → Slack 선택 → 구성을 선택하면 바로 Slack의 Workspace와 연결 가능하다.
위의 스크린샷의 예시이다.


최종 생성된 configuration 결과를 보면 workspace ID를 확인 가능하다.
이제 새로운 채널만 연결해 주면 끝나는데, AWS CDK를 이용하거나 AWS 콘솔에서 이용해 채널 연결할 수 있다.

그리고 알람을 받을 채널에 위와 같이 '/invite @aws' 라고 하며 채널에 추가되며 1번 더 시도하면 위와 같이 채널에 이미 있다고 나올 것이다.


구성 이름을 선택하고 Cloudwatch Logs 에는 따로 적재하지 않아 체크는 하지 않음

회사에서 팀의 업무 용도로 확인할 채널이라 Private 를 선택하였다.
채널 ID 는 Slack 채널 정보에서 ID 값을 확인할 수 있다.

권한의 경우 신규로 Role 과 Policy 를 생성하였으며, 부여한 정책은 아래와 같다.
기존 역할에는 Chatbot이 사용할 Role 에 Policy 를 추가 하였다.
채널 가드 레일 정책에서는 채널 멤버가 수행할 수 있는 작업을 세부적으로 정의하는 것이지만 Slack 채널에서 제어할 작업이 없기에 기존 정책과 동일하게 설정 하였다.

#AWS-Health-Notification-policy
{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Action": [
                "SNS:Publish"
            ],
            "Effect": "Allow",
            "Resource": [
                "arn:aws:sns:ap-northeast-2:ACCOUNT:AWS-Health-Notification"
            ]
        },
        {
            "Action": [
                "cloudwatch:Describe*",
                "cloudwatch:Get*",
                "cloudwatch:List*"
            ],
            "Effect": "Allow",
            "Resource": [
                "*"
            ]
        }
    ]
}



설정한 SNS 주제의 내용을 챗봇이 구독하여 AWS에서 발생된 이벤트 내용을 Slack에 전달하기 위하여 설정을 하였다. (주제를 선택 후 해당 주제를 확인해보면 chatbot 엔드포인트가 구독이 된 상태를 확인)


만들어둔 구성의 우축 상단에 테스트 메시지 전송을 클릭하면 아래와 같이 메시지를 발송을 확인할 수 있다.


그리고 연결해둔 Slack 채널에는 테스트로 발송된 메시지가 온 것을 확인할 수 있다.

AWS EventBridge 설정


Amazon EventBridge → 규칙 → 규칙 생성

# 특정 서비스에 대한 Health 알람만 받도록 이벤트 패턴 정의
{
  "source": ["aws.health"],
  "detail-type": ["AWS Health Event"],
  "detail": {
    "service": ["EC2", "RDS", "ELASTICACHE", "ELASTICBEANSTALK", "KAFKA", "DYNAMODB", "DOCDB", "ECS", "EKS"]
  }
}

이벤트 패턴은 위와 같이 설정 하였다.

대상에는 Chatbot 설정 시 구독한 SNS 주제를 선택하면 해당 SNS 로 메시지가 전달이 될 것이고, Slack 에서 AWS. PHD 의 항목을 확인하여 인스턴스의 메인터넌스 등 유지보수에 대한 작업을 대응할 수 있을 것이다.

결과



Slack 으로 ECS 관련 변경 사항이 올라온 것을 확인할 수 있었으며, AWS PHD 에서도 동일한 이슈가 있는 것을 확인할 수 있었다.

profile
조금씩 성장하는 DevOps 엔지니어가 되겠습니다. 😄

0개의 댓글