Instrada gli avvisi di monitoraggio di Datadog a Google Cloud con Eventarc (parte 1)

1. Introduzione

cb762f29e9183a3f.png 3c7ca8629bc25d9c.png

Eventarc semplifica la connessione dei servizi Google Cloud a eventi provenienti da una varietà di origini. Consente di creare architetture basate su eventi in cui i microservizi sono a basso accoppiamento e distribuiti. Si occupa anche dell'importazione, della distribuzione, della sicurezza, dell'autorizzazione e della gestione degli errori degli eventi per te, migliorando l'agilità degli sviluppatori e la resilienza delle applicazioni.

Datadog è una piattaforma di monitoraggio e sicurezza per le applicazioni cloud. Riunisce tracce, metriche e log end-to-end per rendere osservabili applicazioni, infrastruttura e servizi di terze parti.

In questo primo codelab, imparerai come instradare un semplice avviso di monitoraggio di Datadog a Google Cloud con Eventarc.

Cosa imparerai a fare

  • Come trovare il provider Datadog.
  • Come configurare un canale per il provider Datadog.
  • Come creare un flusso di lavoro per registrare gli eventi.
  • Creare un trigger Eventarc con il canale.
  • Come creare un monitoraggio Datadog.
  • Come testare il monitoraggio Datadog, il trigger Eventarc e il flusso di lavoro.

2. Configurazione e requisiti

Configurazione dell'ambiente da seguire in modo autonomo

  1. Accedi alla console Google Cloud e crea un nuovo progetto o riutilizzane uno esistente. Se non hai ancora un account Gmail o Google Workspace, devi crearne uno.

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Il Nome progetto è il nome visualizzato dei partecipanti del progetto. Si tratta di una stringa di caratteri non utilizzata dalle API di Google. Puoi aggiornarla in qualsiasi momento.
  • L'ID progetto deve essere univoco in tutti i progetti Google Cloud ed è immutabile (non può essere modificato dopo essere stato impostato). La console Cloud genera automaticamente una stringa univoca. di solito non ti importa cosa sia. Nella maggior parte dei codelab, dovrai fare riferimento all'ID progetto (in genere è identificato come PROJECT_ID). Se l'ID generato non ti soddisfa, puoi generarne un altro casuale. In alternativa, puoi provarne una personalizzata per verificare se è disponibile. Non può essere modificato dopo questo passaggio e rimarrà per tutta la durata del progetto.
  • Per informazione, c'è un terzo valore, un numero di progetto, utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione.
  1. Successivamente, dovrai abilitare la fatturazione nella console Cloud per utilizzare risorse/API Cloud. Eseguire questo codelab non dovrebbe costare molto. Per arrestare le risorse in modo da non incorrere in fatturazione oltre questo tutorial, puoi eliminare le risorse che hai creato o eliminare l'intero progetto. I nuovi utenti di Google Cloud sono idonei al programma prova senza costi di 300$.

Avvia Cloud Shell

Anche se Google Cloud può essere utilizzato da remoto dal tuo laptop, in questo codelab utilizzerai Google Cloud Shell, un ambiente a riga di comando in esecuzione nel cloud.

Dalla console Google Cloud, fai clic sull'icona di Cloud Shell nella barra degli strumenti in alto a destra:

55efc1aaa7a4d3ad.png

Dovrebbe richiedere solo qualche istante per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere una schermata simile al seguente:

7ffe5cbb04455448.png

Questa macchina virtuale viene caricata con tutti gli strumenti di sviluppo necessari. Offre una home directory permanente da 5 GB e viene eseguita su Google Cloud, migliorando notevolmente le prestazioni di rete e l'autenticazione. Tutto il lavoro in questo codelab può essere svolto all'interno di un browser. Non occorre installare nulla.

Configura gcloud

In Cloud Shell, imposta l'ID progetto e salvalo come variabile PROJECT_ID.

Inoltre, imposta una variabile REGION su us-central1. Questa è la regione in cui creerai le risorse in seguito.

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

Abilita API

Abilita tutti i servizi necessari:

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

3. Scopri il provider Datadog

Un provider Eventarc è un servizio o un'entità che può inviare eventi direttamente a Google Cloud, che vengono quindi instradati al tuo progetto. I provider di terze parti, come Datadog, sono provider non Google Cloud integrati con Google Cloud tramite Eventarc.

In Cloud Shell, esegui questo comando per visualizzare l'elenco dei provider Google Cloud e di terze parti:

gcloud eventarc providers list

Qui sono elencati i provider Google Cloud e di terze parti, nonché le località in cui sono disponibili:

NAME: storage.googleapis.com
LOCATION: asia

NAME: cloudaudit.googleapis.com
LOCATION: asia

NAME: pubsub.googleapis.com
LOCATION: asia

...

Puoi restringere l'elenco ai provider di terze parti con questo comando:

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

Datadog dovrebbe essere visualizzato nell'elenco:

NAME: datadog
LOCATION: us-central1

Puoi anche descrivere il provider Datadog per vedere gli eventi che supporta:

gcloud eventarc providers describe datadog --location $REGION

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

4. Configura un canale

Devi configurare un canale per integrare il tuo progetto con un fornitore. Ciò comporta la creazione di un canale, il recupero dei dettagli del canale e l'invio di questi dettagli al fornitore. Una volta inizializzata la connessione al canale, il provider può iniziare a inviare eventi al progetto.

Creare un canale

Puoi creare un canale per il provider Datadog utilizzando gcloud:

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

Puoi anche crearlo dalla sezione Canali della pagina Eventarc nella console Google Cloud:

d03a7173b25e5ea6.png

Recuperare i dettagli del canale

Una volta creato il canale, recupera i dettagli del canale da gcloud:

gcloud eventarc channels describe $CHANNEL_NAME --location $REGION

L'output dovrebbe essere simile al seguente:

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'

Analogamente, puoi visualizzare il canale dalla console Google Cloud:

80d8b2b6a46cb4c5.png

Lo stato del canale indica lo stato del canale. Può essere uno dei seguenti:

  • PENDING: il canale è stato creato correttamente ed è disponibile un token di attivazione per creare una connessione con il provider. Per modificare lo stato del canale da PENDING a ACTIVE, il token deve essere fornito al provider e utilizzato per collegare il canale entro 24 ore dalla sua creazione.
  • ACTIVE: il canale è stato connesso al provider. Un canale ACTIVE è pronto per ricevere e indirizzare gli eventi dal fornitore.
  • INACTIVE: il canale non può ricevere eventi né essere riattivato. Il provider è disconnesso da questo canale oppure il token di attivazione del canale è scaduto e il provider non è connesso. Per ristabilire una connessione con un provider, devi creare un nuovo canale per il provider.

Un token di attivazione è un token monouso e limitato nel tempo, utilizzato per creare una connessione tra un provider e il progetto di un sottoscrittore. Solo un fornitore specifico, selezionato durante la procedura di creazione del canale, può utilizzare il token. Il token è valido per 24 ore dalla creazione del canale. Dopo 24 ore, il canale diventa INACTIVE.

Inviare i dettagli del canale al fornitore

Devi inviare i seguenti dettagli del canale al provider Datadog:

  • Il nome del canale (ad es. projects/project-id/locations/us-central1/channels/datadog-channel)
  • Token di attivazione (ad es. so5g4Kdasda7y2MSasdaGn8njB2)

Accedi a Datadog, vai alla pagina delle integrazioni e assicurati che l'integrazione di Google Eventarc sia installata:

9736bd517e1fa19a.png

Nella sezione di configurazione di Google Eventarc, inserisci il nome completo del canale e il token di attivazione:

a17f522075cdd92e.png

A questo punto dovresti vedere il canale nell'elenco dei canali e, dopo qualche secondo, dovresti anche vedere che il canale diventa attivo nella console Google Cloud:

8399d528ccbd4c20.png

Ora puoi iniziare a utilizzare il canale.

5. Crea un flusso di lavoro

Per ricevere gli eventi dal provider, è necessaria una destinazione in Google Cloud. Eventarc supporta una serie di destinazioni degli eventi, come Cloud Run, Workflows e i servizi Kubernetes. In questo caso, esegui il deployment di un flusso di lavoro per registrare semplicemente gli eventi ricevuti.

Crea un file workflow-datadog1.yaml con il seguente contenuto:

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

Tieni presente che il flusso di lavoro riceve un evento come parametro. Questo evento proverrà dal monitoraggio di Datadog tramite Eventarc. Una volta ricevuto l'evento, il flusso di lavoro registra semplicemente l'evento ricevuto.

Esegui il deployment del flusso di lavoro:

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

Il deployment del flusso di lavoro è stato eseguito, ma non è ancora in esecuzione. Verrà eseguito da un trigger Eventarc alla ricezione di un avviso Datadog.

6. Crea un trigger Eventarc

Ora è tutto pronto per connettere gli eventi del provider Datadog a Workflows con un trigger Eventarc.

Configura account di servizio

Quando crei un trigger, devi avere un account di servizio con il ruolo eventarc.eventReceiver. Puoi creare un account di servizio dedicato o utilizzare l'account di servizio Compute predefinito.

Per semplicità, utilizza l'account di servizio Compute predefinito e concedi il ruolo 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

Crea un trigger

Crea un trigger con il canale Datadog, il tipo di evento e anche una destinazione del flusso di lavoro:

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

Puoi elencare gli attivatori per verificare che quello appena creato sia attivo:

gcloud eventarc triggers list --location $REGION

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

7. Crea un monitoraggio Datadog

Ora creerai un monitoraggio Datadog e lo connetterai a Eventarc.

Sarà un monitor di tipo Hello World con valori predefiniti. Lo attiverai manualmente per generare gli avvisi di monitoraggio che a loro volta genereranno un evento Eventarc in Google Cloud.

Per creare un monitoraggio in Datadog, accedi a Datadog. Passa il mouse sopra Monitors nel menu principale e fai clic su New Monitor nel sottomenu. Esistono molti tipi di monitor. Scegli il tipo di monitor Metric.

Nella pagina New Monitor, lascia i valori predefiniti per i passaggi 1 e 2.

  • Nel passaggio 3, imposta Alert threshold su 1
  • Nel passaggio 4, imposta Test monitor for Eventarc come nome del monitoraggio e imposta Notify your team su @eventarc_<your-project-id>_<your-region>_<your-channel-name>

Tieni aperta la pagina del monitor per il passaggio successivo in cui verificherai il monitor.

8. Testa monitoraggio e trigger

Per testare il monitoraggio Datadog e il trigger Eventarc, attiverai manualmente il monitoraggio.

Nella parte inferiore della pagina di creazione del monitor, fai clic sul pulsante Test Notifications:

32ccf1cc47b01150.png

Quindi, fai clic sul pulsante Run Test:

7f2ff70ec673007b.png

Questo dovrebbe simulare la transizione dello stato nel monitoraggio e attivare un evento Eventarc.

Controlla il flusso di lavoro workflow-datadog1. Dovresti vedere che è in corso una nuova esecuzione:

adf7cd97ca2e8da7.png

Controlla i dettagli dell'esecuzione. Dovresti vedere il tipo di evento Datadog datadog.v1.alert generato dall'avviso di monitoraggio nell'input del flusso di lavoro e anche nei log:

dc78fd8460e5fc0e.png

9. Complimenti

Complimenti, hai completato il codelab. Puoi continuare con il secondo codelab per scoprire come rispondere agli avvisi di monitoraggio di Datadog con Workflows.

Argomenti trattati

  • Come trovare il provider Datadog.
  • Come configurare un canale per il provider Datadog.
  • Come creare un flusso di lavoro per registrare gli eventi.
  • Creare un trigger Eventarc con il canale.
  • Come creare un monitoraggio Datadog.
  • Come testare il monitoraggio Datadog, il trigger Eventarc e il flusso di lavoro.