1. Introduction

Eventarc permet de connecter facilement les services Google Cloud à des événements provenant de diverses sources. Il vous permet de créer des architectures basées sur des événements dans lesquelles les microservices sont faiblement couplés et distribués. Il gère également l'ingestion, la diffusion, la sécurité, l'autorisation et le traitement des erreurs pour vous, ce qui améliore l'agilité des développeurs et la résilience des applications.
Datadog est une plate-forme de surveillance et de sécurité pour les applications cloud. Il rassemble des traces, des métriques et des journaux de bout en bout pour rendre vos applications, votre infrastructure et vos services tiers observables.
Workflows est une plate-forme d'orchestration entièrement gérée qui exécute des services dans un ordre que vous définissez, appelé workflow. Ces workflows peuvent combiner des services hébergés sur Cloud Run ou Cloud Functions, des services Google Cloud tels que Cloud Vision AI et BigQuery, ainsi que toute API HTTP.
Dans le premier atelier de programmation, vous avez appris à router les alertes de surveillance Datadog vers Google Cloud avec Eventarc. Dans ce deuxième atelier de programmation, vous allez apprendre à répondre aux alertes de surveillance Datadog avec Workflows. Plus précisément, vous allez créer deux machines virtuelles Compute Engine et les surveiller à l'aide d'un moniteur Datadog. Une fois l'une des VM supprimée, vous recevrez une alerte de Datadog à Workflows via Eventarc. Les workflows recréeront ensuite la VM supprimée pour rétablir le nombre de VM en cours d'exécution à deux.
Points abordés
- Découvrez comment activer l'intégration Google Cloud de Datadog.
- Découvrez comment créer un workflow pour vérifier et créer des VM Compute Engine.
- Découvrez comment connecter les alertes de surveillance Datadog à Workflows avec Eventarc.
- Découvrez comment créer un moniteur Datadog et une alerte en cas de suppression de VM.
2. Préparation
Configuration de l'environnement au rythme de chacun
- Connectez-vous à la console Google Cloud, puis créez un projet ou réutilisez un projet existant. (Si vous ne possédez pas encore de compte Gmail ou Google Workspace, vous devez en créer un.)



- Le nom du projet est le nom à afficher pour les participants au projet. Il s'agit d'une chaîne de caractères qui n'est pas utilisée par les API Google, et que vous pouvez modifier à tout moment.
- L'ID du projet doit être unique sur l'ensemble des projets Google Cloud et doit être immuable (vous ne pouvez pas le modifier une fois que vous l'avez défini). Cloud Console génère automatiquement une chaîne unique dont la composition importe peu, en général. Dans la plupart des ateliers de programmation, vous devrez référencer l'ID du projet (généralement identifié comme
PROJECT_ID), donc s'il ne vous convient pas, générez-en un autre au hasard ou définissez le vôtre, puis vérifiez s'il est disponible. Il est ensuite "gelé" une fois le projet créé. - La troisième valeur est le numéro de projet, utilisé par certaines API. Pour en savoir plus sur ces trois valeurs, consultez la documentation.
- Vous devez ensuite activer la facturation dans Cloud Console afin d'utiliser les ressources/API Cloud. L'exécution de cet atelier de programmation est très peu coûteuse, voire sans frais. Pour arrêter les ressources afin d'éviter qu'elles ne vous soient facturées après ce tutoriel, suivez les instructions de nettoyage indiquées à la fin de l'atelier. Les nouveaux utilisateurs de Google Cloud peuvent participer au programme d'essai sans frais pour bénéficier d'un crédit de 300$.
Démarrer Cloud Shell
Bien que Google Cloud puisse être utilisé à distance depuis votre ordinateur portable, nous allons nous servir de Google Cloud Shell pour cet atelier de programmation, un environnement de ligne de commande exécuté dans le cloud.
Dans la console Google Cloud, cliquez sur l'icône Cloud Shell dans la barre d'outils supérieure :

Le provisionnement et la connexion à l'environnement prennent quelques instants seulement. Une fois l'opération terminée, le résultat devrait ressembler à ceci :

Cette machine virtuelle contient tous les outils de développement nécessaires. Elle comprend un répertoire d'accueil persistant de 5 Go et s'exécute sur Google Cloud, ce qui améliore nettement les performances du réseau et l'authentification. Vous pouvez réaliser toutes les activités de cet atelier dans un simple navigateur.
Configurer gcloud
Dans Cloud Shell, définissez votre ID de projet et enregistrez-le en tant que variable PROJECT_ID.
Définissez également une variable REGION sur us-central1. Il s'agit de la région dans laquelle vous créerez des ressources ultérieurement.
PROJECT_ID=[YOUR-PROJECT-ID] REGION=us-central1 gcloud config set core/project $PROJECT_ID
Activer les API
Activez tous les services nécessaires :
gcloud services enable \ workflows.googleapis.com \ workflowexecutions.googleapis.com
3. Vérifier le canal Datadog
Assurez-vous que le canal Datadog que vous avez créé dans le premier atelier de programmation est actif. Dans Cloud Shell, exécutez la commande suivante pour récupérer les détails du canal :
CHANNEL_NAME=datadog-channel gcloud eventarc channels describe $CHANNEL_NAME --location $REGION
La sortie devrait ressembler à ce qui suit :
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'
Vous pouvez également consulter l'état du canal dans Google Cloud Console :

L'état du canal doit être ACTIVE. Si ce n'est pas le cas, revenez au premier atelier de programmation et suivez les étapes pour créer et activer un canal avec Datadog.
4. Activer l'intégration Google Cloud de Datadog
Pour utiliser Datadog afin de surveiller un projet, vous devez activer les API nécessaires pour Datadog, créer un compte de service et associer ce compte à Datadog.
Activer les API pour Datadog
gcloud services enable compute.googleapis.com \ cloudasset.googleapis.com \ monitoring.googleapis.com
Créer un compte de service
L'intégration Google Cloud de Datadog utilise un compte de service pour appeler l'API Cloud Logging et collecter des métriques au niveau des nœuds à partir de vos instances Compute Engine.
Créez un compte de service pour Datadog :
DATADOG_SA_NAME=datadog-service-account
gcloud iam service-accounts create $DATADOG_SA_NAME \
--display-name "Datadog Service Account"
Autorisez le compte de service Datadog à collecter des métriques, des tags, des événements et des libellés utilisateur en lui attribuant les rôles IAM suivants :
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
Créez et téléchargez une clé de compte de service. Vous avez besoin du fichier de clé pour terminer l'intégration à Datadog.
Créez un fichier de clé de compte de service dans le répertoire d'accueil de Cloud Shell :
gcloud iam service-accounts keys create ~/key.json \ --iam-account $DATADOG_SA_EMAIL
Dans Cloud Shell, cliquez sur More ⁝, puis sélectionnez Download File. Dans le champ File path, saisissez key.json. Pour télécharger le fichier de clé, cliquez sur Download.
Associer le compte de service à Datadog
Dans votre compte Datadog, accédez à la section Integrations et recherchez la tuile d'intégration Google Cloud :

Pointez sur Google Cloud Platform pour accéder à la page Install :

Installez l'intégration en important la clé du compte de service dans la section Upload Private Key File, puis en cliquant sur Install Integration :

Une fois l'intégration terminée, Datadog crée automatiquement plusieurs tableaux de bord liés à Google Cloud sous Dashboards :

5. Créer des VM Compute Engine
Créez ensuite des machines virtuelles (VM) Compute Engine. Vous surveillerez ces VM avec un moniteur Datadog et répondrez aux alertes Datadog avec un workflow dans Google Cloud.
Créez deux VM Compute Engine :
gcloud compute instances create instance-1 instance-2 --zone us-central1-a
Après une minute environ, vous devriez voir les VM créées et en cours d'exécution dans la console Cloud. Après un certain temps (généralement 10 minutes), vous devriez également voir ces VM dans Datadog, dans le tableau de bord Google Compute Engine sous Dashboards :

6. Créer un workflow
Maintenant que vous avez deux VM en cours d'exécution, créez un workflow qui répondra aux alertes d'un moniteur Datadog. Le workflow peut être aussi sophistiqué que vous le souhaitez. Dans ce cas, il vérifie le nombre d'instances de VM en cours d'exécution et, s'il est inférieur à 2, il crée de nouvelles instances de VM pour s'assurer qu'il y a toujours deux VM en cours d'exécution.
Créez un fichier workflow-datadog2.yaml avec le contenu suivant :
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}
Notez que le workflow reçoit un événement en tant que paramètre. Cet événement proviendra de la surveillance Datadog via Eventarc. Une fois l'événement reçu, le workflow vérifie le nombre d'instances en cours d'exécution et crée de nouvelles instances de VM si nécessaire.
Déployez le workflow :
WORKFLOW_NAME=workflow-datadog2 gcloud workflows deploy $WORKFLOW_NAME \ --source workflow-datadog2.yaml \ --location $REGION
Le workflow est déployé, mais pas encore en cours d'exécution. Il sera exécuté par un déclencheur Eventarc lorsqu'une alerte Datadog sera reçue.
7. Créer un déclencheur Eventarc
Vous êtes maintenant prêt à connecter les événements du fournisseur Datadog à des workflows avec un déclencheur Eventarc. Vous utiliserez le canal et le compte de service que vous avez configurés dans le premier atelier de programmation.
Créez un déclencheur avec le canal Datadog, le type d'événement et une destination de workflow :
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
Vous pouvez lister les déclencheurs pour vérifier que celui que vous venez de créer est actif :
gcloud eventarc triggers list --location $REGION NAME: datadog-trigger2 TYPE: datadog.v1.alert DESTINATION: Workflows: workflow-datadog2 ACTIVE: Yes
8. Créer un moniteur Datadog
Vous allez maintenant créer un moniteur Datadog et l'associer à Eventarc.
Le moniteur vérifie le nombre de VM Compute Engine en cours d'exécution et envoie une alerte s'il est inférieur à 2.
Pour créer un moniteur dans Datadog, connectez-vous à Datadog. Pointez sur Monitors dans le menu principal, puis cliquez sur New Monitor dans le sous-menu. Il existe de nombreux types d'écrans. Choisissez le type de moniteur Metric.
Sur la page New Monitor, créez un écran de contrôle avec les éléments suivants :
- Choisissez la méthode de détection :
Threshold. - Définissez la métrique :
gcp.gce.instance.is_runningdepuis (partout)sum by(tout) - Définissez les conditions d'alerte :
- Déclencher l'alerte lorsque la métrique est
belowau seuilat least onceau cours des dernières5 minutes - Seuil d'alerte :
< 2 - Informez votre équipe :
@eventarc_<your-project-id>_<your-region>_<your-channel-name> - Exemple de nom de surveillance :
Compute Engine instances < 2
Cliquez ensuite sur Create en bas de l'écran pour créer le moniteur.
9. Tester le moniteur et le déclencheur
Pour tester le moniteur Datadog, le déclencheur Eventarc et, enfin, le workflow, vous allez supprimer l'une des VM :
gcloud compute instances delete instance-2 --zone us-central1-a
Après quelques secondes, l'instance devrait être supprimée dans la console Google Cloud.
Un certain temps peut s'écouler avant que cette modification n'apparaisse dans Datadog. Après un certain temps (généralement 10 minutes), vous devriez voir le moniteur dans Datadog pour détecter et signaler ce problème dans la section Manage Monitors :

Une fois que le moniteur Datadog émet une alerte, vous devriez la voir s'afficher dans Workflows via Eventarc. Si vous consultez les journaux de Workflows, vous devriez voir que Workflows vérifie la différence entre le nombre d'instances actuel et le nombre d'instances attendu :
2022-03-28 09:30:53.371 BST instanceCount->1 diffInstanceCount->1
Il répond à cette alerte en créant une instance de VM avec le préfixe datadog-instance-##.
Au final, vous aurez toujours deux VM dans votre projet : celle que vous avez créée initialement et celle créée par Workflows après l'alerte Datadog.

10. Félicitations
Félicitations, vous avez terminé cet atelier de programmation.
Points abordés
- Découvrez comment activer l'intégration Google Cloud de Datadog.
- Découvrez comment créer un workflow pour vérifier et créer des VM Compute Engine.
- Découvrez comment connecter les alertes de surveillance Datadog à Workflows avec Eventarc.
- Découvrez comment créer un moniteur Datadog et une alerte en cas de suppression de VM.