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 d'extensions de service pour Media CDN.

Journalisation

Cette section décrit les journaux d'extensions de service pour les plug-ins Media CDN, ainsi que la manière dont vous pouvez afficher et corréler les informations 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 le mettez à jour.

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

  • Annotations de journal standard, telles que l'horodatage et le niveau de journal.
  • Identité du plug-in qui a généré le message.
  • Rappel de plug-in callback 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 de plug-in

    Générés par un appel de journalisation, tel que info!(...) pour Rust, proxywasm.LogInfo(...) pour Go ou LOG_INFO pour C++. Les extensions de service exportent ces messages de journal vers Cloud Logging. Vous pouvez enregistrer 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 networkservices.googleapis.com service.

  • Messages de journal Media CDN

    Messages de journal Media CDN pour les requêtes HTTP adressées aux EdgeCacheService ressources avec une action Wasm associée. Il s'agit d'entrées de journal Media CDN standards qui sont visibles sous le edgecache.googleapis.com service.

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 le créez ou le mettez à jour.

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

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. Spécifiez ensuite les détails suivants :

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 Google Cloud console.

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 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 de 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 enregistré. Ces messages peuvent également être consultés dans Afficher et filtrer les erreurs.

Vous pouvez également afficher les messages de journal corrélés avec les journaux de requêtes Media CDN correspondants dans l'explorateur de journaux. Lorsque vous affichez les journaux de requêtes, lorsque 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 permet de comprendre les journaux de plug-in dans le contexte de leur 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 journal utilisé dans l'appel de journal de plug-in. Dans la section labels, la valeur de l'API est HTTP_REQUEST_HEADER, ce qui indique que l'opération enregistrée est le rappel de 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 s'affiche 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",
    "wasmAction": "add-headers-action-prod-resource",
    "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 à l'enregistrement de 16 Kio de données de charge utile par requête HTTP client. Cette quantité est répartie sur plusieurs appels de journalisation associés à une requête HTTP donnée. La limite s'applique uniquement 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 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.

Surveillance

Cette section explique comment utiliser les tableaux de bord Cloud Monitoring pour afficher les métriques d'extensions de service pour les plug-ins Media CDN.

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

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 Google Cloud console, 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 Monitoring.
  5. Sur la page Monitoring, 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 de 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 spécifique du plug-in, sélectionnez une valeur dans la liste Filtre de version du plug-in. Par défaut, les métriques s'affichent 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 temps ou cliquez sur Personnalisé , 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 du point de vue des extensions de service. Ces métriques comportent 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
Type, Type, Unité
Description
invocation_count Nombre d'appels du plug-in Wasm
DELTAINT641
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
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 des 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 de plug-in Wasm, en octets.

Métriques de plug-in pour Media CDN

Vous pouvez surveiller les métriques suivantes pour les plug-ins du point de vue de Media CDN. Les chaînes de type de métrique comportent le préfixe suivant : edgecache.googleapis.com/edge_cache_route_rule/network_actions/. Le préfixe est omis dans les entrées du tableau.

Type de métrique Nom à afficher
Type, Type, Unité
Description
wasm_action_invocation_count Nombre d'appels d'extensions de service
DELTAINT641
Nombre d'appels d'extensions de service gérés par Media CDN sur la période sélectionnée.
wasm_action_invocation_latencies Latence d'appel d'extensions de service
DELTADISTRIBUTIONus
Temps total, en millisecondes, nécessaire à Media CDN pour distribuer et exécuter le plug-in. La métrique inclut des entrées délimitées par des libellés pour les extensions de service rappels.