서버 인프라/Aws

AWS Chatbot으로 서버 상태 모니터링하기

트리맨스 2022. 9. 5. 01:01
반응형

 

현재 아키텍쳐는 Elastic Beanstalk에서 서버 이상 상태에 대한 이벤트를 받아서 Lambda 함수에서 슬랙으로 메시지를 전송한다. 하지만 여기서 Lambda 함수에 대한 코드를 사용자가 직접 관리해야 하기 때문에, 이 기능을 AWS Chatbot으로 이전해서 코드에 대한 관리까지 없애보려고 한다.

 

기존의 플로우에서 람다 -> chatbot으로 전환하는 내용이다. 아래 링크는 기존의 플로우

https://tre2man.tistory.com/303

 

서버 상태 Lambda와 Slack으로 실시간 확인하기

현재 운영중인 서버는 Elastic Beanstalk으로 관리를 하고 있다. 덕분에 오토 스케일링, 블루그린 배포 등등 서버와 관련된 설정들을 간편하게 관리하는 중이다. 명령어 몇 줄이면 자동으로 배포가

tre2man.tistory.com

 

 

 

구상하기


변경 후의 플로우는 다음 그림과 같다.

 

 

SNS 개념잡기


SNS는 이벤트 메시지에 관한 모든 처리를 하는 곳이다. 가령 특정 서비스에 관한 이벤트를 SNS로 모두 전송하고, 해당 이벤트를 구독하고 싶은 서비스들은 직접 구독하거나 구독을 중단할 수 있다. 

 

SNS Topic(주제) : 특정한 AWS 서비스에서 이벤트를 받아오는 곳이다.

SNS Subscription(구독) : Topic에서 받아온 이벤트들을 다른 서비스로 보내는 곳 (말 그대로, 다른 서비스에서 받아오는 것) 이다. 여기서는 이벤트마다 필터를 걸어서 특정한 이벤트만 받을 수 있도록 필터링도 할 수 있다. (해당 기능은 메시지에 관심사를 추가해서 생성하면, 구독에서 메시지를 필터링을 한다)

 

설계하기


맨 처음에는 AWS Chatbot과 slack을 연동해야 한다. 그래야 이후 작업이 가능하고, 해당 작업은 어렵지 않아 바로 넘긴다.

 

그 다음은 SNS에서 구독 가능한 Topic(Notification)을 만들어야 한다. EventBridge 먼저 만들려고 하면 SNS 주제가 없기 때문에 생성을 하지 못한다. SNS 토픽은 기본 설정대로(유형 : FIFO가 아닌 표준으로 설정) 바로 만들면 된다. (간단해서 사진 생략)

 

이후에 EventBridge에서 이벤트에 대한 규칙을 만든 이후, 해당 이벤트를 전송할 대상으로 위에서 만든 Topic에 연결한다. EventBridge에서 이벤트를 만들 때 봐야 할것은 다음과 같다.

 

 

먼저 샘플 이벤트를 확인하여 EB Ehalth status change의 내용을 확인해보자. 저런 식으로 이벤트가 생성이 된다는 것만 알고 있으면 된다.

 

 

다음은 이벤트 패턴 필터이다. 처음에 JSON으로 직접 작성해야 하는줄 알았지만, 콘솔에서 알아서 옵션들을 제공해 준다. 옵션을 클릭만 하게 되면 오른쪽에 알아서 JSON 파일이 생긴다. 나는 모든 환경에서 상태 변화에 대한 내용을 확인해야 하기 때문에 위와 같이 지정해 두었다.

 

 

다음은 이벤트 구독 대상을 지정해야 한다. 우리는 SNS에 토픽을 만들어 두었으므로, 해당 토픽으로 이벤트가 전달되도록 설정한다.

 

 

마지막으로 Chatbot을 제작한다. 이 때 SNS의 주제를 선택하면 자동으로 SNS 구독이 생성되면서 이벤트를 받아올 것이다. 해당 기능을 제작하고 이벤트가 Slack으로 잘 넘어오는지 확인해 보자.

 

성 공 적

 

이벤트 변화에 대한 내용이 슬랙으로 잘 넘어오는 것을 볼수 있다!

 

참고자료


https://docs.aws.amazon.com/chatbot/latest/adminguide/create-eventbridge-rule.html

 

Tutorial: Creating an Amazon EventBridge rule that sends notifications to AWS Chatbot - AWS Chatbot

Tutorial: Creating an Amazon EventBridge rule that sends notifications to AWS Chatbot AWS Chatbot currently supports notifications for most service events that are handled by Amazon EventBridge. When you create a rule for events, you tell EventBridge what

docs.aws.amazon.com

https://blog.leocat.kr/notes/2020/12/18/aws-sns-subscription-filtering

 

[AWS] SNS 구독 필터링(Subscription Filtering)

AWS SNS를 사용하면 한 곳으로 이벤트(메시지)를 발행하고, 여러 곳에서 동일한 이벤트를 받아볼 수 있다. 특정 서비스의 변경 이벤트를 한 곳(SNS)으로 발행하고, 이 이벤트가 관심 있는 서비스는

blog.leocat.kr

 

 

반응형