---
title: AWS CloudWatch com EventBridge
slug: aiops/aws-cloudwatch-com-eventbridge
docTags: 
createdAt: 2025-07-03T12:38:17.771Z
---



## 1. Pré-requisitos

- **Conta AWS** com acesso aos serviços CloudWatch e EventBridge.
- **Endpoint de Webhook AIOPs** público HTTPS para receber as notificações.
- **Permissões IAM** adequadas para criar regras e destinos no EventBridge.

## 2. Visão Geral

Automatizar o envio de notificações para um webhook externo sempre que um alarme do **CloudWatch** for disparado, utilizando o **EventBridge** para rotear e transformar o evento em um formato JSON específico.

## 3. Passo a passo

### 3.1. Criar um Alarme no CloudWatch

1. **Acesse o Console do CloudWatch.**
2. Na seção “Alarmes”, clique em “Criar alarme”.
3. **Selecione a métrica** desejada (exemplo: CPUUtilization de uma instância EC2).
4. **Defina as condições** para disparo do alarme.
5. **Nomeie o alarme** e clique em “Criar alarme”.

Mais detalhes sobre como criar um **alerta** no **CloudWatch** podem ser vistos na [documentação oficial da AWS](https://docs.aws.amazon.com/pt_br/AmazonCloudWatch/latest/monitoring/Alarm-On-Metrics.html).

### 3.2. Criar uma Regra no EventBridge

1. **Acesse o Console do EventBridge.**
2. No painel de navegação, clique em “Regras” e depois em “Criar regra”.
3. **Defina um nome** e uma descrição para a regra.
4. **Selecione o event bus padrão** (“AWS default event bus”).
5. **Escolha “Rule with an event pattern”**.
6. **Configure o padrão de eventos** para capturar alarmes do CloudWatch:

```json
{
  "source": ["aws.cloudwatch"],
  "detail-type": ["CloudWatch Alarm State Change"]
}
```

(Opcional: adicione filtros para recursos ou estados específicos.)

Mais detalhes sobre como criar uma **Regra** no **EventBridge** podem ser vistos na [documentação oficial da AWS](https://docs.aws.amazon.com/pt_br/eventbridge/latest/userguide/eb-get-started.html#eb-gs-create-rule).

### 3.3. Configurar o Destino (Webhook via API Destination)

1. **Crie uma conexão de API Destination:**
   - Em “API destinations”, clique em “Connections”.
   - Clique em “Create connection”.
   - Defina nome, tipo de autenticação e credenciais (API key, OAuth, basic auth).
2. **Crie o API Destination:**
   - Em “API destinations”, clique em “Create API destination”.
   - Defina nome, endpoint HTTPS do webhook, método HTTP (ex: POST).
     - O endpoint deverá ser:
       - https\://\<DOMINIO\_AIOPS>/services/collector/event
     - Gere uma API Key e adicione à configuração.
   - Associe a conexão criada anteriormente.
   - Defina o limite de taxa de invocação (ex: 10 eventos por segundo).
3. **Associe o destino à regra:**
   - Na criação da regra, em “Select targets”, escolha “API destination”.
   - Selecione o destino criado.

### 3.4. Configurar o Input Transformer (Formatação do JSON)

1. **Defina o Input Path** para mapear variáveis do evento CloudWatch para o formato desejado:

```json
{
  "adapter_kind": "$.source",
  "alert_criticality": "$.detail.state.value",
  "alert_definition": "$.detail.state.reason",
  "alert_id": "$.id",
  "alert_impact": "$.detail.state.value",
  "alert_recommendations": "$.detail.state.reason",
  "alert_status": "$.detail.state.value",
  "alert_subtype": "$.detail.state.value",
  "alert_type": "$.detail-type",
  "cancel_time": "$.detail.state.timestamp",
  "create_time": "$.time",
  "link_to_alert": "$.resources[0]",
  "object_efficiency_state": "$.detail.state.value",
  "object_health_state": "$.detail.state.value",
  "object_risk_state": "$.detail.state.value",
  "resource_id": "$.detail.alarmName",
  "resource_kind": "$.detail.configuration.metrics[0].metricStat.metric.namespace",
  "resource_name": "$.detail.configuration.metrics[0].metricStat.metric.dimensions.InstanceId",
  "update_time": "$.detail.state.timestamp"
}
```

1. **Defina o Input Template** para gerar o JSON personalizado:

```json
{
  "start_date": "<create_time>",
  "update_date": "<update_time>",
  "cancel_date": "<cancel_time>",
  "device_id": "<resource_id>",
  "adapter_type": "<adapter_kind>",
  "device_type": "<resource_kind>",
  "device_name": "<resource_name>",
  "health": "<object_health_state>",
  "risk": "<object_risk_state>",
  "efficiency": "<object_efficiency_state>",
  "impact": "<alert_impact>",
  "criticality": "<alert_criticality>",
  "check": "<alert_definition>",
  "type": "<alert_type>",
  "sub_type": "<alert_subtype>",
  "alert_id": "<alert_id>",
  "status": "<alert_status>",
  "recommendations": "<alert_recommendations>",
  "alert_url": "<link_to_alert>"
}
```

### 3.5. Configurar Dead Letter Queue (Opcional, para tratamento de falhas)

1. **Crie uma fila SQS para DLQ.**
2. **Associe a DLQ ao destino da regra** para capturar eventos que não puderam ser entregues.

### 3.6. Testar a Integração

1. **Disparar o alarme manualmente** (por exemplo, simulando alta utilização de CPU na EC2).
2. **Monitorar o disparo** via CloudWatch Metrics e Logs.
3. **Verificar o recebimento da notificação** no endpoint do webhook.

### 3.7. Monitoramento e Manutenção

- **Acompanhe métricas** no CloudWatch (FailedInvocations, Invocations).
- **Analise logs** e mensagens da DLQ em caso de falhas.
- **Ajuste permissões e configurações** conforme necessário.

***

## 4. Resumo dos Recursos Utilizados

| Serviço         | Função Principal                               |
| --------------- | ---------------------------------------------- |
| CloudWatch      | Monitoramento e disparo de alarmes             |
| EventBridge     | Roteamento e transformação de eventos          |
| API Destination | Entrega de eventos para webhook externo        |
| SQS (DLQ)       | Tratamento de eventos não entregues (opcional) |

***

## 5. Considerações Finais

- **Sempre valide o formato do JSON** enviado ao webhook.
- **Teste diferentes cenários** de falha para garantir robustez.
- **Documente as permissões IAM** necessárias para cada etapa.

