1. Introduction
Eventarc facilite la connexion des services Google Cloud à des événements provenant de différentes sources. Il vous permet de créer des architectures basées sur des événements dans lesquelles des microservices sont faiblement couplés et distribués. Il se charge également de l'ingestion, de la diffusion, de la sécurité, de l'autorisation et de la gestion des erreurs des événements 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 les traces, les métriques et les 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 les 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, et n'importe quelle API HTTP.
Dans le premier atelier de programmation, vous avez appris à acheminer 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 avec un moniteur Datadog. Une fois l'une des VM supprimée, vous recevrez une alerte de Datadog concernant Workflows via Eventarc. Workflows recrée ensuite la VM supprimée pour ramener le nombre de VM en cours d'exécution à deux.
Points abordés
- Activer l'intégration de Datadog à Google Cloud
- Créer un workflow pour vérifier et créer des VM Compute Engine
- Connecter des alertes de surveillance Datadog à Workflows avec Eventarc
- Créer une surveillance Datadog et une alerte sur les suppressions 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 gratuit 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 l'ID de votre 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 la console Google Cloud:
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 de Datadog à Google Cloud
Pour surveiller un projet à l'aide de Datadog, vous devez activer les API nécessaires à Datadog, créer un compte de service et connecter celui-ci à Datadog.
Activer des 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 afin de collecter des métriques au niveau du nœud à 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 étiquettes utilisateur en 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 avec Datadog.
Créez un fichier de clé de compte de service dans votre répertoire d'accueil 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
.
Connecter le compte de service à Datadog
Dans votre compte Datadog, accédez à la section Integrations
et recherchez la tuile d'intégration Google Cloud
:
Passez la souris sur Google Cloud Platform
pour accéder à la page Install
:
Installez l'intégration en important la clé de 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 associés à Google Cloud sous Dashboards
:
5. Créer des VM Compute Engine
Créez ensuite des machines virtuelles (VM) Compute Engine. Vous allez surveiller ces VM à l'aide d'un moniteur Datadog et répondre 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
Les VM créées et exécutées en l'espace d'une minute doivent s'afficher 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, mais dans ce cas, il vérifie le nombre d'instances de VM en cours d'exécution. S'il est inférieur à 2, il crée des instances de VM pour s'assurer que deux VM sont en cours d'exécution en permanence.
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 des 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 il n'est pas encore en cours d'exécution. Elle sera exécutée 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 à Workflows à l'aide d'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 répertorier les déclencheurs pour vérifier que le déclencheur 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 une surveillance Datadog
Vous allez maintenant créer une surveillance Datadog et la connecter à 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 une surveillance 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 de surveillance. Sélectionnez le type de surveillance Metric
.
Sur la page New Monitor
, créez une surveillance avec les éléments suivants:
- Choisissez la méthode de détection:
Threshold
. - Définir la métrique "
gcp.gce.instance.is_running
" de (partout)sum by
(tous) - Définissez les conditions d'alerte:
- Déclencher lorsque la métrique est
below
au seuilat least once
au cours de la dernière période de5 minutes
- Seuil d'alerte:
< 2
- Prévenir votre équipe:
@eventarc_<your-project-id>_<your-region>_<your-channel-name>
- Exemple de nom de moniteur:
Compute Engine instances < 2
Appuyez maintenant sur Create
en bas pour créer le moniteur.
9. Tester la surveillance et le déclencheur
Pour tester la surveillance Datadog, le déclencheur Eventarc, puis le workflow, vous devez supprimer l'une des VM:
gcloud compute instances delete instance-2 --zone us-central1-a
Après quelques secondes, l'instance doit être supprimée dans la console Google Cloud.
Il y a un peu de latence pour que cette modification s'affiche dans Datadog. Après un certain temps (généralement 10 minutes), le moniteur doit s'afficher dans Datadog pour détecter et alerter dans la section Manage Monitors
:
Une fois que Datadog a surveillé les alertes, celle-ci doit être transmise à Workflows via Eventarc. Si vous consultez les journaux de Workflows, vous devriez constater que Workflows vérifie la différence entre le nombre actuel d'instances et le nombre attendu d'instances:
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 bout du compte, vous aurez toujours deux VM dans votre projet : l'une que vous avez créée initialement et l'autre par Workflows après l'alerte Datadog.
10. Félicitations
Félicitations, vous avez terminé cet atelier de programmation.
Points abordés
- Activer l'intégration de Datadog à Google Cloud
- Créer un workflow pour vérifier et créer des VM Compute Engine
- Connecter des alertes de surveillance Datadog à Workflows avec Eventarc
- Créer une surveillance Datadog et une alerte sur les suppressions de VM