Geração de registros e monitoramento para plug-ins da Media CDN

Nesta página, mostramos como configurar e usar o Cloud Logging e o Cloud Monitoring com plug-ins de extensões de serviço para o Media CDN.

Logging

Nesta seção, descrevemos os registros das extensões de serviço para plug-ins do Media CDN e como visualizar e correlacionar as informações nas mensagens de registro.

Mensagens de registro

As extensões de serviço oferecem suporte à geração de mensagens de registro durante a execução do plug-in. A gravação de registros está desativada por padrão. Para registrar os registros de um plug-in, ative-o ao criar o plug-in ou atualizá-lo.

Os registros de plug-in são anotados com as seguintes informações contextuais:

  • Anotações de registro padrão, como carimbo de data/hora e nível de registro.
  • A identidade do plug-in que gerou a mensagem.
  • O callback do plug-in em que a mensagem de registro foi gerada.
  • Um identificador de trace requestId que ajuda a determinar o registro de solicitação ao qual uma mensagem de registro está associada.

Os registros pertinentes às Extensões de Serviço estão em uma das seguintes categorias:

  • Mensagens de registro do plug-in

    Gerada por uma chamada de registro, como info!(...) para Rust, proxywasm.LogInfo(...) para Go ou LOG_INFO para C++. As extensões de serviço exportam essas mensagens de registro para o Cloud Logging. É possível registrar cabeçalhos de solicitação e resposta e todas as ações realizadas pelo plug-in.

    É possível ver essas mensagens usando o serviço networkservices.googleapis.com.

  • Mensagens de registro do Media CDN

    Mensagens de registro do Media CDN para solicitações HTTP para recursos EdgeCacheService com um CdnEdgeExtension associado. Essas são entradas de registro regulares do Media CDN que podem ser visualizadas no serviço edgecache.googleapis.com.

Ativar a geração de registros para um plug-in

As extensões de serviço oferecem suporte à geração de mensagens de registro durante a execução do plug-in. A gravação de registros está desativada por padrão.

Para registrar os registros de um plug-in, ative-o ao criar o plug-in ou atualizá-lo.

Para ativar a geração de registros em um plug-in, use o comando gcloud beta service-extensions wasm-plugins update:

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

Substitua:

  • WASM_PLUGIN: o ID ou o nome totalmente qualificado do plug-in
  • LOG_CONFIG: opções de geração de registros para o plug-in. Para ativar a geração de registros, defina a opção enable como true. Em seguida, especifique os seguintes detalhes:

    • sample-rate: a taxa de amostragem dos registros de atividades como um valor entre 0 e 1. O valor 0 indica que as mensagens de registro não são armazenadas. O valor padrão 1 indica que todas as mensagens de registro são armazenadas. Um pontuação flutuante entre 0.0 e 1.0 indica que uma porcentagem das mensagens de registro é armazenada.
    • min-log-level: o nível mínimo de gravidade das mensagens de registro do plug-in a serem exportadas para o Cloud Logging. O valor padrão é INFO.

Depois de ativar a geração de registros para o plug-in, é possível ver as mensagens emitidas por declarações de geração de registros no código do plug-in no Cloud Logging.

Para ver os registros, no console do Google Cloud , acesse a página Análise de registros.

Ver mensagens de registro

Para ver os registros, crie consultas na Análise de Registros.

É possível ver os registros de plug-ins como registros independentes de extensões de serviço. Nessa visualização, cada mensagem de registro do plug-in é registrada no próprio registro e não é associada automaticamente às informações de registro de solicitação.

Essas mensagens de registro estão no registro networkactions.googleapis.com/wasm_plugin_activity com o tipo de recurso networkactions.googleapis.com/WasmPluginVersion.

O sistema também pode adicionar mensagens de registro informativas a esse registro. Por exemplo, se houver uma falha de plug-in quando uma invocação de plug-in exceder os limites de CPU ou memória, uma mensagem de gravidade ERROR será registrada. Essas mensagens também podem ser vistas em Visualizar e filtrar erros.

Também é possível ver mensagens de registro correlacionadas com os registros de solicitação do Media CDN correspondentes na Análise de registros. Ao visualizar os registros de solicitação, quando você expande uma entrada de registro de solicitação, os registros do plug-in relacionados à solicitação aparecem aninhados no registro de solicitação. Essa visualização ajuda a entender os registros de plug-ins no contexto da solicitação associada.

Exemplos de registros

Considere um exemplo de entrada de registro de extensões de serviço. O valor de message é transmitido para a chamada LOG_INFO do plug-in. O valor severity depende do nível de registro usado na chamada de registro do plug-in. Na seção labels, o valor da API é HTTP_REQUEST_HEADER, o que indica que a operação registrada é o callback do 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"
}
A entrada de registro do Media CDN relacionada aparece da seguinte maneira. Os valores requestId e trace nas duas mensagens de registro são os mesmos.
{
  "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"
}

Limitações

Os plug-ins são limitados ao registro de até 16 KiB de dados de payload por solicitação HTTP do cliente. Esse valor é dividido entre várias chamadas de geração de registros associadas a uma determinada solicitação HTTP. O limite se aplica apenas ao texto da mensagem de registro, não aos metadados adicionais adicionados ao registro de registro pelas extensões de serviço.

Por exemplo, se um callback on_http_request_headers fizer duas chamadas de registro com mensagens de 4 KiB cada e, em seguida, um callback on_http_response_headers tentar fazer três chamadas de registro com mensagens de 4 KiB cada para a mesma solicitação HTTP, a quinta mensagem de registro será descartada. Uma mensagem de registro é adicionada para registrar o número de mensagens de registro geradas pelo plug-in que foram descartadas.

Monitoramento

Nesta seção, descrevemos como usar os painéis do Cloud Monitoring para conferir as métricas de extensões de serviço para plug-ins do Media CDN.

Para informações detalhadas sobre os tipos de métricas das Extensões de Serviço, consulte a página de métricas do Google Cloud .

Acessar o painel do Monitoring para extensões de serviço

Para acessar o painel do Monitoring para as Extensões de Serviço, faça o seguinte:

  1. No console do Google Cloud , acesse a página Extensões de serviço.

    Acessar as Extensões de Serviço

  2. Clique na guia Plugins.
  3. Clique no nome de um plug-in.
  4. Na página Detalhes do plug-in, clique na guia Monitoramento.
  5. Na página Monitoramento, os gráficos de métricas mostram informações que podem ajudar a monitorar o desempenho do plug-in.

  6. Para conferir as métricas das operações do ciclo de vida do plug-in, selecione valores na lista Filtro de operação. Por padrão, os valores HTTP request header e HTTP response header são selecionados.
  7. Para ver as métricas de uma versão específica do plug-in, selecione um valor na lista Filtro de versão do plug-in. Por padrão, as métricas são exibidas para todas as versões.
  8. Para mudar o período dos dados que você quer ver, selecione um período predefinido no seletor de tempo ou clique em Personalizado e defina um horário de início e de término. Por padrão, o seletor é definido como 1 day.

Métricas de plug-in para extensões de serviço

É possível monitorar as seguintes métricas para plug-ins da perspectiva das extensões de serviço. Essas métricas têm o prefixo networkactions.googleapis.com/wasm_plugin/. O prefixo é omitido das entradas na tabela.

Tipo de métrica Nome de exibição
Classe, Tipo, Unidade
Descrição
invocation_count Contagem de invocações do plug-in Wasm
DELTA, INT64, 1
O número de invocações do plug-in no período selecionado. Cada invocação de callback de plug-in conta como uma invocação de plug-in separada.
invocation_latencies Latência de invocação do plug-in Wasm
DELTA, DISTRIBUTION, us
O tempo de execução local, em milissegundos, do plug-in. A métrica inclui entradas delineadas por rótulo para cada callback.
cpu/usage_times Uso de CPU normalizado do plug-in Wasm
DELTA, DISTRIBUTION, us{CPU}
O tempo de uso da CPU das invocações do plug-in, em microssegundos.
memory/bytes_used Uso de memória do plug-in Wasm
GAUGE, DISTRIBUTION, By
Memória total alocada pelas VMs do plug-in Wasm, em bytes.

Métricas de monitoramento de extensões de serviço para o Media CDN

É possível monitorar as extensões de borda do Media CDN na perspectiva de EdgeCacheService no Metrics Explorer do Monitoring:

  1. No console do Google Cloud , acesse a página do Metrics Explorer.

    Acessar o Metrics Explorer

  2. Selecione o recurso monitorado Extensão de serviço do Media CDN.

  3. Selecione a categoria de métrica Extensão.

  4. Filtre pelo rótulo extension_service definido como o nome do plug-in.

Em Pré-lançamento, é possível monitorar as seguintes métricas para extensões no Media CDN. Essas métricas têm o prefixo networkactions.googleapis.com. O prefixo é omitido das entradas na tabela a seguir.

A tabela a seguir mostra o tipo de métrica, o nome de exibição, o tipo, a unidade e a descrição de cada métrica.

Tipo de métrica Nome de exibição
Classe, Tipo, Unidade
Descrição
extension/invocation_count Contagem de invocações de extensão
DELTA, INT64, 1
O número de invocações enviadas à extensão.
extension/invocation_latencies Latências de invocação de extensão
DELTA, DISTRIBUTION, ms
A distribuição calculada com base na latência de cada invocação de extensão. Aplicável apenas a extensões de frase de destaque. Não há suporte para plug-ins.
extension/sent_chunks_count Contagem de blocos enviados pela extensão
DELTA, INT64, 1
Aplicável apenas aos eventos request_body e response_body. O número de blocos de dados enviados para a extensão.
extension/received_chunks_count Contagem de blocos recebidos pela extensão
DELTA, INT64, 1
Aplicável apenas aos eventos request_body e response_body. O número de blocos recebidos da extensão.
extension/failed_open_count Invocações com falha da extensão com fail-open
DELTA, INT64, 1
O número de vezes que uma invocação falhou quando o sistema foi configurado para fail-open e a solicitação foi autorizada a continuar.
extension/mutation_rejections_count Contagem de rejeições de mutação de extensão
DELTA, INT64, 1
O número de invocações que solicitaram mutações de cabeçalho da solicitação, corpo ou trailer, mas foram rejeitadas. As rejeições podem ocorrer por vários motivos, como quando a mutação é inválida ou excede os limites de tamanho.
extension/sent_bytes_count Contagem de bytes enviados pela extensão
DELTA, INT64, By
O número de bytes enviados para a extensão.
extension/received_bytes_count Contagem de bytes recebidos da extensão
DELTA, INT64, By
O número de bytes recebidos da extensão.