본문 바로가기

Log,Monitorings

[Datadog] AWS Events 기반으로 Datadog 알람 설정하기

반응형

1. 개요

Datadog은 SaaS 모니터링 솔루션으로 정말 많은 기능들이 포함되어 있다.

Dashboards를 만들 수도 있고, Monitoring 설정을 할 수도 있고 APM을 사용하여 Application 분석을 수행할 수도 있다.

 

그 중 Events 기능이 있는데, 

일련의 Messages 들을 모아놓은 Record라고 생각하면 된다.

 

Kubernetes에서 발생하는 Events들은 물론 그 외에 RDS Events 등이 포함될 수 있다.

 

아래는 Datadog Events 예시이다. Kubernetes에서 발생하는 이벤트들, Amazon Lambda 혹은 SNS, MongoDB 등 여러가지가 Source가 될 수 있다.

 

만약 이러한 Events들 중 특정 Content가 포함이 될 경우 알람을 받고 싶다면 어떻게 수행하면 될까?

 

 

2. 목적

필자는 AWS DMS(Database Migration Service)에서 발생하는 Failed Event에 대해 알람을 받고 싶었다. 이러한 동작을 AWS 측에서 수행할 수도 있지만 Datadog에서는 어떻게 수행할 수 있을까?

 

우선 AWS에서 어떻게 알람을 받을 수 있을지 생각해보자.

 

DMS에서도 RDS와 마찬가지고 Events들이 존재한다.

 

Events들은 말 그대로 DMS에서 발생한 이벤트들이고,

Event Subscriptions은 Events들을 구독할 대상을 설정하는 것이다.

 

그럼, 이 Event 구독을 SNS로 설정하고, SNS에서는 Lambda로 보내어, Slack Webhook으로 Message를 보내면 간단하게 내가 원하는 포매팅으로 알람을 송신할 수 있게 될 것이다.

 

혹은 AWS Chatbot을 사용할 수도 있을 것 같은데, 직접 써보진 않아서 이 부분은 잘 모르겠다.

 

근데 이러한 과정이 결국에는 Slack Webhook 채널로 Message를 보내는 로직을 결국 코드를 짜야하기 때문에 번거로운 과정이 될 수 있다.

 

그럼 Datadog에서 Events 기반으로 알람을 보낼 수 있으면 좀 간단하지 않을까 라는 생각을 할 수 있다.

 

하지만 RDS Integration을 설정하면 RDS에서 발생하는 Events들이 자동으로 Datadog Events에 쌓이는데 반해 DMS Integration을 설정하면 DMS에서 발생한느 Events들이 자동으로 쌓이지 않는다.

 

고로 다음의 과정이 필요하다.

 

DMS Events -> SNS -> SNS 구독을 HTTP로 설정하고 Datadog Event Stream 채널로 보낸다.

 

3. 설정하기

설정하는 방법은 정말 간단하다.

 

 

1. AWS DMS -> Event Subscription에 들어간 뒤, 기 생성한 SNS Topic으로 Target을 설정한다.

Event Source로는 Failure 이벤트 카테고리에 대해서만 발송하도록 설정한다.

 

 

2. SNS Topic 구독으로 Datadog Webhook 채널로 Endpoint를 설정한다.

 

3. Events - Amazon SNS에 실패한 DMS Task 내역들이 보이게 된다.

 

이제, 이 Events 기반으로 Slack으로 알람을 보내도록 설정하면 되겠다.

 

4. Datadog Monitors에 들어가서 아래의 설정을 진행한다.

 

[1] Define the search query

Source : amazon_sns , message 중 dms가 포함된 이벤트들을 쿼리로 구별해낸다.

 

[2] Alert Conditions

이 부분이 중요한데, 1번 이상 Alert가 발생하면 알람이 발생하도록 설정해준다.

 

또한, Evaluation Options에 0 Seconds를 기다리도록 설정해준다. 왜냐하면 Event는 1회성으로 울리게 되는데 이는 메트릭과 다르다.

 

메트릭은 n분 동안의 수치에 대해 평가를 해야 하지만 Event는 순간 점으로 찍히기 때문에 0 Seconds로 설정하지 않으면 평가가 Alert Conditions에서 평가가 진행되지 않는다.

 

[3] Notify your team

{{is_alert}} 는 조건문이라고 생각하면 된다.

참고 : https://docs.datadoghq.com/monitors/notify/variables/?tabs=is_alert#conditional-variables

 

Variables

Use variables to customize your monitor notifications

docs.datadoghq.com

 

Events에서 발생하는 알람은 Recovery 알람을 받고 싶지 않았기 때문에 is_alert 변수를 통해 오직 Trigger가 발생할 때만 알람을 받도록 설정하였다.

 

 

반응형