Rotear alertas de monitoramento do Datadog para o Google Cloud com o Eventarc (Parte 1)

1. Introdução

cb762f29e9183a3f.png 3c7ca8629bc25d9c.png

O Eventarc facilita a conexão dos serviços do Google Cloud com eventos de diversas fontes. Ele permite criar arquiteturas orientadas a eventos em que os microsserviços são acoplados com flexibilidade e distribuídos. Ele também cuida da ingestão, da entrega, da segurança, da autorização e do tratamento de erros de eventos para você, o que melhora a agilidade do desenvolvedor e a resiliência de aplicativos.

O Datadog é uma plataforma de monitoramento e segurança para aplicativos de nuvem. Ele reúne traces, métricas e registros completos para tornar seus aplicativos, infraestrutura e serviços de terceiros observáveis.

Neste primeiro codelab, você vai aprender a rotear um alerta simples de monitoramento do Datadog para o Google Cloud com o Eventarc.

O que você vai aprender

  • Como descobrir o provedor do Datadog.
  • Como configurar um canal para o provedor Datadog.
  • Como criar um fluxo de trabalho para registrar eventos.
  • Como criar um gatilho do Eventarc com o canal.
  • Como criar um monitor do Datadog.
  • Como testar o monitor do Datadog, o gatilho do Eventarc e o fluxo de trabalho.

2. Configuração e requisitos

Configuração de ambiente autoguiada

  1. Faça login no Console do Google Cloud e crie um novo projeto ou reutilize um existente. Crie uma conta do Gmail ou do Google Workspace, se ainda não tiver uma.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • O Nome do projeto é o nome de exibição para os participantes do projeto. É uma string de caracteres não usada pelas APIs do Google Você pode atualizar a qualquer momento.
  • O ID do projeto precisa ser exclusivo em todos os projetos do Google Cloud e não pode ser alterado após a definição. O console do Cloud gera automaticamente uma string exclusiva. normalmente você não se importa com o que seja. Na maioria dos codelabs, é necessário fazer referência ao ID do projeto, que normalmente é identificado como PROJECT_ID. Se você não gostar do ID gerado, poderá gerar outro ID aleatório. Como alternativa, você pode tentar o seu próprio e ver se ele está disponível. Ela não pode ser alterada após essa etapa e permanecerá durante a duração do projeto.
  • Para sua informação, há um terceiro valor, um Número de projeto, que algumas APIs usam. Saiba mais sobre esses três valores na documentação.
  1. Em seguida, ative o faturamento no console do Cloud para usar os recursos/APIs do Cloud. A execução deste codelab não será muito cara, se tiver algum custo. Para encerrar os recursos e não gerar faturamento além deste tutorial, exclua os recursos criados ou exclua o projeto inteiro. Novos usuários do Google Cloud estão qualificados para o programa de US$ 300 de avaliação sem custos.

Inicie o Cloud Shell

Embora o Google Cloud e o Spanner possam ser operados remotamente do seu laptop, neste codelab usaremos o Google Cloud Shell, um ambiente de linha de comando executado no Cloud.

No Console do Google Cloud, clique no ícone do Cloud Shell na barra de ferramentas superior à direita:

55efc1aaa7a4d3ad.png

O provisionamento e a conexão com o ambiente levarão apenas alguns instantes para serem concluídos: Quando o processamento for concluído, você verá algo como:

7ffe5cbb04455448.png

Essa máquina virtual contém todas as ferramentas de desenvolvimento necessárias. Ela oferece um diretório principal persistente de 5 GB, além de ser executada no Google Cloud. Isso aprimora o desempenho e a autenticação da rede. Neste codelab, todo o trabalho pode ser feito com um navegador. Você não precisa instalar nada.

Configurar a gcloud

No Cloud Shell, defina o ID do projeto e salve-o como a variável PROJECT_ID.

Além disso, defina uma variável REGION como us-central1. Essa é a região em que você vai criar recursos depois.

PROJECT_ID=[YOUR-PROJECT-ID]
REGION=us-central1
gcloud config set core/project $PROJECT_ID

Ativar APIs

Ative todos os serviços necessários:

gcloud services enable \
  eventarc.googleapis.com \
  eventarcpublishing.googleapis.com \
  workflows.googleapis.com \
  workflowexecutions.googleapis.com

3. Descubra o provedor do Datadog

Um provedor do Eventarc é um serviço ou uma entidade que pode emitir eventos diretamente para o Google Cloud e depois são roteados para o projeto. Provedores terceirizados, como o Datadog, são provedores que não são do Google Cloud e são integrados ao Google Cloud pelo Eventarc.

No Cloud Shell, execute o seguinte comando para ver a lista de provedores do Google Cloud e de terceiros:

gcloud eventarc providers list

Ela lista os provedores do Google Cloud e de terceiros, além dos locais em que estão disponíveis:

NAME: storage.googleapis.com
LOCATION: asia

NAME: cloudaudit.googleapis.com
LOCATION: asia

NAME: pubsub.googleapis.com
LOCATION: asia

...

É possível restringir a lista a provedores de terceiros com este comando:

gcloud eventarc providers list --filter='eventTypes.type!~^google*'

Você verá o Datadog na lista:

NAME: datadog
LOCATION: us-central1

Também é possível descrever o provedor do Datadog para conferir os eventos compatíveis:

gcloud eventarc providers describe datadog --location $REGION

displayName: Datadog
eventTypes:
- type: datadog.v1.alert
name: projects/project-id/locations/us-central1/providers/datadog

4. Configurar um canal

Você precisa configurar um canal para integrar seu projeto a um provedor. Isso envolve a criação de um canal, a recuperação dos detalhes dele e o envio dessas informações ao provedor. Depois que o provedor inicializa a conexão com o canal, ele pode começar a enviar eventos para o projeto.

Criar um canal

É possível criar um canal para o provedor do Datadog usando gcloud:

CHANNEL_NAME=datadog-channel
gcloud eventarc channels create $CHANNEL_NAME \
   --provider datadog \
   --location $REGION

Também é possível criá-lo na seção "Canais" da página do Eventarc no console do Google Cloud:

d03a7173b25e5ea6.png

Recuperar detalhes do canal

Depois que o canal for criado, recupere os detalhes dele em gcloud:

gcloud eventarc channels describe $CHANNEL_NAME --location $REGION

A saída será semelhante a esta:

activationToken: so5g4Kdasda7y2MSasdaGn8njB2
createTime: '2022-03-09T09:53:42.428978603Z'
name: projects/project-id/locations/us-central1/channels/datadog-channel
provider: projects/project-id/locations/us-central1/providers/datadog
pubsubTopic: projects/project-id/topics/eventarc-channel-us-central1-datadog-channel-077
state: PENDING
uid: 183d3323-8cas-4e95-8d72-7d8c8b27cf9e
updateTime: '2022-03-09T09:53:48.290217299Z'

Da mesma forma, é possível ver o canal no Console do Google Cloud:

80d8b2b6a46cb4c5.png

O estado do canal indica o status dele. Pode ser um destes:

  • PENDING: o canal foi criado e há um token de ativação disponível para estabelecer uma conexão com o provedor. Para mudar o estado do canal de PENDING para ACTIVE, o token precisa ser fornecido ao provedor e usado para conectar o canal em até 24 horas após a criação dele.
  • ACTIVE: o canal foi conectado ao provedor. Um canal ACTIVE está pronto para receber e rotear eventos do provedor.
  • INACTIVE: o canal não pode receber eventos nem ser reativado. O provedor foi desconectado deste canal ou o token de ativação do canal expirou e o provedor não está conectado. Para restabelecer uma conexão com um provedor, você deve criar um novo canal para ele.

Um token de ativação é um token de uso único e com restrição de tempo usado para criar uma conexão entre um provedor e o projeto do assinante. Somente um provedor específico, selecionado durante o processo de criação do canal, pode usar o token. O token é válido por 24 horas após a criação do canal. Após 24 horas, o canal se torna INACTIVE.

Enviar os detalhes do canal para o provedor

Você precisa enviar os seguintes detalhes do canal para o provedor do Datadog:

  • Nome do canal (por exemplo, projects/project-id/locations/us-central1/channels/datadog-channel)
  • O token de ativação (por exemplo, so5g4Kdasda7y2MSasdaGn8njB2)

Faça login no Datadog, acesse a página de integrações e verifique se a integração do Google Eventarc está instalada:

9736bd517e1fa19a.png

Na seção de configuração do Google Eventarc, insira o nome completo do canal e o token de ativação:

a17f522075cdd92e.png

O canal vai aparecer na lista de canais e, depois de alguns segundos, vai aparecer como ativo no console do Google Cloud:

8399d528ccbd4c20.png

Agora, você está pronto para usar o canal.

5. Criar um fluxo de trabalho

Você precisa de um destino no Google Cloud para receber eventos do provedor. O Eventarc é compatível com vários destinos de eventos, como Cloud Run, Workflows e serviços do Kubernetes. Nesse caso, implante um fluxo de trabalho para registrar os eventos recebidos.

Crie um arquivo workflow-datadog1.yaml com o seguinte conteúdo:

main:
  params: [event]
  steps:
  - logStep:
      call: sys.log
      args:
        data: ${event}

O fluxo de trabalho está recebendo um evento como parâmetro. Esse evento virá do monitoramento do Datadog pelo Eventarc. Depois que o evento é recebido, o fluxo de trabalho apenas registra o evento recebido.

Implante o fluxo de trabalho:

WORKFLOW_NAME=workflow-datadog1
gcloud workflows deploy $WORKFLOW_NAME \
  --source workflow-datadog1.yaml \
  --location $REGION

O fluxo de trabalho está implantado, mas ainda não está em execução. Ele é executado por um gatilho do Eventarc quando um alerta do Datadog é recebido.

6. Criar um gatilho do Eventarc

Agora você já pode conectar eventos do provedor do Datadog ao Workflows com um gatilho Eventarc.

Configurar conta de serviço

Você precisa de uma conta de serviço com o papel eventarc.eventReceiver ao criar um gatilho. É possível criar uma conta de serviço dedicada ou usar a conta de serviço padrão do Compute.

Para simplificar, use a conta de serviço padrão do Compute e conceda o papel eventarc.eventReceiver:

PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)')

gcloud projects add-iam-policy-binding $PROJECT_ID \
    --member serviceAccount:$PROJECT_NUMBER-compute@developer.gserviceaccount.com \
    --role roles/eventarc.eventReceiver

Criar um gatilho

Crie um gatilho com o canal Datadog, o tipo de evento e também um destino de fluxo de trabalho:

gcloud eventarc triggers create datadog-trigger1 \
  --location $REGION \
  --destination-workflow $WORKFLOW_NAME \
  --destination-workflow-location $REGION \
  --channel $CHANNEL_NAME \
  --event-filters type=datadog.v1.alert \
  --service-account $PROJECT_NUMBER-compute@developer.gserviceaccount.com

É possível listar os acionadores para ver se o acionador recém-criado está ativo:

gcloud eventarc triggers list --location $REGION

NAME: datadog-trigger1
TYPE: datadog.v1.alert
DESTINATION: Workflows: workflow-datadog1
ACTIVE: Yes

7. Criar um monitor do Datadog

Agora você vai criar um monitor Datadog e conectá-lo ao Eventarc.

Ele será um monitor do tipo Hello World com valores padrão. Você vai acionar manualmente para gerar os alertas de monitoramento que, por sua vez, vão gerar um evento Eventarc no Google Cloud.

Para criar um monitor no Datadog, faça login no Datadog. Passe o cursor sobre Monitors no menu principal e clique em New Monitor no submenu. Há muitos tipos de monitor. Escolha o tipo de monitor Metric.

Na página New Monitor, mantenha os valores padrão das etapas 1 e 2.

  • Na etapa 3, defina Alert threshold como 1.
  • Na etapa 4, defina Test monitor for Eventarc como o nome do monitor e Notify your team como @eventarc_<your-project-id>_<your-region>_<your-channel-name>.

Mantenha a página do monitor aberta para a próxima etapa, em que você o testará.

8. Testar o monitor e o acionamento

Para testar o monitor do Datadog e o gatilho do Eventarc, acione o monitor manualmente.

Na parte inferior da página de criação do monitor, clique no botão Test Notifications:

32ccf1cc47b01150.png

Em seguida, clique no botão Run Test:

7f2ff70ec673007b.png

Isso deve simular a transição de estado no monitor e acionar um evento Eventarc.

Verifique o fluxo de trabalho workflow-datadog1. Você verá que há uma nova execução:

adf7cd97ca2e8da7.png

Verifique os detalhes da execução. O tipo de evento datadog.v1.alert do Datadog gerado pelo alerta de monitoramento vai aparecer na entrada do fluxo de trabalho e também nos registros:

dc78fd8460e5fc0e.png

9. Parabéns

Parabéns, você concluiu o codelab. Prossiga para o segundo codelab para aprender a responder a alertas de monitoramento do Datadog com o Workflows.

O que aprendemos

  • Como descobrir o provedor do Datadog.
  • Como configurar um canal para o provedor Datadog.
  • Como criar um fluxo de trabalho para registrar eventos.
  • Como criar um gatilho do Eventarc com o canal.
  • Como criar um monitor do Datadog.
  • Como testar o monitor do Datadog, o gatilho do Eventarc e o fluxo de trabalho.