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

1. Introduction

cb762f29e9183a3f.png 3c7ca8629bc25d9c.png

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.

Dans ce premier atelier de programmation, vous allez apprendre à acheminer une simple alerte de surveillance Datadog vers Google Cloud à l'aide d'Eventarc.

Points abordés

  • Comment découvrir le fournisseur Datadog.
  • Configurer un canal pour le fournisseur Datadog
  • Créer un workflow pour consigner des événements
  • Créer un déclencheur Eventarc avec le canal
  • Comment créer un système de surveillance Datadog.
  • Tester la surveillance 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. généralement, vous ne vous souciez pas de ce que c’est. Dans la plupart des ateliers de programmation, vous devrez référencer l'ID du projet (il est généralement identifié comme PROJECT_ID). Si l'ID généré ne vous convient pas, vous pouvez en générer un autre au hasard. Vous pouvez également essayer la vôtre pour voir si elle est disponible. Il ne peut pas être modifié après cette étape et restera actif pendant toute la durée du projet.
  • Pour votre information, il existe une troisième valeur, le numéro de projet, utilisé par certaines API. 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 arrêter les ressources afin d'éviter que des frais ne vous soient facturés au-delà de ce tutoriel, vous pouvez supprimer les ressources que vous avez créées ou l'ensemble du projet. 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 :

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

3. Découvrez le fournisseur Datadog

Un fournisseur Eventarc est un service ou une entité qui peut émettre des événements directement dans Google Cloud, qui sont ensuite acheminés vers votre projet. Les fournisseurs tiers, tels que Datadog, sont des fournisseurs autres que Google Cloud qui s'intègrent à 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

Il répertorie les fournisseurs Google Cloud et tiers, ainsi que les emplacements où ils sont disponibles:

NAME: storage.googleapis.com
LOCATION: asia

NAME: cloudaudit.googleapis.com
LOCATION: asia

NAME: pubsub.googleapis.com
LOCATION: asia

...

Vous pouvez limiter la liste aux fournisseurs tiers à l'aide de la commande suivante:

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

Datadog devrait figurer dans la liste:

NAME: datadog
LOCATION: us-central1

Vous pouvez également décrire le fournisseur Datadog pour afficher les événements qu'il accepte:

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 les détails du canal 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 depuis la section "Canaux" de la page "Eventarc" dans la console Google Cloud:

d03a7173b25e5ea6.png

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

Une fois la chaîne créée, récupérez ses informations à 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 de la chaîne indique son état. Il peut s'agir de l'un des suivants :

  • PENDING : le canal a bien été créé et un jeton d'activation est disponible pour établir une connexion avec le fournisseur. Pour que l'état du canal passe de PENDING à ACTIVE, le jeton doit être transmis au fournisseur et utilisé pour associer la chaîne dans les 24 heures suivant sa création.
  • ACTIVE : le canal a bien été associé 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 la connexion avec un fournisseur, vous devez créer un autre canal 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 devient INACTIVE.

Envoyer les informations de la chaîne au fournisseur

Vous devez envoyer les informations de canal suivantes 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 de 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. Au bout de 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 des événements du fournisseur. Eventarc est compatible avec un certain nombre de destinations d'événements, telles que Cloud Run, Workflows et les services Kubernetes. Dans ce cas, déployez un workflow pour consigner 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 l'enregistre.

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

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

Configurer le compte de service

Vous devez disposer d'un compte de service doté du rôle eventarc.eventReceiver pour créer un déclencheur. Vous pouvez créer un compte de service dédié ou utiliser le compte de service Compute par défaut.

Pour plus de simplicité, utilisez le compte de service Compute par défaut et attribuez-lui 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 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-trigger1
TYPE: datadog.v1.alert
DESTINATION: Workflows: workflow-datadog1
ACTIVE: Yes

7. Créer une surveillance Datadog

Vous allez maintenant créer une surveillance Datadog et la connecter à Eventarc.

Il s'agira d'une surveillance de type Hello World avec des valeurs par défaut. Vous allez la déclencher manuellement pour générer les alertes de surveillance, qui généreront ensuite un événement Eventarc dans Google Cloud.

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, 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 de surveillance et Notify your team sur @eventarc_<your-project-id>_<your-region>_<your-channel-name>.

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

8. Tester la surveillance et le déclencheur

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

En bas de la page de création de surveillance, 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 la surveillance et déclencher un événement Eventarc.

Vérifiez le workflow workflow-datadog1. Une nouvelle exécution doit s'afficher:

adf7cd97ca2e8da7.png

Vérifiez les détails de l'exécution. Le type d'événement Datadog datadog.v1.alert généré à partir de l'alerte de surveillance doit s'afficher dans l'entrée du workflow et 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 apprendre à répondre aux alertes de surveillance Datadog à l'aide de Workflows.

Points abordés

  • Comment découvrir le fournisseur Datadog.
  • Configurer un canal pour le fournisseur Datadog
  • Créer un workflow pour consigner des événements
  • Créer un déclencheur Eventarc avec le canal
  • Comment créer un système de surveillance Datadog.
  • Tester la surveillance Datadog, le déclencheur Eventarc et le workflow