Acheminer les alertes de surveillance Datadog vers Google Cloud avec Eventarc (partie 1)

1. Introduction

cb762f29e9183a3f.png 3c7ca8629bc25d9c.png

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.

Dans ce premier atelier de programmation, vous allez apprendre à router une simple alerte de surveillance Datadog vers Google Cloud avec Eventarc.

Points abordés

  • Découvrez comment trouver le fournisseur Datadog.
  • Configurer un canal pour le fournisseur Datadog
  • Découvrez comment créer un workflow pour consigner des événements.
  • Découvrez comment créer un déclencheur Eventarc avec le canal.
  • Découvrez comment créer un moniteur Datadog.
  • Découvrez comment tester le moniteur Datadog, le déclencheur Eventarc et le workflow.

2. Préparation

Configuration de l'environnement au rythme de chacun

  1. 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.)

b35bf95b8bf3d5d8.png

a99b7ace416376c4.png

bd84a6d3004737c5.png

  • Le nom du projet est le nom à afficher pour les participants au projet. Il s'agit d'une chaîne de caractères non utilisée par les API Google. Vous pouvez le 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). La console Cloud génère automatiquement une chaîne unique (en général, vous n'y accordez d'importance particulière). Dans la plupart des ateliers de programmation, vous devrez indiquer l'ID du projet (généralement identifié par PROJECT_ID). Si l'ID généré ne vous convient pas, vous pouvez en générer un autre de manière aléatoire. Vous pouvez également en spécifier un et voir s'il est disponible. Après cette étape, l'ID n'est plus modifiable et restera donc le même pour toute la durée du projet.
  • Pour information, il existe une troisième valeur (le numéro de projet) que certaines API utilisent. Pour en savoir plus sur ces trois valeurs, consultez la documentation.
  1. Vous devez ensuite activer la facturation dans la console Cloud pour utiliser les ressources/API Cloud. L'exécution de cet atelier de programmation est très peu coûteuse, voire sans frais. Pour désactiver les ressources et éviter ainsi que des frais ne vous soient facturés après ce tutoriel, vous pouvez supprimer le projet ou les ressources que vous avez créées. 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 :

55efc1aaa7a4d3ad.png

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

7ffe5cbb04455448.png

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 effectuer toutes les tâches de cet atelier de programmation dans un navigateur. Vous n'avez rien à installer.

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 \
  eventarc.googleapis.com \
  eventarcpublishing.googleapis.com \
  workflows.googleapis.com \
  workflowexecutions.googleapis.com

3. Découvrir le fournisseur Datadog

Un fournisseur Eventarc est un service ou une entité pouvant directement envoyer à Google Cloud des événements qui sont ensuite acheminés vers votre projet. Les fournisseurs tiers, tels que Datadog, sont des fournisseurs non Google Cloud qui sont intégrés à Google Cloud via Eventarc.

Dans Cloud Shell, exécutez la commande suivante pour afficher la liste des fournisseurs Google Cloud et tiers :

gcloud eventarc providers list

Vous trouverez ci-dessous la liste des fournisseurs Google Cloud et tiers, ainsi que les zones dans lesquelles ils sont disponibles :

NAME: storage.googleapis.com
LOCATION: asia

NAME: cloudaudit.googleapis.com
LOCATION: asia

NAME: pubsub.googleapis.com
LOCATION: asia

...

Vous pouvez affiner la liste pour n'afficher que les fournisseurs tiers à l'aide de cette commande :

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

Datadog devrait s'afficher dans la liste :

NAME: datadog
LOCATION: us-central1

Vous pouvez également décrire le fournisseur Datadog pour voir les événements qu'il prend en charge :

gcloud eventarc providers describe datadog --location $REGION

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

4. Configurer une chaîne

Vous devez configurer un canal pour intégrer votre projet à un fournisseur. Cela implique de créer un canal, de récupérer ses détails et de les envoyer au fournisseur. Une fois que le fournisseur a initialisé la connexion au canal, il peut commencer à envoyer des événements à votre projet.

Créer une chaîne

Vous pouvez créer un canal pour le fournisseur Datadog à l'aide de gcloud :

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

Vous pouvez également le créer à partir de la section "Canaux" de la page Eventarc dans la console Google Cloud :

d03a7173b25e5ea6.png

Récupérer les informations sur la chaîne

Une fois la chaîne créée, récupérez ses détails à partir de gcloud :

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: PENDING
uid: 183d3323-8cas-4e95-8d72-7d8c8b27cf9e
updateTime: '2022-03-09T09:53:48.290217299Z'

De même, vous pouvez voir le canal dans la console Google Cloud :

80d8b2b6a46cb4c5.png

L'état du canal indique son statut. Il peut s'agir de l'un des suivants :

  • PENDING : le canal a bien été créé et un jeton d'activation est disponible pour créer une connexion avec le fournisseur. Pour modifier l'état de la chaîne de PENDING à ACTIVE, le jeton doit être fourni au fournisseur et utilisé pour associer la chaîne dans les 24 heures suivant sa création.
  • ACTIVE : la chaîne a bien été associée au fournisseur. Un canal ACTIVE est prêt à recevoir et à acheminer les événements du fournisseur.
  • INACTIVE : la chaîne ne peut pas recevoir d'événements ni être réactivée. Le fournisseur est déconnecté de ce canal ou le jeton d'activation du canal a expiré et le fournisseur n'est pas connecté. Pour rétablir une connexion avec un fournisseur, vous devez créer une chaîne pour celui-ci.

Un jeton d'activation est un jeton à usage unique et limité dans le temps. Il permet de créer une connexion entre un fournisseur et le projet d'un abonné. Seul un fournisseur spécifique, sélectionné lors de la création du canal, peut utiliser le jeton. Le jeton est valide pendant 24 heures après la création de la chaîne. Au bout de 24 heures, la chaîne passe à l'état INACTIVE.

Envoyer les informations sur la chaîne au fournisseur

Vous devez envoyer les informations suivantes sur le canal au fournisseur Datadog :

  • Nom de la chaîne (par exemple, projects/project-id/locations/us-central1/channels/datadog-channel)
  • Jeton d'activation (par exemple, so5g4Kdasda7y2MSasdaGn8njB2)

Connectez-vous à Datadog, accédez à la page des intégrations et assurez-vous que l'intégration Google Eventarc est installée :

9736bd517e1fa19a.png

Dans la section de configuration de Google Eventarc, saisissez le nom complet du canal et le jeton d'activation :

a17f522075cdd92e.png

Le canal devrait maintenant s'afficher dans la liste des canaux. Après quelques secondes, il devrait également devenir actif dans la console Google Cloud :

8399d528ccbd4c20.png

Vous êtes maintenant prêt à utiliser la chaîne.

5. Créer un workflow

Vous avez besoin d'une destination dans Google Cloud pour recevoir les événements du fournisseur. Eventarc est compatible avec plusieurs destinations d'événements, comme Cloud Run, Workflows et les services Kubernetes. Dans ce cas, déployez un workflow pour enregistrer simplement les événements reçus.

Créez un fichier workflow-datadog1.yaml avec le contenu suivant :

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

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 le consigne simplement.

Déployez le workflow :

WORKFLOW_NAME=workflow-datadog1
gcloud workflows deploy $WORKFLOW_NAME \
  --source workflow-datadog1.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.

6. 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.

Configurer un compte de service

Vous avez besoin d'un compte de service avec le rôle eventarc.eventReceiver lorsque vous créez un déclencheur. Vous pouvez créer un compte de service dédié ou utiliser le compte de service de calcul par défaut.

Pour plus de simplicité, utilisez le compte de service Compute par défaut et attribuez le rôle 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

Créer un déclencheur

Créez un déclencheur avec le canal Datadog, le type d'événement et une destination de workflow :

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

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-trigger1
TYPE: datadog.v1.alert
DESTINATION: Workflows: workflow-datadog1
ACTIVE: Yes

7. Créer un moniteur Datadog

Vous allez maintenant créer un moniteur Datadog et l'associer à Eventarc.

Il s'agira d'un moniteur de type Hello World avec des valeurs par défaut. Vous le déclencherez manuellement pour générer les alertes de surveillance, qui à leur tour généreront un événement Eventarc dans Google Cloud.

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, conservez les valeurs par défaut pour les étapes 1 et 2.

  • À l'étape 3, définissez Alert threshold sur 1.
  • À l'étape 4, définissez Test monitor for Eventarc comme nom du moniteur et Notify your team sur @eventarc_<your-project-id>_<your-region>_<your-channel-name>.

Laissez la page du moniteur ouverte pour l'étape suivante, au cours de laquelle vous allez tester le moniteur.

8. Tester le moniteur et le déclencheur

Pour tester le moniteur Datadog et le déclencheur Eventarc, vous allez déclencher manuellement le moniteur.

En bas de la page de création du moniteur, cliquez sur le bouton Test Notifications :

32ccf1cc47b01150.png

Ensuite, cliquez sur le bouton Run Test :

7f2ff70ec673007b.png

Cela devrait simuler la transition d'état dans le moniteur et déclencher un événement Eventarc.

Vérifiez le workflow workflow-datadog1. Vous devriez voir qu'une nouvelle exécution a été effectuée :

adf7cd97ca2e8da7.png

Vérifiez les détails de l'exécution. Vous devriez voir le type d'événement Datadog datadog.v1.alert généré à partir de l'alerte de surveillance dans l'entrée du workflow et également dans les journaux :

dc78fd8460e5fc0e.png

9. Félicitations

Félicitations, vous avez terminé cet atelier de programmation. Vous pouvez passer au deuxième atelier de programmation pour découvrir comment répondre aux alertes de surveillance Datadog avec les workflows.

Points abordés

  • Découvrez comment trouver le fournisseur Datadog.
  • Configurer un canal pour le fournisseur Datadog
  • Découvrez comment créer un workflow pour consigner des événements.
  • Découvrez comment créer un déclencheur Eventarc avec le canal.
  • Découvrez comment créer un moniteur Datadog.
  • Découvrez comment tester le moniteur Datadog, le déclencheur Eventarc et le workflow.