SIMON
...
Integrações
Integrações com Webhook
AWS CloudWatch com EventBridge
14 min
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 acesse o console do cloudwatch na seção “alarmes”, clique em “criar alarme” selecione a métrica desejada (exemplo cpuutilization de uma instância ec2) defina as condições para disparo do alarme 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 3 2 criar uma regra no eventbridge acesse o console do eventbridge no painel de navegação, clique em “regras” e depois em “criar regra” defina um nome e uma descrição para a regra selecione o event bus padrão (“aws default event bus”) escolha “rule with an event pattern” configure o padrão de eventos para capturar alarmes do cloudwatch { "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 3 3 configurar o destino (webhook via api destination) 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) 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) 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) defina o input path para mapear variáveis do evento cloudwatch para o formato desejado { "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" } defina o input template para gerar o json personalizado { "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) crie uma fila sqs para dlq associe a dlq ao destino da regra para capturar eventos que não puderam ser entregues 3 6 testar a integração disparar o alarme manualmente (por exemplo, simulando alta utilização de cpu na ec2) monitorar o disparo via cloudwatch metrics e logs 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 essa abordagem garante uma integração robusta, escalável e fácil de manter entre o cloudwatch e sistemas externos via eventbridge