Alertes: tests de disponibilité sur des sujets Pub/Sub

1. Introduction

Dernière mise à jour : 21 juin 2023

Alertes sur les tests de disponibilité pour la disponibilité

Les alertes sur les vérifications du temps d'activité vous permettent d'identifier et de résoudre rapidement les problèmes susceptibles d'affecter vos services. En étant alerté des pannes, vous pouvez prendre des mesures pour minimiser leur impact sur vos utilisateurs et vos clients.

Les vérifications du temps d'activité sont effectuées à intervalles réguliers, dont le plus court est de 60 secondes. Il peut également être utile de surveiller les codes d'erreur en tant qu'événements dynamiques à l'aide d'alertes basées sur les journaux. Cela peut vous fournir un indicateur supplémentaire d'indisponibilité si vous avez besoin d'une précision supérieure à 60 secondes. Si un intervalle de 60 secondes ou plus est acceptable, les vérifications du temps d'activité constituent un moyen simple de mesurer votre service avec peu de configuration supplémentaire.

Si un service n'est pas disponible, un test de disponibilité détecte le problème même en l'absence de trafic. Le trafic, en revanche, peut être affecté par des facteurs tels que la maintenance, les mises à niveau et même des facteurs externes au système, comme le mauvais temps ou les événements sportifs qui détournent l'utilisation.

Pour savoir quand utiliser les vérifications du temps d'activité, consultez Assurer le temps d'activité de vos ressources Google Cloud.

Sujets Pub/Sub comme canal de notification d'alerte

Un sujet Pub/Sub peut être utilisé comme canal de notification Google Cloud Monitoring pour envoyer des alertes à un abonnement Pub/Sub. Cela vous permet d'intégrer vos alertes Cloud Monitoring à d'autres systèmes, y compris des services de notification tiers.

Pour utiliser un sujet Pub/Sub comme canal de notification, vous devez d'abord créer un sujet et un abonnement Pub/Sub. Vous devez ensuite créer un canal de notification Cloud Monitoring qui utilise le sujet Pub/Sub comme destination.

Lorsqu'une alerte est déclenchée, Cloud Monitoring envoie un message au sujet Pub/Sub. L'abonné Pub/Sub peut ensuite traiter le message et prendre les mesures appropriées.

Objectifs de l'atelier

Dans cet atelier de programmation, vous allez déployer une application, créer un sujet Pub/Sub et créer une alerte de test de disponibilité pour l'application qui utilise le sujet Pub/Sub comme canal de notification.

Points abordés

  • Créer un sujet Pub/Sub
  • Créer un test de disponibilité et une alerte

Cet atelier de programmation porte sur la création d'une alerte pour un test de disponibilité. Les concepts et le code d'application non pertinents ne sont pas abordés, mais vous sont fournis afin que vous puissiez simplement les copier et les coller.

Prérequis

  • Un compte Google Cloud disposant des autorisations suivantes :
  • Déployer des applications Cloud Run
  • Créer des sujets Pub/Sub
  • Créer des tests de disponibilité
  • Créer des alertes

2. Configuration

Sélectionner ou créer un projet Google Cloud

Pour sélectionner un projet existant, utilisez le menu déroulant :

b35bf95b8bf3d5d8.png

Pour créer un projet dans Google Cloud, procédez comme suit :

  1. Accédez à la console Google Cloud Platform.
  2. Cliquez sur le bouton Créer un projet.
  3. Saisissez le nom de votre projet.
  4. Sélectionnez un compte de facturation pour votre projet.
  5. Cliquez sur le bouton Créer.

Votre projet sera créé et vous serez redirigé vers le tableau de bord du projet. Vous pourrez ensuite commencer à utiliser les services Google Cloud.

Voici quelques informations supplémentaires sur chaque étape :

  • Nom : le nom de votre projet doit être unique au sein de votre organisation.
  • Compte de facturation : vous pouvez utiliser un compte de facturation existant ou en créer un.
  • Créer : une fois que vous avez saisi toutes les informations requises, cliquez sur le bouton Créer pour créer votre projet.

Pour en savoir plus, consultez la documentation Google Cloud sur la création de projets.

3. Déployer l'application d'API

Quel est l'objet de l'application ou de l'API exemple ?

Notre application est une application simple de l'API Inventory qui expose un point de terminaison d'API REST avec quelques opérations permettant de lister les articles de l'inventaire et d'obtenir le nombre d'articles spécifiques en stock.

Une fois l'API déployée et en supposant qu'elle soit hébergée sur https://<somehost>, nous pouvons accéder aux points de terminaison de l'API comme suit :

https://<somehost>/inventory

Tous les produits et leurs niveaux de stock disponibles seront listés.

https://<somehost>/inventory/{productid}

Vous obtiendrez ainsi un seul enregistrement avec l'ID du produit et le niveau de stock disponible pour ce produit.

Les données de réponse renvoyées sont au format JSON.

Remarque : Cette application API est uniquement destinée à des fins de démonstration et ne représente pas une implémentation d'API sécurisée et robuste. Il est destiné à nous fournir une application rapide pour explorer l'objectif principal de l'atelier, à savoir les opérations Google Cloud.

Exemple de données et de requête/réponse API

Pour plus de simplicité, l'application n'est pas alimentée par une base de données au niveau du backend. Il contient trois exemples d'ID de produits et leurs niveaux de stock disponibles.

Identifiant de produit

Niveau d'inventaire disponible

I-1

10

I-2

20

I-3

30

Vous trouverez ci-dessous un exemple de requête et de réponse de l'API :

Requête API

Réponse de l'API

https://<somehost>/inventory

[ { "I-1": 10, "I-2": 20, "I-3": 30 }]

https://<somehost>/inventory/I-1

{ "productid": "I-1", "qty": 10}

https://<somehost>/inventory/I-2

{ "productid": "I-2", "qty": 20}

https://<somehost>/inventory/I-200

{ "productid": I-200, "qty": -1}

Cloner le dépôt

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.

Depuis la console GCP, cliquez sur l'icône Cloud Shell de la barre d'outils située dans l'angle supérieur droit :

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

f6ef2b5f13479f3a.png

Cette machine virtuelle contient tous les outils de développement dont vous avez besoin. 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.

PROJECT_ID=[YOUR-PROJECT-ID]

gcloud config set project $PROJECT_ID

Exécutez maintenant la commande suivante :

$ git clone https://github.com/rominirani/cloud-code-sample-repository.git

Un dossier intitulé "cloud-code-sample-repository" sera créé dans ce dossier.

(Facultatif) Exécuter l'application sur Cloud Shell

Pour exécuter l'application en local, procédez comme suit :

  1. Depuis le terminal, accédez à la version Python de l'API à l'aide de la commande suivante :

$ cd cloud-code-sample-repository

$ cd python-flask-api

  1. Dans le terminal, saisissez la commande suivante (au moment de la rédaction, Cloud Shell est fourni avec Python 3.9.x installé. Nous utiliserons la version par défaut. Si vous prévoyez de l'exécuter localement sur votre ordinateur portable, vous pouvez utiliser Python 3.8 ou une version ultérieure :

$ python app.py

  1. Vous pouvez exécuter la commande suivante pour démarrer le serveur Python en local.

1f798fbddfdc2c8e.png 46edf454cc70c5a6.png

Cliquez sur "Prévisualiser sur le port 8080". 5. Une fenêtre de navigateur s'ouvre. Une erreur 404 s'affiche, mais ce n'est pas grave. Modifiez l'URL pour qu'elle ne contienne que "/inventory" après le nom d'hôte.

Par exemple, sur mon ordinateur, cela ressemble à ceci :

https://8080-cs-557561579860-default.cs-asia-southeast1-yelo.cloudshell.dev/inventory

La liste des articles d'inventaire s'affiche, comme expliqué précédemment :

709d57ee2f0137e4.png

  1. Vous pouvez arrêter le serveur maintenant en accédant au terminal et en appuyant sur Ctrl+C.

Déployer l'application

Nous allons maintenant déployer cette application d'API sur Cloud Run. Le processus impliquait l'utilisation du client de ligne de commande gcloud pour exécuter la commande permettant de déployer le code sur Cloud Run.

Dans le terminal, exécutez la commande gcloud suivante :

$ gcloud run deploy --source .

Plusieurs questions vous seront posées. Voici quelques-uns des points abordés :

  1. Nom du service (python-flask-api) : vous pouvez conserver ce nom par défaut ou en choisir un autre, par exemple my-inventory-api.
  2. API [run.googleapis.com] not enabled on project [613162942481]. Voulez-vous activer et réessayer (cela prendra quelques minutes) ? (y/N)? O
  3. Veuillez spécifier une région : choisissez 31 (us-west-1).
  4. API [artifactregistry.googleapis.com] not enabled on project [613162942481]. Voulez-vous activer et réessayer (cela prendra quelques minutes) ? (y/N)? O
  5. Le déploiement à partir de la source nécessite un dépôt Docker Artifact Registry pour stocker les conteneurs créés. Un dépôt nommé [cloud-run-source-deploy] sera créé dans la région [us-west1].
  6. Do you want to continue (Y/n)? O
  7. Autoriser les appels non authentifiés vers [my-inventory-api] (y/N) ? O

Cela lancera le processus de conteneurisation de votre code source, de transfert vers Artifact Registry, puis de déploiement du service et de la révision Cloud Run. Soyez patient pendant ce processus (qui peut prendre trois à quatre minutes). Une fois terminé, l'URL du service s'affiche.

Voici un exemple d'exécution :

87ba8dbf88e8cfa4.png

Tester l'application

Maintenant que nous avons déployé l'application sur Cloud Run, vous pouvez accéder à l'application d'API comme suit :

  1. Notez l'URL du service de l'étape précédente. Par exemple, dans ma configuration, il s'affiche sous la forme https://my-inventory-api-bt2r5243dq-uw.a.run.app. Appelons-le <SERVICE_URL>.
  2. Ouvrez un navigateur et accédez aux trois URL suivantes pour les points de terminaison de l'API :
  3. <SERVICE_URL>/inventory
  4. <SERVICE_URL>/inventory/I-1
  5. <SERVICE_URL>/inventory/I-100

Il doit correspondre aux spécifications que nous avons fournies dans une section précédente avec un exemple de requête et de réponse d'API.

Obtenir les détails du service à partir de Cloud Run

Nous avons déployé notre service d'API sur Cloud Run, un environnement de calcul sans serveur. Nous pouvons accéder au service Cloud Run via la console Google Cloud à tout moment.

Dans le menu principal, accédez à Cloud Run. La liste des services que vous exécutez dans Cloud Run s'affiche. Vous devriez voir le service que vous venez de déployer. Selon le nom que vous avez sélectionné, l'écran qui s'affiche devrait ressembler à ce qui suit :

2633965c4bc957cc.png

Cliquez sur le nom du service pour afficher les détails. Vous trouverez ci-dessous les détails de l'échantillon :

33042ae64322ce07.png

Notez l'URL, qui n'est autre que l'URL du service que vous pouvez saisir dans le navigateur pour accéder à l'API Inventory que nous venons de déployer. Consultez les métriques et d'autres informations.

Commençons par la suite Google Cloud Operations.

4. Créer un sujet Pub/Sub pour recevoir la notification d'alerte

Pour créer un sujet Pub/Sub, vous pouvez suivre ces étapes dans la console Google Cloud :

  1. Recherchez Pub/Sub dans le champ de recherche, puis accédez à Pub/Sub. 935028bd8f6328ef.png
  2. Si ce n'est pas déjà fait, cliquez sur l'onglet Thèmes. 7fd8bf91386a88fd.png
  3. Cliquez sur le bouton Créer un sujet. cd9d197f9023c41b.png
  4. Saisissez un nom pour votre thème.

173f313b4a3c4934.png

  1. Cliquez sur le bouton Créer. ca9a02477da21a44.png
  2. Copiez le nom du sujet à l'aide de l'icône de copie. Vous en aurez besoin pour la section suivante.

20848252ee83df93.png

5. Créer un test de disponibilité

Pour créer un test de disponibilité pour une application Google Cloud Run :

  1. Accédez à la console Google Cloud Platform.
  2. Cliquez sur l'onglet Surveillance.
  3. Cliquez sur l'onglet Tests de disponibilité.
  4. En haut de la page, cliquez sur le bouton Créer un test de disponibilité.

96561799ca500777.png

  1. Utilisez les valeurs suivantes :
  2. Protocole : HTTPS
  3. Type de ressource : URL
  4. Nom d'hôte : saisissez la partie de l'URL du service Cloud Run sans le préfixe https. Vous trouverez un exemple sur l'écran ci-dessous. Si vous ne connaissez pas l'URL du service, accédez à Cloud Run depuis la console Google Cloud principale, puis accédez aux détails du service Cloud Run comme expliqué précédemment pour obtenir l'URL du service.
  5. Chemin d'accès : healthy
  6. Fréquence de vérification : 1 minute

342865c6d921ff41.png

  1. Cliquez sur Continuer.
  2. Activez l'option La correspondance de contenu est activée.
  3. Saisissez "All Izz Well" sous Contenu de la réponse. Cette chaîne se trouve déjà dans l'application lorsqu'elle envoie des réponses complètes.
  4. Keep

6c9ad336b5479478.png

  1. Laissez le paramètre Codes de réponse HTTP acceptés défini sur Classes de codes de réponse et 2xx comme seule classe de codes de réponse. De cette façon, seuls les codes de réponse 2xx seront évalués pour la chaîne, et tout autre code sera automatiquement considéré comme un échec. 5a75d8a9e8a11dd4.png
  2. Cliquez sur Continuer.
  3. Sélectionnez le sujet Cloud Pub/Sub comme canal de notification, puis cliquez sur OK.

d00db9f6ac56d07c.png

  1. Cliquez sur Continuer.
  2. Ajouter un titre reconnaissable d639135da780cce3.png
  3. Cliquez sur le bouton Tester.

968753a66ed43a75.png

  1. Vérifiez, puis cliquez sur le bouton Créer lorsque vous êtes prêt. 72e5e2081a36d902.png

Votre test de disponibilité est créé et commence à surveiller votre application Cloud Run. Vous pouvez consulter l'état de votre test de disponibilité dans l'onglet Tests de disponibilité.

3fd026b0c07ef4ec.png

6. Félicitations

Félicitations, vous avez correctement configuré votre test de disponibilité pour envoyer des alertes à Pub/Sub.