Journalisation et surveillance des plug-ins Media CDN

Cette page vous explique comment configurer et utiliser Cloud Logging et Cloud Monitoring avec les plug-ins Service Extensions pour Media CDN.

Journalisation

Cette section décrit les journaux des extensions de service pour les plug-ins Media CDN, et explique comment afficher et mettre en corrélation les informations contenues dans les messages de journal.

Messages de journal

Les extensions de service permettent de générer des messages de journal 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 enregistrements de journaux du plug-in sont annotés avec les informations contextuelles suivantes :

  • Annotations de journal standards, telles que le code temporel et le niveau de journalisation.
  • Identité du plug-in qui a généré le message.
  • 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 de 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 journal Media CDN

    Messages de journal Media CDN pour les requêtes HTTP adressées aux ressources EdgeCacheService avec un CdnEdgeExtension associé. Il s'agit d'entrées de journal Media CDN standards que vous pouvez afficher sous le service edgecache.googleapis.com.

Activer la journalisation pour un plug-in

Les extensions de service permettent de générer des messages de journal 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 le mettez à jour.

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

gcloud beta 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 de journal ne sont pas stockés. La valeur par défaut 1 indique que tous les messages de journal sont stockés. Une valeur à virgule flottante comprise entre 0.0 et 1.0 indique qu'un pourcentage de messages de journal est stocké.
    • min-log-level : niveau de gravité minimal des messages de journal du 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

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

Vous pouvez afficher les journaux des plug-ins 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 journal se trouvent dans le journal networkactions.googleapis.com/wasm_plugin_activity avec le type de ressource networkactions.googleapis.com/WasmPluginVersion.

Le système peut également ajouter des messages de journal d'information à ce journal. Par exemple, si un plug-in échoue lorsqu'un appel de plug-in dépasse les limites de processeur ou de mémoire, un message de gravité ERROR est consigné. Ces messages sont également visibles dans Afficher et filtrer les erreurs.

Vous pouvez également afficher les messages de journal corrélés aux journaux de requêtes Media CDN correspondants dans l'explorateur de journaux. Lorsque vous affichez les journaux de requêtes et que vous développez une entrée de journal de requêtes, les journaux de plug-in associés à la requête apparaissent imbriqués sous le journal de requêtes. Cette vue vous aide à comprendre les journaux de plug-ins dans le contexte de la requête associée.

Exemples de journaux

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 consigné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.networkactions.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": "networkactions.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": {
    "networkactions.googleapis.com/operation": "HTTP_REQUEST_HEADERS"
  },
  "logName": "projects/123456789/logs/networkactions.googleapis.com%2Fwasm_plugin_activity",
  "trace": "projects/123456789/traces/effc0311-6716-431b-9e2a-7586835fdff1",
  "receiveTimestamp": "2023-05-10T03:05:44.207265284Z"
}
L'entrée de journal Media CDN associée se présente comme suit. Les valeurs requestId et trace des deux messages de journal sont identiques.
{
  "insertId": "6c95cc54-0000-26ba-ba73-f403043c328c@a1",
  "jsonPayload": {
    "cacheMode": "USE_ORIGIN_HEADERS",
    "@type": "type.googleapis.com/google.cloud.edgecache.v1.EdgeCacheLogEntry",
        "serviceExtensionInfo": [
      {
        "serviceExtension": "projects/123456789/locations/global/cdnEdgeExtensions/my-cdn-edge-extension",
        "chain": "edge-plugin-chain",
        "extension": "auth-and-header-plugin",
        "grpcStatus": "OK",
        "processingRequests": [
          {
            "eventType": "RESPONSE_HEADERS",
            "processingEffect": "CONTENT_MODIFIED"
          }
        ]
      }
    ],
    "cacheKeyFingerprint": "f04d02bb12f2e79e",
    "proxyStatus": "Google-Edge-Cache",
    "clientCity": "Erlangen",
    "clientAsn": "8881",
    "origin": "example-origin",
    "cacheId": "ber",
    "tlsVersion": "NONE",
    "latency": "0.002840304s",
    "originIp": "142.250.145.128",
    "requestId": "effc0311-6716-431b-9e2a-7586835fdff1",
    "clientRegionCode": "DE",
    "originalRequestId": "7656c418-df7c-4ae5-9db5-4f247ec5a82c",
    "httpTtfb": "0.002814903s",
    "metroIataCode": "BER",
    "proxyRegionCode": "DE",
    "cacheStatus": "hit"
  },
  "httpRequest": {
    "requestMethod": "GET",
    "requestUrl": "https://example.com/image.jpg",
    "requestSize": "1631",
    "status": "200",
    "responseSize": "402907",
    "userAgent": "Wtrace",
    "remoteIp": "2001:1438:1:19::5",
    "protocol": "HTTP/1.1"
  },
  "resource": {
    "type": "edgecache.googleapis.com/EdgeCacheRouteRule",
    "labels": {
      "location": "global",
      "route_destination": "projects/123456789/locations/global/edgeCacheOrigins/example-origin",
      "matched_path": "/turing/",
      "route_type": "ORIGIN",
      "path_matcher_name": "routes",
      "resource_container": "projects/123456789",
      "service_name": "example-service"
    }
  },
  "timestamp": "2023-05-10T03:05:43.321347304Z",
  "logName": "projects/bdn-prober/logs/edgecache.googleapis.com%2Fedge_cache_request",
  "trace": "projects/1069774196212/traces/effc0311-6716-431b-9e2a-7586835fdff1",
  "receiveTimestamp": "2023-05-10T03:05:49.919781008Z"
}

Limites

Les plug-ins sont limités à la journalisation d'un maximum de 16 Kio de données de charge utile par requête HTTP client. Ce montant est réparti entre plusieurs appels de journalisation associés à une requête HTTP donnée. La limite ne s'applique qu'au texte du message de journal, et non aux métadonnées supplémentaires ajoutées à l'enregistrement de 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 cinquiè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.

Surveillance

Cette section explique comment utiliser les tableaux de bord Cloud Monitoring pour afficher les métriques Service Extensions pour les plug-ins Media CDN.

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 Monitoring pour les extensions de service, procédez comme suit :

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

    Accéder à Service Extensions

  2. Cliquez sur l'onglet Plugins.
  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 du plug-in, sélectionnez des valeurs dans la liste Filtre d'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 de plug-in spécifique, sélectionnez une valeur dans la liste Filtre de 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 de plug-in pour les extensions de service

Vous pouvez surveiller les métriques suivantes pour les plug-ins depuis la perspective Service Extensions. Ces métriques ont le préfixe networkactions.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
DELTA, INT64, 1
Nombre d'appels du plug-in sur la période sélectionnée. Chaque appel de rappel de plug-in est comptabilisé comme un appel de plug-in distinct.
invocation_latencies Latence d'appel du plug-in Wasm
DELTA, DISTRIBUTION, us
Temps d'exécution local du plug-in, en millisecondes. La métrique inclut des entrées délimitées par des étiquettes pour chaque rappel.
cpu/usage_times Utilisation normalisée du processeur par le plug-in Wasm
DELTA, DISTRIBUTION, us{CPU}
Temps d'utilisation du processeur par les appels de plug-in, en microsecondes.
memory/bytes_used Utilisation de la mémoire par le plug-in Wasm
GAUGE, DISTRIBUTION, By
Mémoire totale allouée par les VM du plug-in Wasm, en octets.

Métriques de surveillance des extensions de service pour Media CDN

Vous pouvez surveiller les extensions périphériques Media CDN à partir de la perspective EdgeCacheService dans l'explorateur de métriques Monitoring :

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

    Accéder à l'explorateur de métriques

  2. Sélectionnez la ressource surveillée Extension de service Media CDN.

  3. Sélectionnez la catégorie de métrique Extension.

  4. Filtrez par l'étiquette extension_service définie sur le nom de votre plug-in.

Dans la version preview, vous pouvez surveiller les métriques suivantes pour les extensions sur Media CDN. Ces métriques ont le préfixe networkactions.googleapis.com. Le préfixe est omis dans les entrées du tableau suivant.

Le tableau suivant indique 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
DELTA, INT64, 1
Nombre d'appels envoyés à l'extension.
extension/invocation_latencies Latences d'appel de l'extension
DELTA, DISTRIBUTION, ms
Distribution calculée à partir de la latence de chaque appel d'extension. S'applique uniquement aux extensions d'accroche. Non compatible avec les plug-ins.
extension/sent_chunks_count Nombre de fragments envoyés par l'extension
DELTA, INT64, 1
Applicable uniquement aux événements request_body et response_body. Nombre de fragments de données envoyés à l'extension.
extension/received_chunks_count Nombre de fragments reçus par l'extension
DELTA, INT64, 1
Applicable uniquement aux événements request_body et response_body. Nombre de fragments reçus de l'extension.
extension/failed_open_count Échecs d'appel de l'extension avec fail-open
DELTA, INT64, 1
Nombre d'échecs d'appel lorsque le système était configuré pour le fail-open et que la requête a été autorisée à continuer.
extension/mutation_rejections_count Nombre de rejets de mutation d'extension
DELTA, INT64, 1
Nombre d'appels ayant demandé des mutations d'en-tête de requête, de corps ou de trailer, mais qui ont été rejetés. Les rejets 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 par l'extension
DELTA, INT64, By
Nombre d'octets envoyés à l'extension.
extension/received_bytes_count Nombre d'octets reçus par l'extension
DELTA, INT64, By
Nombre d'octets reçus par l'extension.