1. Introduzione
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.
Flussi di lavoro è una piattaforma di orchestrazione completamente gestita che esegue i servizi in un ordine definito da te chiamato flusso di lavoro. Questi flussi di lavoro possono combinare servizi ospitati su Cloud Run o Cloud Functions, servizi Google Cloud come Cloud Vision AI e BigQuery e qualsiasi API basata su HTTP.
Nel primo codelab, hai imparato come instradare gli avvisi di monitoraggio di Datadog a Google Cloud con Eventarc. In questo secondo codelab, imparerai a rispondere agli avvisi di monitoraggio di Datadog con Workflows. In particolare, creerai due macchine virtuali Compute Engine e le monitorerai con un monitoraggio Datadog. Dopo aver eliminato una delle VM, riceverai un avviso da Datadog a Workflows tramite Eventarc. A sua volta, Workflows ricrea la VM eliminata per riportare il numero di VM in esecuzione a 2.
Cosa imparerai a fare
- Come abilitare l'integrazione di Datadog con Google Cloud.
- Come creare un flusso di lavoro per controllare e creare VM di Compute Engine.
- Come connettere gli avvisi di monitoraggio di Datadog a Workflows con Eventarc.
- Creare un monitoraggio Datadog e un avviso sulle eliminazioni delle VM.
2. Configurazione e requisiti
Configurazione dell'ambiente da seguire in modo autonomo
- 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.
- Il Nome progetto è il nome visualizzato dei partecipanti del progetto. Si tratta di una stringa di caratteri non utilizzata dalle API di Google e può essere aggiornata 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, devi fare riferimento all'ID progetto (che solitamente è identificato come
PROJECT_ID
), quindi, se non ti piace, generane un altro a caso oppure puoi fare un tentativo personalizzato e controllare se è disponibile. Poi c'è "congelato" dopo la creazione del progetto. - C'è un terzo valore, il numero di progetto, utilizzato da alcune API. Scopri di più su tutti e tre questi valori nella documentazione.
- Successivamente, dovrai abilitare la fatturazione nella console Cloud per utilizzare le risorse/le API Cloud. Eseguire questo codelab non dovrebbe costare molto. Per arrestare le risorse in modo da non incorrere in fatturazione oltre questo tutorial, segui eventuali "pulizie" istruzioni riportate alla fine del codelab. 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:
Dovrebbe richiedere solo qualche istante per eseguire il provisioning e connettersi all'ambiente. Al termine, dovresti vedere una schermata simile al seguente:
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 lab può essere svolto semplicemente con un browser.
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 \ workflows.googleapis.com \ workflowexecutions.googleapis.com
3. Verifica il canale Datadog
Assicurati che il canale Datadog che hai creato nel primo codelab sia attivo. In Cloud Shell, esegui questo comando per recuperare i dettagli del canale:
CHANNEL_NAME=datadog-channel 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: ACTIVE uid: 183d3323-8cas-4e95-8d72-7d8c8b27cf9e updateTime: '2022-03-09T09:53:48.290217299Z'
Puoi anche vedere lo stato del canale nella console Google Cloud:
Lo stato del canale deve essere ACTIVE
. In caso contrario, torna al primo codelab e segui i passaggi per creare e attivare un canale con Datadog.
4. Abilita l'integrazione con Google Cloud di Datadog
Per utilizzare Datadog per monitorare un progetto, devi abilitare le API necessarie per Datadog, creare un account di servizio e connettere l'account di servizio a Datadog.
Abilita le API per Datadog
gcloud services enable compute.googleapis.com \ cloudasset.googleapis.com \ monitoring.googleapis.com
Creare un account di servizio
L'integrazione di Google Cloud di Datadog utilizza un account di servizio per effettuare chiamate all'API Cloud Logging e raccogliere metriche a livello di nodo dalle tue istanze Compute Engine.
Crea un account di servizio per Datadog:
DATADOG_SA_NAME=datadog-service-account gcloud iam service-accounts create $DATADOG_SA_NAME \ --display-name "Datadog Service Account"
Abilita l'account di servizio Datadog per raccogliere metriche, tag, eventi ed etichette utente concedendo i seguenti ruoli IAM:
DATADOG_SA_EMAIL=$DATADOG_SA_NAME@$PROJECT_ID.iam.gserviceaccount.com gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$DATADOG_SA_EMAIL \ --role roles/cloudasset.viewer gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$DATADOG_SA_EMAIL \ --role roles/compute.viewer gcloud projects add-iam-policy-binding $PROJECT_ID \ --member serviceAccount:$DATADOG_SA_EMAIL \ --role roles/monitoring.viewer
Creare e scaricare una chiave dell'account di servizio. Il file della chiave ti serve per completare l'integrazione con Datadog.
Crea un file della chiave dell'account di servizio nella home directory di Cloud Shell:
gcloud iam service-accounts keys create ~/key.json \ --iam-account $DATADOG_SA_EMAIL
In Cloud Shell, fai clic su More ⁝
e seleziona Download File
. Nel campo File path
, inserisci key.json
. Per scaricare il file della chiave, fai clic su Download
.
Connetti l'account di servizio a Datadog
Nel tuo account Datadog, vai alla sezione Integrations
e cerca il riquadro di integrazione Google Cloud
:
Passa il mouse sopra Google Cloud Platform
per passare alla pagina Install
:
Installa l'integrazione caricando la chiave dell'account di servizio nella sezione Upload Private Key File
, quindi fai clic su Install Integration
:
Dopo aver completato l'integrazione, Datadog crea automaticamente una serie di dashboard correlate a Google Cloud in Dashboards
:
5. Creazione di VM di Compute Engine
Poi, crea alcune macchine virtuali (VM) Compute Engine. Monitorerai queste VM con un monitoraggio Datadog e risponderai agli avvisi di Datadog con un flusso di lavoro in Google Cloud.
Crea due VM di Compute Engine:
gcloud compute instances create instance-1 instance-2 --zone us-central1-a
Dovresti vedere le VM create e in esecuzione tra circa un minuto nella console Cloud. Dopo un po' di tempo (in genere 10 minuti), dovresti anche vedere queste VM in Datadog nella dashboard Google Compute Engine
in Dashboards
:
6. Crea un flusso di lavoro
Ora che sono in esecuzione due VM, crea un flusso di lavoro che risponda agli avvisi di un monitoraggio Datadog. Il flusso di lavoro può essere sofisticato come vuoi, ma in questo caso controllerà il numero di istanze VM in esecuzione e, se è inferiore a 2, creerà nuove istanze VM per garantire che ci siano sempre 2 VM in esecuzione.
Crea un file workflow-datadog2.yaml
con il seguente contenuto:
main: params: [event] steps: - init: assign: - projectId: ${sys.get_env("GOOGLE_CLOUD_PROJECT_ID")} - zone: "us-central1-a" - minInstanceCount: 2 - namePattern: "datadog-instance-##" - listInstances: call: googleapis.compute.v1.instances.list args: project: ${projectId} zone: ${zone} result: listResult - getInstanceCount: steps: - initInstanceCount: assign: - instanceCount: 0 - setInstanceCount: switch: - condition: ${"items" in listResult} steps: - stepA: assign: - instanceCount: ${len(listResult.items)} - findDiffInstanceCount: steps: - assignDiffInstanceCount: assign: - diffInstanceCount: ${minInstanceCount - instanceCount} - logDiffInstanceCount: call: sys.log args: data: ${"instanceCount->" + string(instanceCount) + " diffInstanceCount->" + string(diffInstanceCount)} - endEarlyIfNeeded: switch: - condition: ${diffInstanceCount < 1} next: returnResult - bulkInsert: call: googleapis.compute.v1.instances.bulkInsert args: project: ${projectId} zone: ${zone} body: count: ${diffInstanceCount} namePattern: ${namePattern} instanceProperties: machineType: "e2-micro" disks: - autoDelete: true boot: true initializeParams: sourceImage: projects/debian-cloud/global/images/debian-10-buster-v20220310 networkInterfaces: - network: "global/networks/default" result: bulkInsertResult - returnResult: return: ${bulkInsertResult}
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 controlla il numero di istanze in esecuzione e, se necessario, crea nuove istanze VM.
Esegui il deployment del flusso di lavoro:
WORKFLOW_NAME=workflow-datadog2 gcloud workflows deploy $WORKFLOW_NAME \ --source workflow-datadog2.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.
7. Crea un trigger Eventarc
Ora è tutto pronto per connettere gli eventi del provider Datadog a Workflows con un trigger Eventarc. Utilizzerai il canale e l'account di servizio che hai configurato nel primo codelab.
Crea un trigger con il canale Datadog, il tipo di evento e anche una destinazione del flusso di lavoro:
PROJECT_NUMBER=$(gcloud projects describe $PROJECT_ID --format='value(projectNumber)') gcloud eventarc triggers create datadog-trigger2 \ --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-trigger2 TYPE: datadog.v1.alert DESTINATION: Workflows: workflow-datadog2 ACTIVE: Yes
8. Crea un monitoraggio Datadog
Ora creerai un monitoraggio Datadog e lo connetterai a Eventarc.
Il monitoraggio controllerà il numero di VM di Compute Engine in esecuzione e invierà un avviso se è inferiore a 2.
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
, crea un monitor con quanto segue:
- Scegli il metodo di rilevamento:
Threshold
. - Definisci la metrica:
gcp.gce.instance.is_running
da (ovunque)sum by
(tutto) - Imposta le condizioni di avviso:
- Trigger attivato quando la metrica è
below
e la sogliaat least once
negli ultimi5 minutes
- Soglia di avviso:
< 2
- Invia una notifica al tuo team:
@eventarc_<your-project-id>_<your-region>_<your-channel-name>
- Nome monitor di esempio:
Compute Engine instances < 2
Ora, premi Create
in basso per creare il monitor.
9. Testa monitoraggio e trigger
Per testare il monitoraggio Datadog, il trigger Eventarc e infine il flusso di lavoro, eliminerai una delle VM:
gcloud compute instances delete instance-2 --zone us-central1-a
Dopo alcuni secondi, dovresti vedere l'istanza eliminata nella console Google Cloud.
Esiste un po' di latenza prima che questa modifica venga visualizzata in Datadog. Dopo un po' di tempo (in genere 10 minuti), dovresti vedere il monitor in Datadog per rilevare e avvisare l'utente nella sezione Manage Monitors
:
Una volta che Datadog monitora gli avvisi, dovresti vedere che vengono inviati a Workflows tramite Eventarc. Se controlli i log di Workflows, dovresti vedere che Workflows controlla la differenza tra il conteggio delle istanze attuali e quello previsto:
2022-03-28 09:30:53.371 BST instanceCount->1 diffInstanceCount->1
Risponde all'avviso creando una nuova istanza VM con il prefisso datadog-instance-##
.
Alla fine, avrai ancora 2 VM nel tuo progetto, una creata inizialmente e l'altra creata da Workflows dopo l'avviso di Datadog.
10. Complimenti
Complimenti, hai completato il codelab.
Argomenti trattati
- Come abilitare l'integrazione di Datadog con Google Cloud.
- Come creare un flusso di lavoro per controllare e creare VM di Compute Engine.
- Come connettere gli avvisi di monitoraggio di Datadog a Workflows con Eventarc.
- Creare un monitoraggio Datadog e un avviso sulle eliminazioni delle VM.