Utilisation de la surveillance et de la journalisation avec Stackdriver pour améliorer la visibilité sur l'état de votre application

Dans cet atelier de programmation, vous allez apprendre à utiliser Stackdriver pour surveiller et examiner les métriques et les journaux de performances des services et des VM Google Cloud Platform.

Dans cet atelier de programmation, vous allez :

  • Familiarisez-vous avec la page d'accueil de Stackdriver.
  • Comprendre les tableaux de bord et les graphiques
  • Créer un test de disponibilité
  • Créez une règle d'alerte simple.
  • Gérer les incidents d'alerte
  • Naviguez dans la visionneuse de journaux.

Quelle est votre expérience avec Stackdriver ?

Surveillance : de quoi s'agit-il ? Je n'ai jamais utilisé Stackdriver auparavant, mais j'ai la surveillance des applications. J'ai élevé les pneus de Stackdriver, mais ils ne sont pas allés.

Auto-configuration de l'environnement

Si vous n'avez pas encore de compte Google (Gmail ou Google Apps), vous devez en créer un.

Connectez-vous à la console Google Cloud Platform (console.developers.google.com) et créez un projet:

Mémorisez l'ID du projet. Il s'agit d'un nom unique permettant de différencier chaque projet Google Cloud. Il sera désigné par le nom PROJECT_ID tout au long de cet atelier de programmation.

Très important - Accédez à la page Compute Engine pour lancer l'activation de l'API Compute Engine:

Ensuite: Compute → Compute Engine → Instances de VM

La première fois que vous effectuez cette opération, un écran s'affiche avec un message "Compute Engine est prêt". Cela peut prendre une minute ou plus. Vous pouvez continuer à vous connecter à Google Cloud Shell ci-dessous, mais vous ne pourrez pas créer de VM tant que cette opération ne sera pas terminée.

Vous effectuerez la majeure partie du travail depuis Google Cloud Shell, un environnement de ligne de commande exécuté dans le Cloud. Cette machine virtuelle basée sur Debian contient tous les outils de développement dont vous avez besoin. Elle offre un répertoire de base persistant de 5 Go. Ouvrez Google Cloud Shell en cliquant sur l'icône située dans l'angle supérieur droit de l'écran :

Enfin, définissons la zone par défaut et la configuration du projet à l'aide de Cloud Shell :

$ gcloud config set compute/zone us-central1-b
$ gcloud config set compute/region us-central

Vous pouvez également choisir d'autres zones. Pour en savoir plus sur les zones, consultez la documentation sur les régions et les zones.

Dans cette section, vous allez créer des instances Compute Engine exécutant nginx+ à l'aide de Cloud Launcher. Ces instances serviront à illustrer la surveillance et les alertes. Vous pouvez créer une instance Compute Engine à partir de la console graphique ou de la ligne de commande. Cet atelier va vous apprendre à utiliser les lignes de commande.

Commençons maintenant.

Utilisez gcloud pour définir votre ID de projet:

$ gcloud config set project PROJECT_ID



Ensuite, veillez à copier & et à coller le code tel quel:

$ for i in {1..3}; do \
gcloud compute instances create "nginx-plus-$i" \
--machine-type "n1-standard-1" \
--metadata  "google-cloud-marketplace-solution-key=nginx-public:nginx-plus" \
--maintenance-policy "MIGRATE" --scopes default="https://www.googleapis.com/auth/cloud-platform" \
--tags "http-server","google-cloud-marketplace" \
--image "https://www.googleapis.com/compute/v1/projects/nginx-public/global/images/nginx-plus-ubuntu1404-v20150916-final" \
--boot-disk-size "10" --boot-disk-type "pd-standard" \
--boot-disk-device-name "nginx-plus-$i"; done

Des messages d'avertissement s'affichent sur la taille du disque, puis le résultat suivant s'affiche lors de la création de chaque VM:

NAME         ZONE          MACHINE_TYPE  PREEMPTIBLE INTERNAL_IP EXTERNAL_IP     STATUS
nginx-plus-1 us-central1-b n1-standard-2                X.X.X.X  X.X.X.X      RUNNING
...

Notez le champ EXTERNAL_IP, qui sera important plus tard.

Ces opérations peuvent prendre quelques minutes.

Par défaut, Google Cloud Platform n'autorise que quelques accès aux ports. Puisque nous allons bientôt accéder à Nginx, laissez le port 80 activé dans la configuration du pare-feu:

$ gcloud compute firewall-rules create allow-80 --allow tcp:80 --target-tags "http-server"
Created [...].
NAME     NETWORK SRC_RANGES RULES  SRC_TAGS TARGET_TAGS
allow-80 default 0.0.0.0/0  tcp:80 http-server

Cette commande va créer une règle de pare-feu nommée "allow-80" qui aura les valeurs par défaut suivantes:

  • La liste de blocs d'adresses IP autorisés à établir des connexions entrantes (--source-ranges) est définie sur 0.0.0.0/0 (partout).
  • La liste des tags d'instance indiquant l'ensemble d'instances sur le réseau pouvant accepter les connexions entrantes est définie sur "aucune", ce qui signifie que la règle de pare-feu est applicable à toutes les instances.

Exécutez gcloud compute firewall-rules create --help pour voir toutes les valeurs par défaut.

Une fois la première instance créée, vous pouvez vérifier si nginx est en cours d'exécution et accessible en accédant à l'adresse http://EXTERNAL_IP/, où EXTERNAL_IP est l'adresse IP publique de nginx-plus-1. La page Nginx devrait s'afficher:

Vous pouvez également consulter vos instances en cours d'exécution en saisissant:

$ gcloud compute instances list

Google Stackdriver est une solution de surveillance performante qui intègre différents outils pour faciliter la surveillance et l'analyse de vos applications cloud. Stackdriver vous permet d'afficher les métriques de performances, de définir et de recevoir des alertes, d'ajouter vos propres tableaux de bord et métriques, d'afficher les journaux et les traces, et de configurer des tableaux de bord intégrés, le tout de manière centralisée.

Les étapes suivantes vous guideront tout au long de l'activation de Stackdriver et de l'utilisation de la console.

Par défaut, Google Stackdriver est actuellement en version bêta et n'est pas activé pour les nouveaux projets. Pour l'activer, cliquez sur la barre de navigation de gauche, puis sur "Monitoring" (vous devrez peut-être faire défiler la page vers le bas pour la trouver).

Sur l'écran suivant, cliquez sur &Enable (Activer) et attendez une minute pour qu'elle soit activée.

Une fois la fonctionnalité activée, le contenu change et vous voyez le texte ci-dessous. Cliquez sur "Monitoring" (Démarrer) pour commencer l'exploration. Vous devrez vous connecter à Google, puis accéder à la console Stackdriver pour votre projet. C'est là que vous pourrez effectuer et analyser les tâches liées à la surveillance.

Passons à la page d'accueil.

  1. Menu supérieur: permet de sélectionner différents affichages / contextes et d'accéder à toutes les actions Stackdriver disponibles.
  2. Tableaux de bord: tableaux de bord des métriques et des événements surveillés. Dans un premier temps, il s'agit de tableaux de bord système prédéfinis basés sur les ressources de votre projet. Vous pouvez également créer vos propres tableaux de bord personnalisés.
  3. Les tests de disponibilité permettent de vérifier régulièrement la disponibilité des ressources destinées aux utilisateurs et d'activer les alertes lorsqu'elles ne sont plus disponibles.
  4. Liste de groupes: les groupes permettent de regrouper les ressources qui partagent des propriétés et des caractéristiques afin que ces dernières puissent être gérées en tant que groupe ou cluster pour des tâches telles que la surveillance et les alertes. Celles-ci peuvent être détectées automatiquement et définies par l'utilisateur.
  5. Volet "Incidents" : ce volet effectue le suivi des incidents d'alerte. Vous ne verrez rien ici tant que vous n'aurez pas défini de règles d'alerte.
  6. Le journal des événements répertorie les événements liés à vos ressources surveillées, comme les modifications d'instance, les événements d'incident, etc.

Avant d'examiner les graphiques, vous remarquerez que la plupart des lignes sont dégroupées après l'initialisation de l'instance initiale. Voyons si certains d'entre eux peuvent être chargés en générant une charge sur l'une des instances.

Pour vous connecter en SSH à l'instance à partir de la ligne de commande Cloud Shell:

$ gcloud compute ssh nginx-plus-1
...
Do you want to continue (Y/n)? Y
...
Generating public/private rsa key pair.
Enter passphrase (empty for no passphrase): [Hit Enter]
Enter same passphrase again: [Hit Enter]
...

yourusername@nginx-plus-1:~$

C'est assez simple. (En production, assurez-vous d'avoir saisi une phrase secrète.) De plus, il est possible que vous ne soyez pas invité à ajouter une phrase secrète.

Vous pouvez également vous connecter en SSH à l'instance directement à partir de la console, en accédant à Compute Engine et à VM Instances (Instances de VM), puis en cliquant sur SSH.

In the SSH window, type:

yourusername@nginx-plus-1:~$ sudo apt-get install rand
yourusername@nginx-plus-1:~$ for i in {1..10}; do dd if=/dev/zero of=/dev/null count=$(rand -M 80)M; sleep 60; done &

Le processeur de l'instance nginx-plus-1 est en cours de chargement. Nous pouvons revenir à l'onglet du tableau de bord Stackdriver et explorer l'interface. Toutefois, avant de revenir à la page des tableaux de bord Stackdriver, prenons l'opportunité d'installer l'agent Cloud Logging.

Fetch and install the script:

yourusername@nginx-plus-1:~$ curl -sS https://dl.google.com/cloudagents/add-logging-agent-repo.sh | sudo bash /dev/stdin --also-install

Notez que lors de l'installation en production, vérifiez le hachage SHA-256. Pour en savoir plus sur le processus d'installation, cliquez ici.

Revenons à la console Google Stackdriver.

Prenez le temps de vous familiariser avec la navigation et l'utilisation des tableaux de bord et des graphiques. Pointez sur les lignes du graphique pour découvrir ce qui se passe. Modifier la durée des graphiques (les commandes sont situées dans l'angle supérieur droit) Vous pouvez toujours revenir à la page d'accueil en cliquant sur le logo Stackdriver en haut à gauche de la console.

Examinons le graphique d'utilisation du processeur:

Voici quelques éléments du graphique:

  • La ligne en surbrillance correspond à la statistique sélectionnée (un graphique peut afficher plusieurs métriques).
  • La ligne horizontale grise représente le point vers lequel pointe la souris.
  • En bas, vous trouverez le nom de la ressource, ainsi que la valeur sélectionnée à ce moment-là.
  • En haut du graphique se trouvent des points de couleur qui représentent les événements détaillés dans le journal des événements. Vous pouvez cliquer dessus pour obtenir la liste des événements. Remarque: il est possible qu'aucun événement ne s'affiche pour l'instant.
  • En haut à droite du graphique se trouvent trois commandes (de gauche à droite):
  • Afficher/Masquer la liste des métriques sous le graphique
  • Activer/Désactiver le mode plein écran
  • Menu avec divers bonus (vous DEVEZ essayer le mode Rayon X une fois le graphique très détaillé) Notez l'option "Afficher les journaux", que nous y reviendrons ultérieurement.

Les tests de disponibilité vous permettent de vérifier rapidement l'état d'une page Web, d'une instance ou d'un groupe de ressources. Chaque test configuré est régulièrement utilisé dans diverses zones du monde. Les tests de disponibilité peuvent être utilisés comme conditions dans les définitions de règles d'alerte.

Vous pouvez afficher vos vérifications et leur état en sélectionnant Alerting (Alertes) et Uptime Checks (Tests de disponibilité) dans le menu supérieur. Vous trouverez également des sections sur les tests de disponibilité dans le tableau de bord Google Stackdriver et sur les pages dédiées à des ressources spécifiques. Pour les tests de disponibilité qui couvrent un groupe de ressources, vous pouvez développer le test pour afficher l'état de chaque membre du groupe.

Créons un test de disponibilité. Accédez au widget "Tests de disponibilité" depuis l'écran d'accueil de Stackdriver:

Une nouvelle fenêtre pop-up s'affiche. Nous pouvons configurer des tests de disponibilité pour une ressource ou un groupe de ressources, utiliser des en-têtes et des charges utiles personnalisés, ajouter une authentification, etc. Pour l'instant, nous allons simplement utiliser une vérification HTTP par défaut qui vérifiera toutes les minutes le groupe nginx créé automatiquement.

Utilisez les captures d'écran ci-dessous pour remplir les différentes options:

Cliquez sur le bouton "Tester" pour vérifier que les points de terminaison sont accessibles (vous devriez voir trois OK), puis cliquez sur "Enregistrer". Remarque: si vous ne parvenez pas à retrouver une solution, vous pouvez continuer l'atelier, car il s'agit peut-être simplement d'un problème de test.

Vous recevrez ensuite un champ "Temps de test de création" et vous devrez indiquer si vous souhaitez créer une règle d'alerte pour ce test. Nous allons le faire dans la section suivante. Ne cliquez pas encore sur le bouton.

Vous pouvez configurer des règles d'alerte pour définir des conditions qui déterminent si vos services et plates-formes cloud fonctionnent normalement. Cloud Monitoring propose de nombreux types de métriques et d'états que vous pouvez utiliser dans les règles.

En cas de non-respect des règles d'alerte, un incident est créé et affiché dans la console Stackdriver dans la section "Incident". Les personnes qui reçoivent la notification peuvent en accuser réception et fermer l'incident une fois qu'il a été résolu.

Cliquez sur "Créer une règle d'alerte", puis passez à la configuration de la règle.

Vous devriez obtenir l'écran suivant:

Saisissez un nom pour la règle: "Uptime Check for nginx group"

Dans la section "Mode de notification", cliquez sur "Ajouter une notification".

Saisissez l'adresse e-mail associée à votre compte Google Cloud. Faites défiler l'écran jusqu'en bas, puis cliquez sur "Save Policy" (Enregistrer la règle).

Revenez à la page d'accueil de Stackdriver (en cliquant sur le logo dans l'angle supérieur gauche).

Le test de disponibilité que vous avez créé apparaît dans la section "Tests de disponibilité" du tableau de bord. Pour l'instant, l'état doit être vert.

Faites défiler l'écran vers le bas jusqu'au journal des événements. Vous devriez voir l'événement indiquant qu'une règle d'alerte a été créée.

Maintenant, compliquons le problème :)

Voyons ce qui se passe lorsque nous arrêtons le service Ngnix.

Connectez-vous de nouveau à l'instance via la ligne de commande Cloud Shell:

$ gcloud compute ssh nginx-plus-1

Et saisissez:

yourusername@nginx-plus-1:~$ sudo service nginx stop

Désormais, le test de disponibilité que nous avons créé devrait échouer. Par conséquent, un incident sera créé, et un e-mail de notification d'alerte sera envoyé à l'adresse que vous avez saisie ci-dessus. La détection de la condition prend une minute (souvenez-vous de la durée d'une minute lorsque vous définissez le test de disponibilité ?). Nous allons donc examiner la page du groupe nginx.

Il existe plusieurs façons d'accéder à un tableau de bord de groupe de ressources spécifique:

  1. Vous pouvez cliquer sur le nom du groupe sur la page d'accueil. Un tableau de bord spécialement conçu pour surveiller les ressources du groupe s'affiche. Vous pouvez également personnaliser ce tableau de bord.



  2. Dans le menu de niveau supérieur, sélectionnez "Groupes", puis recherchez votre groupe spécifique.

À présent, cliquez sur le bouton d'actualisation automatique pour vous assurer que les tableaux de bord sont automatiquement actualisés. L'icône devient rouge.

Vous consultez à présent un tableau de bord spécifique au groupe nginx créé automatiquement. Sur la droite, vous trouverez des graphiques de plusieurs métriques clés concernant le groupe. En d'autres termes, ces graphiques présentent les métriques relatives à toutes les ressources du groupe nginx (nos trois VM nginx+ que nous avons créées précédemment).

Vous trouverez plusieurs informations sur le groupe, à gauche:

  • État de l'incident
  • Uptime checks
  • Journal des événements
  • Une liste des ressources (instances, volumes, etc.)

Notez que ces requêtes ne concernent que le groupe et que le journal des événements ne contient que les événements de ce groupe.

Vous pouvez cliquer sur différentes ressources ou sous-groupes pour passer à leurs propres tableaux de bord. Par exemple, en cliquant sur "nginx-plus-1", vous serez redirigé vers un tableau de bord qui ne contient que des métriques et des vérifications liées à cette instance. Alors, essayez sans plus attendre :

Les incidents Stackdriver s'ouvrent lorsqu'un ensemble de conditions d'alerte répond à certains critères. Dans le cas présent, nous avons défini une alerte pour le test de disponibilité nginx, qui échoue actuellement sur nginx-plus-1. Les incidents vous aident à suivre les conditions actuelles et à collaborer avec les autres membres de l'équipe pour trouver des solutions.

Veuillez confirmer l'incident pour informer les autres membres de l'équipe que nous enquêtons.

Notez que cet état passe de "Open" (Ouvert) à "Acknowledged" (Confirmé). La situation est toujours en cours (les règles d'alerte ne sont toujours pas respectées), mais vous indiquez aux membres de l'équipe que vous y répondez. Il sera également enregistré dans le journal des événements.

Les incidents peuvent être résolus manuellement ou peuvent être résolus automatiquement. Pour afficher ce dernier, connectez-vous en SSH à nginx-plus-1 et corrigez le problème:

yourusername@nginx-plus-1:~$ sudo service nginx start

L'incident sera désormais résolu automatiquement une fois le test de disponibilité rétabli à la normale. Vous pouvez également résoudre le problème vous-même en sélectionnant l'élément de menu "Résoudre".

Cloud Logging est une solution Logging en tant que service qui permet de consulter et d'interroger les journaux depuis plusieurs sources. Vous pouvez également les exporter vers d'autres destinations (Google Cloud Storage, Google BigQuery ou Google Cloud Pub/Sub).

Pour accéder à la visionneuse de journaux Cloud, sélectionnez-la dans le menu de gauche de Cloud Console:

Vous êtes redirigé vers la visionneuse de journaux, où vous pouvez utiliser des requêtes prédéfinies ou créer et enregistrer vos propres requêtes personnalisées, accéder à un flux en direct de journaux provenant de plusieurs ressources de votre déploiement cloud, créer des métriques à partir de journaux, exporter des données et plus encore.

Voici quelques commandes utiles pour filtrer rapidement les informations pertinentes:

  1. Filtrer par types de ressources
  2. Filtrer sur les types de journaux spécifiques des ressources sélectionnées
  3. Filtrer des niveaux de journalisation spécifiques
  4. Filtrez en fonction de dates spécifiques pour examiner les problèmes passés
  5. Activer/Désactiver le streaming continu
  6. Champ de recherche de texte, de libellé ou d'expression régulière

Nous allons maintenant nous concentrer sur des journaux spécifiques.

Dans le sélecteur de type de ressource (1 dans la capture d'écran), sélectionnez Compute Engine -> Tous les types de ressources

Dans le sélecteur de type de journal (2 sur la capture d'écran), sélectionnez nginx-access pour afficher tous les journaux d'accès.

À présent, activez la diffusion continue (5) pour regarder les journaux à mesure qu'ils arrivent. Si aucun nouveau journal ne s'affiche, essayez de saisir l'adresse IP externe de l'une des VM nginx-plus dans votre navigateur.

Cet atelier de programmation ne traite pas en détail des journaux, mais vous pouvez les explorer plus tard avant de procéder à un nettoyage. Pour en savoir plus sur la navigation, cliquez ici. Si vous souhaitez en savoir plus sur les raisons pour lesquelles vous pouvez utiliser Cloud Logging, cliquez ici. Vous y trouverez la documentation de premier niveau associée à la documentation concernée.

Librons les ressources de calcul créées pendant l'atelier de programmation. Exécutez les commandes suivantes dans Cloud Shell:

$ for i in {1..3}; do \
gcloud -q --user-output-enabled=false compute instances delete nginx-plus-$i ; done

Accédez ensuite à la console Google Stackdriver ("Monitoring" dans le menu de volet de gauche de Cloud Console), puis supprimez le test de disponibilité et les règles d'alerte que nous avons créées. Vous pouvez le faire dans les éléments de menu de premier niveau Alertes -&gt ; Vue d'ensemble des règles et Alertes -> Tests de disponibilité.

Vous êtes maintenant prêt à surveiller vos applications cloud.

Points abordés

  • Vous familiariser avec la page d'accueil de Stackdriver
  • Comprendre les tableaux de bord et les graphiques
  • Création d'un test de disponibilité
  • Créer une règle d'alerte simple
  • Gérer les incidents d'alerte
  • Naviguer dans la visionneuse de journaux

Étapes suivantes

  • Essayez de créer des tableaux de bord personnalisés.
  • Découvrez les différentes options lorsque vous créez une règle d'alerte.
  • Découvrez les différentes options disponibles lors de l'utilisation de Cloud Logging.

En savoir plus

Votre avis nous intéresse !

  • Merci de prendre quelques instants pour répondre à notre courte enquête.