À propos de cet atelier de programmation
1. Introduction
Dernière mise à jour:21 juin 2023
Alertes sur les tests de disponibilité pour vérifier la disponibilité
Les alertes sur les tests de disponibilité vous permettent d'identifier et de résoudre rapidement les problèmes susceptibles d'affecter vos services. En étant alerté en cas d'indisponibilité, vous pouvez prendre des mesures pour minimiser l'impact sur vos utilisateurs et vos clients.
Les tests de disponibilité s'effectuent par intervalles, 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 via des alertes basées sur les journaux. Cela constitue un indicateur supplémentaire de l'indisponibilité si vous avez besoin d'une précision supérieure à 60 secondes. Si un intervalle de 60 secondes ou plus est acceptable, les tests de disponibilité constituent un moyen simple de mesurer votre service avec un minimum 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. La circulation, en revanche, peut être affectée par des facteurs tels que la maintenance, les mises à niveau et même des facteurs externes au système, comme le mauvais temps ou des événements sportifs qui perturbent l'utilisation.
Pour savoir quand utiliser les tests de disponibilité, consultez Vérifier 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. Vous pouvez ainsi 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é de l'abonnement Pub/Sub peut alors 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, puis 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 nécessaires pour:
- 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:
Pour créer un projet dans Google Cloud, procédez comme suit:
- Accédez à la console Google Cloud Platform.
- Cliquez sur le bouton Créer un projet.
- Saisissez le nom de votre projet.
- Sélectionnez un compte de facturation pour votre projet.
- Cliquez sur le bouton Créer.
Votre projet est créé et vous êtes redirigé vers le tableau de bord du projet. Vous pouvez alors commencer à utiliser les services Google Cloud.
Vous trouverez ci-dessous des 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 API
En quoi consiste l'exemple d'application ou d'API ?
Notre application est une application d'API Inventory simple qui expose un point de terminaison d'API REST en quelques opérations pour répertorier les articles en stock et obtenir un nombre spécifique d'articles.
Une fois l'API déployée et en supposant qu'elle est hébergée sur https://<somehost>, nous pouvons accéder aux points de terminaison de l'API comme suit:
https://<somehost>/inventory
Tous les articles ainsi que les niveaux de stock disponibles s'affichent.
https://<somehost>/inventory/{productid}
Vous obtiendrez ainsi un enregistrement unique avec l'ID du produit et le niveau d'inventaire disponible pour ce produit.
Les données de réponse renvoyées sont au format JSON.
Remarque: Cette application d'API est fournie à titre de démonstration uniquement. Elle ne constitue pas une implémentation d'API robuste et sécurisée. L'objectif est de disposer d'une application rapide permettant de découvrir l'objectif principal de cet atelier, à savoir Google Cloud Operations.
Exemples de données et requête/réponse API
Pour simplifier les choses, l'application n'est pas alimentée par une base de données au niveau du backend. Il contient trois exemples d'ID produit et leurs niveaux d'inventaire disponibles.
Identifiant de produit | Disponibilité de l'inventaire |
I-1 | 10 |
I-2 | 20 |
I-3 | 30 |
Des exemples de requête et de réponse API sont présentés ci-dessous:
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 :
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 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 effectuer tous les exercices 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 nommé "cloud-code-sample-repository" est créé dans ce dossier.
(Facultatif) Exécuter l'application sur Cloud Shell
Pour exécuter l'application en local, procédez comme suit:
- Depuis le terminal, accédez à la version Python de l'API via la commande suivante:
$
cd
cloud-code-sample-repository
$
cd
python-flask-api
- Dans le terminal, saisissez la commande suivante. Au moment de la rédaction de ce document, Python 3.9.x est installé dans Cloud Shell. Nous utiliserons la version par défaut. Si vous prévoyez de l'exécuter localement sur votre ordinateur portable, vous pouvez opter pour Python 3.8 ou version ultérieure) :
$
python
app.py
- Vous pouvez exécuter la commande suivante pour démarrer le serveur Python localement.
Cliquez sur "Prévisualiser" sur le port 8080. 5. Une fenêtre de navigateur s'ouvre. Une erreur 404 s'affiche. Ce n'est pas un problème. Modifiez l'URL et remplacez-la par /inventory après le nom d'hôte.
Par exemple, sur ma machine, 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:
- 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 API dans Cloud Run. Processus impliquant l'utilisation du client de ligne de commande gcloud pour exécuter la commande permettant de déployer le code sur Cloud Run.
Depuis le terminal, exécutez la commande gcloud suivante:
$ gcloud run deploy --source .
Vous allez être amené à répondre à plusieurs questions, dont certains sont mentionnés ci-dessous:
- Nom du service (python-flask-api): utilisez cette valeur par défaut ou choisissez un nom du type my-inventory-api
- API [run.googleapis.com] non activée sur le projet [613162942481]. Voulez-vous l'activer et réessayer (cela prendra quelques minutes) ? (y/N)? O
- Veuillez indiquer une région: choisissez 31 (us-west-1).
- L'API [artifactregistry.googleapis.com] n'est pas activée sur le projet [613162942481]. Voulez-vous l'activer et réessayer (cela prendra quelques minutes) ? (y/N)? O
- Le déploiement depuis 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].
- Do you want to continue (Y/n)? O
- Autoriser les appels non authentifiés à [my-inventory-api] (y/N) ? O
À terme, cela lancera le processus consistant à récupérer votre code source, à le conteneuriser, à le transférer vers Artifact Registry, puis à déployer le service et la révision Cloud Run. Soyez patient tout au long de ce processus (cela peut prendre trois à quatre minutes). Le processus devrait se terminer avec l'URL du service qui vous est présentée.
Un exemple d'exécution est présenté ci-dessous:
Tester l'application
Maintenant que nous avons déployé l'application sur Cloud Run, vous pouvez accéder à l'application API comme suit:
- Notez l'URL de service obtenue à l'étape précédente. Par exemple, sur ma configuration, il s'affiche sous la forme
https://my-inventory-api-bt2r5243dq-uw.a.run.app
. Appelons-la<SERVICE_URL>
. - Ouvrez un navigateur et accédez aux trois URL suivantes pour les points de terminaison de l'API:
<SERVICE_URL>/inventory
<SERVICE_URL>/inventory/I-1
<SERVICE_URL>/inventory/I-100
Elle doit être conforme aux spécifications que nous avions fournies dans une section précédente, avec des exemples de requêtes et de réponses 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 en cours d'exécution dans Cloud Run s'affiche. Le service que vous venez de déployer doit s'afficher. En fonction du nom que vous avez sélectionné, un message semblable au suivant doit s'afficher:
Cliquez sur le nom du service pour afficher les détails. Des exemples de détails sont présentés ci-dessous:
Notez l'URL, qui n'est rien d'autre que l'URL du service que vous pouvez insérer dans le navigateur et 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:
- Recherchez Pub/Sub dans le champ de recherche, puis accédez à Pub/Sub.
- S'il n'est pas déjà affiché, cliquez sur l'onglet Thèmes.
- Cliquez sur le bouton Create Topic (Créer un sujet).
- Saisissez un nom pour votre thème.
- Cliquez sur le bouton Créer.
- Copiez le nom du sujet à l'aide du bouton de copie de l'icône. Vous en aurez besoin pour la section suivante.
5. Créer un test de disponibilité
Pour créer un test de disponibilité pour une application Google Cloud Run, procédez comme suit:
- Accédez à la console Google Cloud Platform.
- Cliquez sur l'onglet Surveillance.
- Cliquez sur l'onglet Tests de disponibilité.
- En haut de la page, cliquez sur le bouton Créer un test de disponibilité.
- Utilisez les valeurs suivantes :
- Protocole : HTTPS
- Type de ressource : URL
- Nom d'hôte : saisissez la partie de l'URL du service Cloud Run sans HTTPS. Vous trouverez un exemple dans l'écran ci-dessous. Si vous ne savez pas quelle est l'URL du service, accédez à Cloud Run depuis la console Google Cloud principale, puis aux détails du service Cloud Run comme expliqué précédemment pour obtenir l'URL du service.
- Chemin d'accès : healthy
- Fréquence de vérification: 1 minute
- Cliquez sur Continuer.
- Activez l'option La correspondance de contenu est activée.
- Entrez « All Izz Well » dans la section Contenu de la réponse ; cette chaîne est déjà dans l'application lorsqu'elle envoie des réponses complètes.
- Keep
- Conservez le code de réponse HTTP acceptable défini sur Classes de code de réponse et 2xx comme seule classe de code de réponse. De cette façon, seuls les codes de réponse avec 2xx seront évalués pour la chaîne, et tout autre élément comptera automatiquement comme un échec de vérification.
- Cliquez sur Continuer.
- Sélectionnez le sujet Cloud Pub/Sub comme canal de notification, puis cliquez sur OK.
- Cliquez sur Continuer.
- Ajoutez un titre reconnaissable
- Cliquez sur le bouton Tester.
- Vérifiez les données et cliquez sur le bouton Créer une fois que tout est prêt.
Votre test de disponibilité sera créé et commencera à surveiller votre application Cloud Run. Vous pouvez afficher l'état de votre test de disponibilité dans l'onglet Tests de disponibilité.
6. Félicitations
Félicitations, vous avez bien configuré votre test de disponibilité pour envoyer des alertes à Pub/Sub !