Journalisation et surveillance de l'équilibreur de charge réseau proxy

Cette page vous explique comment configurer et utiliser Cloud Logging et Cloud Monitoring pour les équilibreurs de charge réseau proxy.

Ressources de surveillance

Le tableau suivant spécifie les noms de ressources pour les équilibreurs de charge.

Équilibreur de charge réseau proxy externe régional

Équilibreur de charge réseau proxy interne régional

Équilibreur de charge réseau proxy interne interrégional

Équilibreur de charge réseau proxy externe global

Équilibreur de charge réseau proxy classique
Type de ressource surveillée Logging "Règle d'équilibreur de charge réseau proxy"
l4_proxy_rule
"Règle d'équilibreur de charge réseau du proxy externe global"
tcp_ssl_proxy_rule
Type de ressource surveillée Monitoring "Règle d'équilibreur de charge réseau proxy"
l4_proxy_rule
"Règle d'équilibreur de charge réseau du proxy externe global"
tcp_ssl_proxy_rule

Journalisation pour les équilibreurs de charge réseau proxy

Les journaux fournissent des informations utiles pour dépanner et surveiller les équilibreurs de charge. Les journaux sont agrégés pour chaque connexion et vous donnent des insights sur comment chaque connexion est acheminée vers les backends de diffusion.

L'utilisation des journaux n'entraîne aucuns frais supplémentaires. Cependant, en fonction de la manière dont vous importez les journaux, les tarifs standards de Cloud Logging, BigQuery ou Pub/Sub s'appliquent. En outre, l'activation des journaux n'a pas d'incidence sur les performances de l'équilibreur de charge.

Échantillonnage et collecte des journaux

Les connexions qui quittent les instances de machine virtuelle (VM) de l'équilibreur de charge et y entrent sont échantillonnées. Ces connexions échantillonnées sont ensuite traitées pour générer des journaux. Vous contrôlez la fraction des connexions qui sont émises en tant qu'entrées de journal grâce au paramètre logConfig.sampleRate. Lorsque logConfig.sampleRate est défini sur 1.0 (100 %), cela signifie que les journaux sont générés pour toutes les connexions et écrits dans Cloud Logging.

Activer la journalisation sur un nouveau service de backend

gcloud

Exécutez la commande gcloud compute backend-services create.

Pour les équilibreurs de charge réseau proxy régionaux externes et internes :

    gcloud compute backend-services create BACKEND_SERVICE \
        --region=REGION \
        --enable-logging \
        --logging-sample-rate=SAMPLE_RATE
    

Pour les équilibreurs de charge réseau proxy externes globaux, les équilibreurs de charge réseau proxy classiques ou les équilibreurs de charge réseau proxy internes interrégionaux :

    gcloud compute backend-services create BACKEND_SERVICE \
        --global \
        --enable-logging \
        --logging-sample-rate=SAMPLE_RATE
    

Remplacez les éléments suivants :

  • BACKEND_SERVICE : nom du service de backend.
  • REGION : région du service de backend à créer.
  • SAMPLE_RATE : ce champ ne peut être spécifié que si la journalisation est activée pour ce service de backend.

    La valeur du champ doit provenir de 0.0 to 1.0, où 0.0 signifie qu'aucun journal n'est signalé et 1.0 signifie que toutes les connexions sont journalisées. L'activation de la journalisation en définissant le taux d'échantillonnage sur 0.0 équivaut à désactiver la journalisation. La valeur par défaut est 1.0.

API

Envoyez une requête POST à la méthode regionBackendServices.insert.

Pour les équilibreurs de charge réseau internes proxy régionaux :

    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "INTERNAL_MANAGED",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

Pour les équilibreurs de charge réseau externes régionaux proxy :

    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "EXTERNAL_MANAGED",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

Pour les équilibreurs de charge réseau externes proxy globaux :

Envoyez une requête POST à la méthode backendServices.insert.

    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "EXTERNAL_MANAGED",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

Pour les équilibreurs de charge réseau proxy classiques :

Envoyez une requête POST à la méthode backendServices.insert.

    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "EXTERNAL",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

Pour les équilibreurs de charge réseau proxy internes interrégionaux :

Envoyez une requête POST à la méthode backendServices.insert.

    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "INTERNAL_MANAGED",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

Remplacez les éléments suivants :

  • BACKEND_SERVICE : nom du service de backend.
  • SAMPLE_RATE : ce champ ne peut être spécifié que si la journalisation est activée pour ce service de backend.

    La valeur du champ doit provenir de 0.0 to 1.0, où 0.0 signifie qu'aucun journal n'est signalé et 1.0 signifie que toutes les connexions sont journalisées. L'activation de la journalisation en définissant le taux d'échantillonnage sur 0.0 équivaut à désactiver la journalisation. La valeur par défaut est 1.0.

Activer la journalisation sur un service de backend existant

gcloud

Exécutez la commande gcloud compute backend-services update.

Pour les équilibreurs de charge réseau proxy régionaux externes et internes :

    gcloud compute backend-services update BACKEND_SERVICE \
        --region=REGION \
        --enable-logging \
        --logging-sample-rate=SAMPLE_RATE
    

Pour les équilibreurs de charge réseau proxy externes globaux, les équilibreurs de charge réseau proxy classiques ou les équilibreurs de charge réseau proxy internes interrégionaux :

    gcloud compute backend-services update BACKEND_SERVICE \
        --global \
        --enable-logging \
        --logging-sample-rate=SAMPLE_RATE
    

Remplacez les éléments suivants :

  • BACKEND_SERVICE : nom du service de backend.
  • REGION : région du service de backend à créer.
  • SAMPLE_RATE : ce champ ne peut être spécifié que si la journalisation est activée pour ce service de backend.

    La valeur du champ doit provenir de 0.0 to 1.0, où 0.0 signifie qu'aucun journal n'est signalé et 1.0 signifie que toutes les connexions sont journalisées. L'activation de la journalisation en définissant le taux d'échantillonnage sur 0.0 équivaut à désactiver la journalisation. La valeur par défaut est 1.0.

API

Envoyez une requête PATCH à la méthode regionBackendServices/patch.

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE
     

Pour les équilibreurs de charge réseau internes proxy régionaux :

    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "INTERNAL_MANAGED",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

Pour les équilibreurs de charge réseau externes régionaux proxy :

    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "EXTERNAL_MANAGED",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

Pour les équilibreurs de charge réseau externes proxy globaux :

Envoyez une requête PATCH à la méthode backendServices/patch.

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "EXTERNAL_MANAGED",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

Pour les équilibreurs de charge réseau proxy classiques :

Envoyez une requête PATCH à la méthode backendServices/patch.

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "EXTERNAL",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

Pour les équilibreurs de charge réseau proxy internes interrégionaux :

Envoyez une requête PATCH à la méthode backendServices/patch.

      PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
    {
    "name": "BACKEND_SERVICE",
    "loadBalancingScheme": "INTERNAL_MANAGED",
    "logConfig": {
       "enable": true,
       "sampleRate": SAMPLE_RATE
      }
    }
    

Remplacez les éléments suivants :

  • PROJECT_ID : nom de votre projet.
  • BACKEND_SERVICE : nom du service de backend.
  • SAMPLE_RATE : ce champ ne peut être spécifié que si la journalisation est activée pour ce service de backend.

    La valeur du champ doit provenir de 0.0 to 1.0, où 0.0 signifie qu'aucun journal n'est signalé et 1.0 signifie que toutes les connexions sont journalisées. L'activation de la journalisation en définissant le taux d'échantillonnage sur 0.0 équivaut à désactiver la journalisation. La valeur par défaut est 1.0.

Activer la journalisation sur un service de backend existant

gcloud

Utilisez la commande gcloud compute backend-services update.

Pour les équilibreurs de charge réseau proxy régionaux externes et internes :

gcloud compute backend-services update BACKEND_SERVICE \
   --region=REGION \
   --no-enable-logging

Pour les équilibreurs de charge réseau proxy externes globaux, les équilibreurs de charge réseau proxy classiques ou les équilibreurs de charge réseau proxy internes interrégionaux :

gcloud compute backend-services update BACKEND_SERVICE \
   --global \
   --no-enable-logging

Remplacez les éléments suivants :

  • BACKEND_SERVICE : nom du service de backend.
  • REGION : région du service de backend.

API

Pour les équilibreurs de charge réseau proxy régionaux externes et internes :

Envoyez une requête PATCH à la méthode regionBackendServices/patch :

 PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/regions/REGION/backendServices/BACKEND_SERVICE
  {
  "logConfig": {
    "enable": false
   }
  }
 

Pour les équilibreurs de charge réseau proxy externes globaux, les équilibreurs de charge réseau proxy classiques ou les équilibreurs de charge réseau proxy internes interrégionaux :

Envoyez une requête PATCH à la méthode backendServices/patch :

 PATCH https://compute.googleapis.com/compute/v1/projects/PROJECT_ID/global/backendServices/BACKEND_SERVICE
  {
  "logConfig": {
    "enable": false
   }
  }
 

Remplacez les éléments suivants :

  • PROJECT_ID : nom de votre projet.
  • REGION : région du service de backend.
  • BACKEND_SERVICE : nom du service de backend.

Afficher les journaux

Lorsque les journaux sont ingérés dans Cloud Logging et non exclus via un récepteur de routeur de journaux, vous pouvez les lire à l'aide de l'API Cloud Logging et Google Cloud CLI.

Pour afficher tous les journaux, procédez comme suit :

Console

  1. Dans la console Google Cloud, accédez à la page Explorateur de journaux.

    Accéder à l'explorateur de journaux

  2. Sélectionnez le type de ressource Règle d'équilibreur de charge réseau proxy.

  3. Sélectionnez le nom du journal loadbalancing.googleapis.com/connections.

Requête de la console

  1. Dans Google Cloud Console, accédez à la page Explorateur de journaux.

    Accéder à l'explorateur de journaux

  2. Cliquez sur le bouton Afficher la requête.

  3. Collez le texte suivant dans le champ de la requête.

    resource.type="LOG_RESOURCE_TYPE"
    logName="projects/PROJECT_ID/logs/loadbalancing.googleapis.com/connections"
    
  4. Cliquez sur Exécuter la requête.

Remplacez les éléments suivants :

  • LOG_RESOURCE_TYPE : type de ressource surveillée de journalisation défini sur l4_proxy_rule ou tcp_ssl_proxy_rule.
  • PROJECT_ID : nom de votre projet.

Afficher les journaux d'un service de backend spécifique

Pour afficher les journaux d'un service de backend spécifique, procédez comme suit :

Requête de la console

  1. Dans Google Cloud Console, accédez à la page Explorateur de journaux.

    Accéder à l'explorateur de journaux

  2. Cliquez sur le bouton Afficher la requête.

  3. Collez le texte suivant dans le champ de la requête.

    resource.type="LOG_RESOURCE_TYPE"
    logName="projects/PROJECT_ID/logs/loadbalancing.googleapis.com/connections"
    resource.labels.backend_service_name="BACKEND_SERVICE_NAME"
    
  4. Cliquez sur Exécuter la requête.

Remplacez les éléments suivants :

  • LOG_RESOURCE_TYPE : type de ressource surveillée de journalisation défini sur l4_proxy_rule ou tcp_ssl_proxy_rule.
  • PROJECT_ID : nom de votre projet.
  • BACKEND_SERVICE_NAME : nom du service de backend.

Afficher les journaux pour un groupe d'instances backend

Pour afficher les journaux d'un groupe d'instances backend spécifique, procédez comme suit :

Requête de la console

  1. Dans Google Cloud Console, accédez à la page Explorateur de journaux.

    Accéder à l'explorateur de journaux

  2. Cliquez sur le bouton Afficher la requête.

  3. Collez le texte suivant dans le champ de la requête.

    resource.type="LOG_RESOURCE_TYPE"
    logName="projects/PROJECT_ID/logs/loadbalancing.googleapis.com/connections"
    resource.labels.backend_group_name="BACKEND_GROUP_NAME"
    
  4. Cliquez sur Exécuter la requête.

Remplacez les éléments suivants :

  • LOG_RESOURCE_TYPE : type de ressource surveillée de journalisation défini sur l4_proxy_rule ou tcp_ssl_proxy_rule.
  • PROJECT_ID : nom de votre projet.
  • BACKEND_GROUP_NAME : nom du groupe d'instances.

Contenu consigné

Les entrées de journal contiennent des informations utiles pour surveiller et déboguer votre trafic. Les enregistrements de journal contiennent des champs obligatoires, qui sont les champs par défaut de chaque enregistrement de journal.

Champ Format du champ Type de champ : obligatoire ou facultatif Description
severity
timestamp
receiveTimestamp
insertID
logName
LogEntry Requis Champs généraux décrits dans une entrée de journal.
resource MonitoredResource Requis

MonitoredResource est le type de ressource associé à une entrée de journal.

MonitoredResourceDescriptor décrit le schéma d'un objet MonitoredResource à l'aide d'un nom de type et d'un ensemble de libellés. Pour en savoir plus, consultez la section Libellés de ressources.

jsonPayload object (format Struct) Requis Charge utile de l'entrée de journal, exprimée sous la forme d'un objet JSON. L'objet JSON contient les champs suivants :

Champs de journal

Les enregistrements de journal contiennent des champs obligatoires, qui sont les champs par défaut de chaque enregistrement de journal.

Certains champs de journal contiennent plusieurs données dans un champ donné. Ces champs de journal sont présentés au format multi-champs. Par exemple, le champ connection est au format IpConnection, qui contient l'adresse IP et les ports sources et de destination ainsi que le protocole, dans un seul champ. Ces champs e journal particuliers sont décrits dans le tableau relatif au format des enregistrements ci-dessous.

Le tableau suivant répertorie tous les champs de journal requis pour la ressource l4_proxy_rule.

Champ Format du champ Description
connexion IpConnection 5-tuple décrivant cette connexion.
startTime string Horodatage (format de chaîne de date RFC 3339) lorsque la connexion du client a été acceptée par l'équilibreur de charge.
endTime string Horodatage (format de chaîne de date RFC 3339) lorsque le client ou le backend a mis fin à la connexion.
bytesSent int64 Nombre d'octets envoyés par le serveur au client.
bytesReceived int64 Nombre d'octets reçus par le serveur en provenance du client.

Format de champ IpConnection

Champ Type Description
clientIp chaîne Adresse IP du client
clientPort int32 Port client. Défini pour les connexions TCP et UDP uniquement.
serverIp string Adresse IP du serveur (adresse IP de la règle de transfert)
serverPort int32 Port du serveur. Défini pour les connexions TCP et UDP uniquement.
protocol int32 Numéro de protocole IANA

Libellés de ressource

Le tableau suivant répertorie les libellés de ressource pour le type de ressource l4_proxy_rule.

Champ Type Description
network_name string Nom du réseau VPC de l'équilibreur de charge.
project_id string Identifiant du projet Google Cloud associé à cette ressource.
region string Région dans laquelle l'équilibreur de charge est défini.
target_proxy_name string Nom de l'objet de proxy cible référencé par la règle de transfert.
forwarding_rule_name string Nom de l'objet de règle de transfert.
loadbalancing_scheme_name string Attribut sur la règle de transfert et sur le service de backend d'un équilibreur de charge qui indique si celui-ci peut être utilisé pour le trafic interne ou externe.
backend_target_name string Nom du backend sélectionné pour gérer la requête.
backend_target_type string Type de la cible de backend (BACKEND_SERVICE / UNKNOWN).
backend_name string Nom du groupe d'instances backend ou groupe de points de terminaison du réseau (NEG).
backend_type string

Type de backend : un groupe d'instances ou un NEG, ou inconnu.

Cloud Logging consigne les requêtes lorsque backend_type est UNKNOWN, même si la journalisation est désactivée. Par exemple, si un client ferme la connexion à l'équilibreur de charge avant que celui-ci ne puisse choisir un backend, backend_type est défini sur UNKNOWN et la requête est journalisée. Ces journaux fournissent des informations utiles sur les requêtes client qui ont été interrompues car l'équilibreur de charge n'a pas pu sélectionner de backend.

backend_scope string Champ d'application du backend : nom de la zone ou nom de la région. Peut être UNKNOWN quand backend_name est inconnu.
backend_scope_type string Champ d'application du backend (REGION/ZONE). Peut être UNKNOWN quand backend_name est inconnu.

Surveillance

Les équilibreurs de charge réseau proxy exportent des données de surveillance vers Cloud Monitoring.

Les métriques de surveillance peuvent être utilisées pour effectuer les opérations suivantes :

  • Évaluer la configuration, l'utilisation et les performances d'un équilibreur de charge
  • Résoudre les problèmes
  • Améliorer l'utilisation des ressources et l'expérience utilisateur

En plus des tableaux de bord prédéfinis proposés dans Monitoring, vous pouvez créer des tableaux de bord personnalisés, configurer des alertes et interroger les métriques à l'aide de l'API Cloud Monitoring.

Afficher les tableaux de bord Monitoring

  1. Dans la console Google Cloud, accédez à la page Monitoring.

    Accéder à Monitoring

  2. Si Ressources apparaît dans le volet de navigation, sélectionnez Ressources, puis Équilibreurs de charge Google Cloud. Sinon, sélectionnez Tableaux de bord, puis le tableau de bord intitulé Équilibreurs de charge Google Cloud.

  3. Cliquez sur le nom de votre équilibreur de charge.

Le volet de gauche affiche diverses informations concernant l'équilibreur de charge. Le volet de droite présente les graphiques de séries temporelles. Cliquez sur le lien Répartitions pour afficher des répartitions spécifiques.

Fréquence et conservation des rapports sur les métriques

Les métriques des équilibreurs de charge sont exportées vers Monitoring par lots de précision d'une minute. Les données de surveillance sont conservées pendant six semaines. Les métriques sont basées sur l'échantillonnage du trafic (le taux d'échantillonnage est dynamique et ne peut pas être ajusté).

Le tableau de bord fournit une analyse des données à des intervalles par défaut d'une heure (1H), six heures (6H), un jour (1D), une semaine (1W) et six semaines (6W). Vous pouvez demander manuellement une analyse à un intervalle compris entre une minute et six semaines.

Métriques des équilibreurs de charge réseau proxy classiques

Les métriques suivantes pour les équilibreurs de charge réseau proxy classiques sont consignées dans Monitoring.

Métrique Nom Description
Trafic entrant tcp_ssl_proxy/ingress_bytes_count Nombre d'octets envoyés par des points de terminaison externes vers des backends configurés via Google Front End (GFE), en octets par seconde.
Trafic sortant tcp_ssl_proxy/egress_bytes_count Nombre d'octets envoyés par des backends configurés à des points de terminaison externes via le GFE (en octets par seconde).
Connexions ouvertes tcp_ssl_proxy/open_connections Nombre de connexions ouvertes au moment de l'échantillon donné. Les échantillons sont prélevés à une minute d'intervalle.
Nouvelles connexions par seconde tcp_ssl_proxy/new_connections Nombre de connexions créées (le client est connecté au backend). La précision de comptage est calculée par minute, mais les graphiques sont ajustés pour s'afficher par seconde. Pour en savoir plus, consultez la documentation de Monitoring.
Connexions fermées par seconde tcp_ssl_proxy/closed_connections Nombre de connexions qui ont été fermées. La précision de comptage est calculée par minute, mais les graphiques sont ajustés pour s'afficher par seconde. Pour en savoir plus, consultez la documentation de Monitoring.
DAR d'interface tcp_ssl_proxy/frontend_tcp_rtt Distribution du délai aller-retour (DAR) lissé mesurée pour chaque connexion entre le client et le GFE (mesurée par la pile TCP du GFE, chaque fois que les octets de la couche d'application passent du GFE au client). Le DAR lissé est un algorithme qui traite les variations et les anomalies pouvant se produire dans les mesures de latence DAR.

Métriques des autres équilibreurs de charge

Les métriques suivantes pour les équilibreurs de charge réseau proxy internes régionaux, les équilibreurs de charge réseau proxy externes régionaux, les équilibreurs de charge réseau proxy internes interrégionaux et les équilibreurs de charge réseau proxy externes globaux sont consignés dans Monitoring.

Métrique Nom Description
Trafic entrant l4_proxy/ingress_bytes_count Nombre d'octets envoyés par le client à la VM de backend à l'aide du proxy. Échantillonné toutes les 60 secondes. Après échantillonnage, les données ne sont pas visibles pendant un délai pouvant atteindre 210 secondes.
Trafic sortant l4_proxy/egress_bytes_count Nombre d'octets envoyés par la VM de backend au client à l'aide du proxy. Échantillonné toutes les 60 secondes. Après échantillonnage, les données ne sont pas visibles pendant un délai pouvant atteindre 210 secondes.
Connexions fermées par seconde l4_proxy/tcp/closed_connections_count Nombre de connexions terminées à l'aide d'un message TCP RST ou TCP FIN. Échantillonné toutes les 60 secondes. Après échantillonnage, les données ne sont pas visibles pendant un délai pouvant atteindre 210 secondes.

Filtrer les dimensions pour les métriques

Les métriques sont agrégées pour chaque équilibreur de charge. Ces métriques peuvent être décomposées selon les dimensions suivantes :

Valeur Description
BACKEND SCOPE Champ d'application (région ou zone) du groupe d'instances ayant diffusé la connexion.
BACKEND ZONE Si le groupe d'instances était un groupe d'instances zonal, il s'agit de la zone du groupe d'instances ayant diffusé la connexion.
BACKEND REGION Si le groupe d'instances était un groupe d'instances régional, il s'agit de la région du groupe d'instances qui a diffusé la connexion.
PROXY CONTINENT Continent du GFE qui a mis fin à la connexion utilisateur TCP/SSL, par exemple America, Europe, Asia.
INSTANCE GROUP Nom du groupe d'instances ayant reçu la connexion utilisateur
FORWARDING RULE Nom de la règle de transfert utilisée pour se connecter au GFE.
CLIENT COUNTRY Pays de l'utilisateur.

Étapes suivantes