Journalisation et surveillance des plug-ins Application Load Balancer et Cloud CDN

Cette page vous explique comment configurer et utiliser Cloud Logging et Cloud Monitoring avec les plug-ins d'extensions de service pour Cloud Load Balancing et Cloud CDN.

Journalisation

Cette section décrit la journalisation des plug-ins Application Load Balancer. La journalisation est possible à la fois du point de vue du plug-in et de l'équilibreur de charge.

Messages de journal

Les extensions de service permettent de générer des messages de journaux lors de l'exécution de votre plug-in. L'enregistrement des journaux est désactivé par défaut. Pour enregistrer les journaux d'un plug-in, activez-le lorsque vous créez le plug-in ou que vous le mettez à jour.

Les journaux de plug-in sont annotés avec les informations contextuelles suivantes :

  • Annotations de journaux standards, telles que le code temporel et le niveau de journalisation.
  • Identité du plug-in qui a généré le message.
  • Le rappel du plug-in dans lequel le message de journal a été généré.
  • Identifiant de trace requestId qui permet de déterminer le journal des requêtes auquel un message de journal est associé.

Les journaux pertinents pour les extensions de service appartiennent à l'une des catégories suivantes :

  • Messages de journal du plug-in

    Généré par un appel de journalisation, tel que info!(...) pour Rust, proxywasm.LogInfo(...) pour Go ou LOG_INFO pour C++. Service Extensions exporte ces messages de journal vers Cloud Logging. Vous pouvez consigner les en-têtes de requête et de réponse, ainsi que toutes les actions effectuées par le plug-in.

    Vous pouvez afficher ces messages à l'aide du service networkservices.googleapis.com.

  • Messages de journaux Cloud Load Balancing

    Vous pouvez afficher ces messages à l'aide du service loadbalancing.googleapis.com.

Journalisation du point de vue du plug-in

Cette section décrit la journalisation des extensions de service du point de vue du plug-in.

Activer la journalisation pour un plug-in

Les extensions de service permettent de générer des messages de journaux lors de l'exécution de votre plug-in. L'enregistrement des journaux est désactivé par défaut.

Pour enregistrer les journaux d'un plug-in, activez-le lorsque vous créez le plug-in ou que vous le mettez à jour.

Pour activer la journalisation pour un plug-in existant, utilisez la commande gcloud service-extensions wasm-plugins update :

gcloud service-extensions wasm-plugins update WASM_PLUGIN \
    --log-config=[LOG_CONFIG,...]

Remplacez les éléments suivants :

  • WASM_PLUGIN : ID ou nom complet du plug-in
  • LOG_CONFIG : options de journalisation pour le plug-in. Pour activer la journalisation, définissez l'option enable sur true. Indiquez ensuite les informations suivantes :

    • sample-rate : taux d'échantillonnage des journaux d'activité, sous la forme d'une valeur comprise entre 0 et 1. La valeur 0 indique que les messages du journal ne sont pas stockés. La valeur par défaut 1 indique que tous les messages du journal sont stockés. Une valeur à virgule flottante comprise entre 0.0 et 1.0 indique qu'un pourcentage de messages de journaux est stocké.
    • min-log-level : niveau de gravité minimal des messages de journaux de plug-in à exporter vers Cloud Logging. La valeur par défaut est INFO.

Une fois la journalisation activée pour le plug-in, vous pouvez afficher les messages émis par les instructions de journalisation dans le code du plug-in dans Cloud Logging.

Pour afficher les journaux, accédez à la page Explorateur de journaux dans la console Google Cloud .

Afficher les messages de journal pour les plug-ins

Vous pouvez afficher les journaux en créant des requêtes dans l'explorateur de journaux.

Vous pouvez afficher les journaux de plug-in en tant que journaux d'extensions de service autonomes. Dans cette vue, chaque message de journal de plug-in est enregistré dans son propre enregistrement de journal et n'est pas automatiquement associé aux informations du journal des requêtes.

Ces messages de journaux se trouvent dans le journal networkservices.googleapis.com/wasm_plugin_activity avec le type de ressource networkservices.googleapis.com/WasmPluginVersion.

Le système peut également ajouter des messages de journaux informatifs à ce journal. Par exemple, si un plug-in échoue lorsque son appel dépasse les limites de processeur ou de mémoire, un message de gravité ERROR est consigné. Ces messages peuvent également être consultés dans Afficher et filtrer les erreurs.

Exemples de journaux de plug-ins

Prenons l'exemple d'une entrée de journal d'extensions de service. La valeur de message est transmise à l'appel LOG_INFO du plug-in. La valeur severity dépend du niveau de journalisation utilisé dans l'appel de journal du plug-in. Dans la section labels, la valeur de l'API est HTTP_REQUEST_HEADER, ce qui indique que l'opération journalisée est le rappel du plug-in on_http_request_headers.

{
  "insertId": "65224aac-0000-24bd-a0e1-582429bd544c@a1",
  "jsonPayload": {
    "@type": "type.googleapis.com/google.cloud.networkservices.logging.v1.WasmPluginLogEntry",
    "metroIataCode": "ber",
    "proxyRegionCode": "DE",
    "message": "[add_header_plugin.cc:26]::onRequestHeaders() AddHeaderStreamContext::onRequestHeaders called",
    "requestId": "effc0311-6716-431b-9e2a-7586835fdff1"
  },
  "resource": {
    "type": "networkservices.googleapis.com/WasmPluginVersion",
    "labels": {
      "plugin_version": "prod-1",
      "resource_container": "projects/123456789",
      "location": "global",
      "plugin_name": "add-headers-plugin-prod-resource"
    }
  },
  "timestamp": "2023-05-10T03:05:43.317015458Z",
  "severity": "INFO",
  "labels": {
    "networkservices.googleapis.com/operation": "HTTP_REQUEST_HEADERS"
  },
  "logName": "projects/123456789/logs/networkservices.googleapis.com%2Fwasm_plugin_activity",
  "trace": "projects/123456789/traces/effc0311-6716-431b-9e2a-7586835fdff1",
  "receiveTimestamp": "2023-05-10T03:05:44.207265284Z"
}

Limites pour la journalisation

Les plug-ins sont limités à la journalisation de 16 Kio de données de charge utile par requête HTTP du client. Ce montant est réparti sur plusieurs appels de journalisation associés à une requête HTTP donnée. Cette limite ne s'applique qu'au texte des messages de journaux, et non aux métadonnées supplémentaires ajoutées à l'enregistrement du journal par les extensions de service.

Par exemple, si un rappel on_http_request_headers effectue deux appels de journalisation avec des messages de 4 Kio chacun, puis qu'un rappel on_http_response_headers tente d'effectuer trois appels de journalisation avec des messages de 4 Kio chacun pour la même requête HTTP, le troisième message de journalisation est supprimé. Un message de journal est ajouté pour enregistrer le nombre de messages de journal générés par le plug-in qui ont été supprimés.

Journalisation du point de vue de l'équilibreur de charge

Cette section décrit la journalisation des extensions de service du point de vue de l'équilibreur de charge.

Activer la journalisation sur un service de backend

Vous pouvez activer la journalisation pour les plug-ins de l'équilibreur de charge d'application lorsque vous créez un service. Pour ce faire, activez la journalisation sur le service de backend qui est la cible d'une requête.

Pour activer la journalisation pour le service de backend cible, utilisez la commande gcloud compute backend-services update.

gcloud compute backend-services update BACKEND_SERVICE \
    --enable-logging \
    --logging-sample-rate=RATE \
    --region=REGION \
    --logging-optional=LOGGING_OPTIONAL_MODE \
    --logging-optional-fields=OPTIONAL_FIELDS

Remplacez les éléments suivants :

  • BACKEND_SERVICE : nom du service de backend
  • RATE : valeur comprise entre 0.0 et 1.0, où 0.0 signifie qu'aucune requête n'est enregistrée et 1.0 signifie que 100 % des requêtes sont enregistrées. La valeur par défaut est 1.0. Ce paramètre n'est efficace que lorsqu'il est utilisé avec le paramètre enable-logging. Lorsque vous omettez enable-logging, la journalisation est désactivée.
  • REGION : région du backend
  • LOGGING_OPTIONAL_MODE : active la journalisation des champs facultatifs dans l'un des modes suivants :

    • INCLUDE_ALL_OPTIONAL inclut tous les champs facultatifs.
    • EXCLUDE_ALL_OPTIONAL (par défaut) exclut tous les champs facultatifs.
    • CUSTOM inclut une liste personnalisée de champs facultatifs.
  • OPTIONAL_FIELDS : liste de champs facultatifs séparés par une virgule lorsque vous sélectionnez le mode CUSTOM

Une fois la journalisation activée sur le service de backend, les requêtes HTTP ou HTTPS sont consignées à l'aide de Cloud Logging.

Pour afficher les journaux, accédez à la page Explorateur de journaux dans la console Google Cloud .

Messages de journal pour un service de backend

En général, les entrées de journal de l'équilibreur de charge d'application contiennent des informations utiles pour surveiller et déboguer votre trafic HTTP ou HTTPS. Il s'agit des types d'informations suivants :

  • Informations figurant dans la plupart des journaux Google Cloud , telles que la gravité, l'ID de projet, le numéro de projet et l'horodatage, comme décrit dans le journal LogEntry.
  • Champs de journal HttpRequest.

Les journaux des requêtes pour les équilibreurs de charge HTTP et HTTPS contiennent un objet service_extension_info dans la charge utile JSON de l'entrée de journal de l'équilibreur de charge, avec les informations suivantes :

Champ Type Description
backend_target_name string Nom de la cible de backend de l'extension.
backend_target_type string Type de la cible de backend.
chain string Nom de la chaîne d'extension dans la ressource d'extension de service qui correspond à la requête.
extension string Nom de l'extension dans la chaîne d'extension.
failed_open booléen Lorsque la configuration de l'extension est définie sur failOpen = true, la valeur true pour cette métrique indique que le traitement s'est poursuivi lorsque l'extension a expiré ou échoué.

S'applique uniquement aux équilibreurs de charge d'application externes régionaux, aux équilibreurs de charge d'application internes régionaux et aux équilibreurs de charge d'application internes interrégionaux.

grpc_status enum État le plus récent du flux gRPC. Pour en savoir plus, consultez Codes d'état gRPC.
per_processing_request_info tableau Liste des statistiques ProcessingRequest pour les extensions ext_proc ou des statistiques CheckRequest pour les extensions ext_authz qui se produisent sur le flux gRPC.
per_processing_request_info[].event_type enum Type d'événement ProcessingRequest. Il peut s'agir de REQUEST_HEADERS, REQUEST_BODY, RESPONSE_HEADERS ou RESPONSE_BODY.
per_processing_request_info[].latency duration Durée entre l'envoi du premier octet du message ProcessingRequest à l'extension et la réception du dernier octet du message ProcessingResponse.
per_processing_request_info[].processing_effect enum Résultat du traitement de chaque événement d'une demande de traitement.

S'applique uniquement aux équilibreurs de charge d'application externes régionaux, aux équilibreurs de charge d'application internes régionaux et aux équilibreurs de charge d'application internes interrégionaux.

Les valeurs possibles sont les suivantes :

  • NONE : indique que le contenu n'a pas été modifié.
  • NONE_FAILED_OPEN : indique qu'aucune mutation n'a été effectuée, car l'extension a échoué à l'ouverture.
  • CONTENT_MODIFIED : indique que le contenu a été modifié par une demande de mutation appliquée avec succès.
  • IMMEDIATE_RESPONSE : indique qu'une réponse immédiate a été envoyée par l'extension pour arrêter tout traitement ultérieur.
  • MUTATION_REJECTED : indique que l'extension a demandé au moins une modification non autorisée et que le traitement ultérieur a été interrompu. Les messages d'erreur appropriés sont consignés.
  • UNSPECIFIED : indique que l'effet du traitement n'est pas connu.
per_processing_request_info[].processing_effect_details string Lorsque processing_effect est défini sur MUTATION_REJECTED, les détails expliquent pourquoi une mutation a été refusée.

S'applique uniquement aux équilibreurs de charge d'application externes régionaux, aux équilibreurs de charge d'application internes régionaux et aux équilibreurs de charge d'application internes interrégionaux.

resource string Nom de la ressource d'extension

Surveillance

Cette section explique comment utiliser les tableaux de bord Cloud Monitoring pour afficher les métriques des plug-ins d'équilibreur de charge d'application configurés à l'aide des extensions de service. Vous pouvez surveiller les plug-ins du point de vue du plug-in ou de l'équilibreur de charge.

Surveillance du point de vue des plug-ins

Cette section décrit la surveillance des extensions de service du point de vue des plug-ins.

Pour en savoir plus sur les types de métriques des extensions de service, consultez la page MétriquesGoogle Cloud .

Afficher le tableau de bord Monitoring pour les extensions de service

Pour afficher le tableau de bord "Surveillance" des extensions de service :

  1. Dans la console Google Cloud , accédez à la page Extensions de service.

    Accéder aux extensions de service

  2. Cliquez sur l'onglet Plug-ins.
  3. Cliquez sur le nom d'un plug-in.
  4. Sur la page Détails du plug-in, cliquez sur l'onglet Surveillance.
  5. Sur la page Surveillance, les graphiques de métriques affichent des informations qui peuvent vous aider à surveiller les performances du plug-in.

  6. Pour afficher les métriques des opérations du cycle de vie des plug-ins, sélectionnez des valeurs dans la liste Filtre "Opération". Par défaut, les valeurs HTTP request header et HTTP response header sont sélectionnées.
  7. Pour afficher les métriques d'une version spécifique du plug-in, sélectionnez une valeur dans la liste Filtre "Version du plug-in". Par défaut, les métriques sont affichées pour toutes les versions.
  8. Pour modifier la période pour laquelle vous souhaitez afficher les données, sélectionnez une période prédéfinie dans le sélecteur de période ou cliquez sur Personnalisée, puis définissez une heure de début et une heure de fin. Par défaut, le sélecteur est défini sur 1 day.

Métriques des plug-ins pour les extensions de service

Vous pouvez surveiller les métriques suivantes pour les plug-ins du point de vue des extensions de service. Ces métriques sont précédées du préfixe networkservices.googleapis.com/wasm_plugin/. Le préfixe est omis dans les entrées du tableau.

Type de métrique Nom à afficher
Genre, type, unité
Description
invocation_count Nombre d'appels du plug-in Wasm
DELTAINT641
Nombre d'appels du plug-in au cours de la période sélectionnée. Chaque invocation de rappel de plug-in est comptabilisée comme une invocation de plug-in distincte.
invocation_latencies Latence d'appel du plug-in Wasm
DELTADISTRIBUTIONus
Temps d'exécution local du plug-in, en millisecondes. La métrique inclut des entrées délimitées par des libellés pour chaque rappel.
cpu/usage_times Utilisation normalisée du processeur par le plug-in Wasm
DELTADISTRIBUTIONus{CPU}
Temps d'utilisation du processeur pour les appels de plug-in, en microsecondes.
memory/bytes_used Utilisation de la mémoire par le plug-in Wasm
GAUGEDISTRIBUTIONBy
Mémoire totale allouée par les VM du plug-in Wasm, en octets.

Surveillance du point de vue de l'équilibreur de charge

Cette section décrit la surveillance des extensions de service pour les plug-ins du point de vue de l'équilibreur de charge.

Afficher le tableau de bord Monitoring pour Cloud Load Balancing

Les équilibreurs de charge d'application exportent les données de surveillance vers Cloud Monitoring.

Utilisez les métriques de surveillance aux fins suivantes :

  • Évaluation de la configuration, de l'utilisation et des performances d'un équilibreur de charge
  • Résolution des problèmes
  • Amélioration de l'utilisation des ressources et de l'expérience utilisateur

Pour afficher un tableau de bord prédéfini, procédez comme suit :

  1. Dans la console Google Cloud , accédez à la page Présentation des tableaux de bord.

    Accéder à la page de présentation des tableaux de bord

  2. Dans la section Catégories, cliquez sur GCP.
    • Pour afficher la liste des tableaux de bord de tous vos équilibreurs de charge, dans la liste Tableaux de bord GCP, cliquez sur le tableau de bord nommé Équilibreurs de charge Google Cloud. Pour afficher le tableau de bord d'un équilibreur de charge spécifique, localisez celui-ci dans la liste, puis cliquez sur son nom.
    • Pour n'afficher que les tableaux de bord prédéfinis de vos équilibreurs de charge, sélectionnez le tableau de bord approprié.

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.

Métriques du plug-in pour Cloud Load Balancing

Vous pouvez surveiller les métriques suivantes pour les plug-ins du point de vue de Cloud Load Balancing.

En preview, vous pouvez surveiller les métriques suivantes pour les extensions sur les équilibreurs de charge d'application externes régionaux, les équilibreurs de charge d'application internes régionaux et les équilibreurs de charge d'application internes interrégionaux. Ces métriques sont précédées du préfixe networkservices.googleapis.com. Le préfixe est omis dans les entrées du tableau suivant.

Le tableau suivant fournit le type de métrique, le nom à afficher, le genre, le type, l'unité et la description de chaque métrique.

Type de métrique Nom à afficher
Genre, type, unité
Description
extension/invocation_count Nombre d'appels d'extension
DELTAINT641
Nombre d'appels envoyés à l'extension.
extension/invocation_latencies Latences d'appel d'extension
DELTADISTRIBUTIONms
Distribution calculée à partir de la latence de chaque appel d'extension.
extension/sent_chunks_count Nombre de blocs envoyés par l'extension
DELTAINT641
Applicable uniquement aux événements request_body et response_body. Nombre de blocs de données envoyés à l'extension.
extension/received_chunks_count Nombre de blocs reçus par l'extension
DELTAINT641
Applicable uniquement aux événements request_body et response_body. Nombre de blocs reçus de l'extension.
extension/failed_open_count Échecs d'invocation d'extension avec fail-open
DELTAINT641
Nombre de fois où une invocation a échoué lorsque le système était configuré pour le fail-open et que la requête a été autorisée à se poursuivre.
extension/mutation_rejections Nombre de refus de mutations d'extension
DELTAINT641
Nombre d'invocations ayant demandé des mutations d'en-tête, de corps ou de bande-annonce, mais qui ont été refusées. Les refus peuvent se produire pour diverses raisons, par exemple lorsque la mutation n'est pas valide ou dépasse les limites de taille.
extension/sent_bytes_count Nombre d'octets envoyés à l'extension
DELTAINT64By
Nombre d'octets envoyés à l'extension.
extension/received_bytes_count Nombre d'octets reçus par l'extension
DELTAINT64By
Nombre d'octets reçus de l'extension.

Vous pouvez également surveiller les métriques suivantes. Ces métriques sont précédées du préfixe loadbalancing.googleapis.com/. Le préfixe est omis dans les entrées du tableau.

Type de métrique Nom à afficher
Genre, type, unité
Description
https/backend_request_count,
https/external/regional/backend_request_count,
https/internal/backend_request_count
Nombre de requêtes de backend
DELTAINT641
Nombre de fois qu'un plug-in est appelé à partir de l'équilibreur de charge d'application.
https/backend_request_bytes_count,
https/external/regional/backend_request_bytes_count,
https/internal/backend_request_bytes_count
Octets de requête du backend
DELTAINT64By
Nombre d'octets envoyés par l'équilibreur de charge au plug-in.
https/backend_response_bytes_count,
https/external/regional/backend_response_bytes_count,
https/internal/backend_response_bytes_count
Octets de réponse du backend
DELTAINT64By
Nombre d'octets reçus par l'équilibreur de charge à partir du backend de l'extension.

Afficher les métriques du plug-in

Pour afficher les métriques d'un plug-in spécifique, procédez comme suit :

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

    Accéder à l'explorateur de métriques

  2. Dans l'élément Métrique, développez le menu Sélectionner une métrique. Ensuite, procédez comme suit :

    1. Dans la liste des ressources, sélectionnez la règle Application Load Balancer appropriée.

    2. Dans la liste des catégories de métriques, sélectionnez Https.

    3. Dans la liste des métriques, sélectionnez une métrique de plug-in.

    4. Cliquez sur Appliquer.

  3. Dans l'élément Filter, procédez comme suit :

    1. Sélectionnez le libellé backend_target_type et définissez la valeur sur WASM_PLUGIN.

    2. Sélectionnez le libellé backend_target_name et définissez le nom du plug-in comme valeur.

Pour en savoir plus sur les types de métriques d'équilibreur de charge, consultez la section loadbalancing de la page des métriques Google Cloud .