Observabilité

L'utilisation d'un maillage de services vous permet d'observer le trafic vers et depuis des services. Vous disposez ainsi de données enrichies pour la surveillance et le débogage, sans modifications du code dans le service lui-même. Dans l'architecture proxy side-car utilisée par Traffic Director, le proxy est le composant qui traite les requêtes et fournit les informations de télémétrie nécessaires. Les informations de télémétrie doivent être collectées et stockées dans un emplacement centralisé pour une utilisation ultérieure, comme l'analyse des données, les alertes et le dépannage.

Ce guide explique comment générer le traçage et la journalisation pour le proxy Envoy. Vous y apprendrez également comment exporter les informations vers Cloud Trace et Cloud Logging.

Configuration de la démonstration

Ce guide utilise la configuration suivante pour illustrer le traçage et la journalisation :

  • Une seule application qui écoute sur le port HTTP et renvoie le nom d'hôte de la VM qui a diffusé la requête. Dans le schéma, cette application se trouve en haut à droite, HTTP Service(s) (10.10.10.10:80). Une ou plusieurs VM peuvent fournir ce service.
  • Une VM Compute Engine unique exécutant un client de ce service. Dans le schéma, il s'agit de la Demo Compute Engine VM (VM Compute Engine de démonstration).
  • Un proxy side-car Envoy installé et configuré par Traffic Director. Dans le schéma, il s'agit de Envoy.
  • Une application cliente de service, affichée dans la zone grise, est le client du service HTTP exécuté sur 10.10.10.10:80.
Application de démonstration Stackdriver Logging et Monitoring pour Envoy (cliquez pour agrandir)
Application de démonstration Stackdriver Logging et Monitoring pour Envoy (cliquez pour agrandir)
  1. Traffic Director configure le proxy Envoy pour équilibrer la charge du trafic du service 10.10.10.10:80, stocker les informations du journal d'accès pour chaque requête émise pour ce service et générer des informations de suivi pour le service.
  2. Après l'envoi d'une requête à 10.10.10.10 par le client, le proxy side-car achemine la requête vers la bonne destination.
  3. Le proxy side-car génère également les informations de télémétrie nécessaires :
    1. Ajoute une entrée au journal d'accès sur le disque local avec des informations supplémentaires sur la requête.
    2. Génère une entrée de trace et l'envoie à Cloud Trace à l'aide du traçage OpenCensus Envoy.
  4. L'agent Logging exporte ces données vers l'API Cloud Logging afin qu'elles soient disponibles dans l'interface Cloud Logging.

Prérequis

Vérifiez les points suivants :

  1. L'API Traffic Director est activée et d'autres conditions préalables sont remplies, comme décrit dans la section Préparer la configuration de Traffic Director.
  2. Le rôle Agent Cloud Trace est configuré sur le compte de service utilisé par la VM Compute Engine. Consultez la page Contrôle des accès à Cloud Trace pour plus d'informations.
  3. Le rôle Rédacteur de journaux est configuré sur le compte de service utilisé par la VM Compute Engine. Consultez la page Contrôle des accès à Cloud Logging pour plus d'informations.

Configurer le service de démonstration et Traffic Director

Ce guide utilise plusieurs scripts d'interface système pour effectuer les étapes requises afin de configurer le service de démonstration. Examinez les scripts pour comprendre les étapes spécifiques qu'ils effectuent.

  1. Démarrez une VM Compute Engine et configurez le service HTTP sur la VM.

    curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/setup_demo_service.sh
    chmod 755 setup_demo_service.sh && ./setup_demo_service.sh
    

    Le script setup_demo_service.sh crée un modèle de VM qui lance apache2 au démarrage d'une VM et un groupe d'instances géré utilisant ce modèle. Le script lance une seule instance sans activer l'autoscaling.

  2. Configurer le routage pour le service 10.10.10.10 à l'aide de Traffic Director

    curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/setup_demo_trafficdirector.sh
    chmod 755 setup_demo_trafficdirector.sh && ./setup_demo_trafficdirector.sh
    

    Le script setup_demo_trafficdirector.sh configure les paramètres nécessaires pour le service géré Traffic Director, de la même manière que décrit dans la section Configurer Traffic Director pour Compute Engine avec des VM.

  3. Démarrez une VM Compute Engine qui exécute un client du service HTTP, avec le proxy side-car installé et configuré sur la VM. Dans la commande ci-dessous, remplacez la variable gcp_project_id par l'ID du projet auquel les informations de Cloud Trace doivent être envoyées. Il s'agit généralement du même projet auquel appartient votre VM.

    curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/setup_demo_client.sh
    chmod 755 setup_demo_client.sh && ./setup_demo_client.sh my_gcp_project_id
    

    Le script setup_demo_client.sh crée une VM Compute Engine avec un proxy Envoy préconfiguré pour utiliser Traffic Director. Cette configuration est semblable à celle décrite dans la section Configurer Traffic Director pour Compute Engine avec des VM.

Les paramètres de configuration supplémentaires suivants permettent le traçage et la journalisation :

  • Les variables de métadonnées du nœud d'amorçage TRAFFICDIRECTOR_ACCESS_LOG_PATH et TRAFFICDIRECTOR_ENABLE_TRACING permettent la journalisation et le traçage, comme décrit dans la section Configurer des attributs supplémentaires pour les proxys side-car.
  • Configuration statique d'amorçage, permettant d'exporter des informations de trace vers Cloud Trace à l'aide d'OpenCensus.

REMARQUE : Vous pouvez ajouter et modifier des paramètres de traçage supplémentaires via la configuration d'environnement d'exécution Envoy.

Après avoir exécuté ces scripts, vous pouvez vous connecter à la VM td-observability-demo-client et accéder au service HTTP disponible à l'adresse 10.10.10.10.

curl http://10.10.10.10

À ce stade, Envoy génère des informations de journal d'accès et de traçage. La section suivante explique comment exporter des journaux et des informations de traçage.

Configurer l'exportation du traceur vers Cloud Trace

La configuration d'amorçage Envoy que vous avez créée lors de l'exécution du script setup-demo-client.sh est suffisante pour générer des informations de traçage. Toutes les autres configurations sont facultatives. Si vous souhaitez configurer des paramètres supplémentaires, consultez la page de configuration d'OpenCensus Envoy et modifiez les options de traçage dans la configuration d'amorçage Envoy.

Après avoir envoyé un exemple de requête au serveur de démonstration (curl 10.10.10.10), accédez à l'interface de Cloud Trace (Trace > Liste de traces) dans Google Cloud Console. Un enregistrement de trace correspondant à la requête que vous avez envoyée s'affiche.

Pour en savoir plus sur l'utilisation de Cloud Trace, consultez sa documentation.

Configurer l'exportation des journaux d'accès vers Cloud Logging

À ce stade, Envoy doit enregistrer les informations du journal d'accès sur le disque local de la VM où il s'exécute. Pour exporter ces enregistrements vers Cloud Logging, vous devez installer l'agent Logging localement. Cela nécessite l'installation et la configuration de l'agent Logging.

Installer l'agent Logging

Installez l'agent Logging sur la VM à partir de laquelle les informations de journalisation sont exportées. Pour cet exemple de configuration, la VM est td-observability-demo-vm.

curl -sSO https://dl.google.com/cloudagents/install-logging-agent.sh
sudo bash install-logging-agent.sh

Pour en savoir plus sur l'installation de l'agent Logging, consultez le guide Installer l'agent.

Configurer l'agent Logging

Vous pouvez exporter les journaux Envoy sous forme de texte non structuré ou structuré.

Exporter les journaux Envoy sous forme de texte non structuré

Cette option permet d'exporter les enregistrements du journal d'accès vers Cloud Logging sous forme de texte brut. Chaque entrée du journal d'accès est exportée en tant qu'entrée unique vers Cloud Logging. Cette configuration est plus facile à installer, car elle repose sur un analyseur distribué avec la version actuelle de l'agent Logging. Toutefois, avec cette option, les entrées de journal en texte brut sont plus difficile à filtrer et à traiter.

  1. Téléchargez et installez le fichier de configuration d'exportation non structuré du journal d'accès Envoy.

    curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/envoy_access_fluentd_unstructured.conf
    sudo cp envoy_access_fluentd_unstructured.conf /etc/google-fluentd/config.d/envoy_access.conf
    
  2. Redémarrez l'agent. Les modifications prennent effet au démarrage de l'agent.

    sudo service google-fluentd restart
    

Exporter les journaux Envoy dans un format structuré

  1. Installez l'analyseur de journaux d'accès Envoy à partir de GitHub.

    sudo /opt/google-fluentd/embedded/bin/gem install fluent-plugin-envoy-parser
    
  2. Téléchargez et installez le fichier de configuration pour exporter les journaux d'accès Envoy dans un format structuré :

    curl -sSO https://storage.googleapis.com/traffic-director/demo/observability/envoy_access_fluentd_structured.conf
    sudo cp envoy_access_fluentd_structured.conf /etc/google-fluentd/config.d/envoy_access.conf
    
  3. Redémarrez l'agent. Les modifications prennent effet au démarrage de l'agent.

    sudo service google-fluentd restart
    

Pour en savoir plus sur la configuration de l'agent Logging, consultez la page Configurer l'agent.

binaire

  1. À partir de la VM proxy side-car, générez une requête auprès du service de démonstration. Un enregistrement de journal local est créé. Par exemple, vous pouvez exécuter curl 10.10.10.10.
  2. Accédez à la section Logging > Visionneuse de journaux dans Cloud Console. Dans le menu déroulant, sélectionnez le type de journal envoy-access. Une entrée de journal s'affiche pour la requête la plus récente au format non structuré ou structuré, en fonction du type de configuration choisi précédemment.

Dépannage

Si la configuration est terminée, mais qu'aucune entrée de trace ou de journalisation n'est disponible, vérifiez les points suivants :

  1. Les comptes de service de la VM Compute Engine disposent des autorisations IAM Cloud Trace et Cloud Logging nécessaires, comme indiqué dans les conditions préalables. Pour en savoir plus sur les autorisations IAM Cloud Trace, consultez la page Contrôle des accès. Pour en savoir plus sur les autorisations Cloud Logging, consultez la page Contrôle des accès.
  2. Pour la journalisation : assurez-vous qu'il n'y a pas d'erreur dans /var/log/google-fluentd/google-fluentd.log.
  3. Pour la journalisation : assurez-vous que les nouvelles entrées apparaissent dans le fichier journal d'accès local lors de l'envoi des requêtes.