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 de serviços do Google Cloud com eventos de várias fontes. Ele permite criar arquiteturas orientadas a eventos em que os microsserviços são distribuídos e têm acoplamento flexível. Ele também cuida da ingestão, entrega, segurança, autorização e tratamento de erros de eventos, o que melhora a agilidade do desenvolvedor e a resiliência do aplicativo.

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

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

O que você vai aprender

  • Como descobrir o provedor 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 É possível atualizar o local 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. Em geral, não importa o que seja. Na maioria dos codelabs, é necessário fazer referência ao ID do projeto, normalmente identificado como PROJECT_ID. Se você não gostar do ID gerado, crie outro aleatório. Se preferir, teste o seu e confira se ele está disponível. Ele não pode ser mudado após essa etapa e permanece durante o projeto.
  • Para sua informação, há um terceiro valor, um Número do 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 evitar cobranças além deste tutorial, exclua os recursos criados ou 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 mais tarde.

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. Descobrir o provedor Datadog

Um provedor do Eventarc é um serviço ou uma entidade que pode emitir eventos diretamente para o Google Cloud, que são roteados para seu projeto. Provedores terceirizados, como o Datadog, não são do Google Cloud, mas estão integrados a ele pelo Eventarc.

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

gcloud eventarc providers list

Esta lista inclui o Google Cloud e provedores terceirizados, além dos locais em que eles estão disponíveis:

NAME: storage.googleapis.com
LOCATION: asia

NAME: cloudaudit.googleapis.com
LOCATION: asia

NAME: pubsub.googleapis.com
LOCATION: asia

...

Você pode restringir a lista a provedores terceirizados com este comando:

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

O Datadog vai aparecer na lista:

NAME: datadog
LOCATION: us-central1

Também é possível descrever o provedor do Datadog para conferir os eventos que ele aceita:

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

É necessário configurar um canal para integrar seu projeto a um provedor. Isso envolve criar um canal, recuperar os detalhes dele e enviar essas informações ao provedor. Depois que o provedor inicializar a conexão com o canal, ele poderá começar a enviar eventos ao seu projeto.

Criar um canal

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

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

Também é possível criar 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 criar 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 está 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, crie um novo canal para ele.

Um token de ativação é de uso único e com restrição de tempo. Ele é usado para criar uma conexão entre um provedor e o projeto de um 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 fica INACTIVE.

Enviar detalhes do canal ao provedor

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

  • Nome do canal (por exemplo, projects/project-id/locations/us-central1/channels/datadog-channel)
  • 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

Agora o canal vai aparecer na lista de canais e, depois de alguns segundos, ele também vai ficar ativo no console do Google Cloud:

8399d528ccbd4c20.png

Agora você já pode 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 simplesmente 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 foi implantado, mas ainda não está em execução. Ele será executado por um gatilho do Eventarc quando um alerta do Datadog for recebido.

6. Criar um gatilho do Eventarc

Agora você já pode conectar eventos do provedor Datadog aos fluxos de trabalho com um gatilho do Eventarc.

Configurar conta de serviço

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

Para simplificar, use a conta de serviço de computação padrão 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 do Datadog, o tipo de evento e 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

Liste os gatilhos para ver se o gatilho 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 do 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 do 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 monitores. Escolha o tipo de monitor Metric.

Na página New Monitor, deixe os valores padrão para as 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ê vai testar o monitor.

8. Testar o monitor e o gatilho

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

Na parte de baixo 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 simula a transição de estado no monitor e aciona um evento do Eventarc.

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

adf7cd97ca2e8da7.png

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

dc78fd8460e5fc0e.png

9. Parabéns

Parabéns, você concluiu o codelab. Continue para o segundo codelab e saiba como responder aos alertas de monitoramento do Datadog com fluxos de trabalho.

O que aprendemos

  • Como descobrir o provedor 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.