Geração de registros e monitoramento para plug-ins do balanceador de carga de aplicativo e do Cloud 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 Cloud Load Balancing e o Cloud CDN.

Logging

Nesta seção, descrevemos a geração de registros para plug-ins do balanceador de carga de aplicativo. É possível gerar registros tanto da perspectiva do plug-in quanto do balanceador de carga.

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 Cloud Load Balancing

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

Geração de registros da perspectiva do plug-in

Nesta seção, descrevemos a geração de registros de extensões de serviço do ponto de vista do plug-in.

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 service-extensions wasm-plugins update:

gcloud 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 de plug-ins

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 networkservices.googleapis.com/wasm_plugin_activity com o tipo de recurso networkservices.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.

Exemplos de registros de plug-ins

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.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"
}

Limitações para geração de registros

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.

Geração de registros do ponto de vista do balanceador de carga

Nesta seção, descrevemos a geração de registros de extensões de serviço do ponto de vista do balanceador de carga.

Ativar a geração de registros em um serviço de back-end

É possível ativar a geração de registros para plug-ins do balanceador de carga de aplicativo ao criar um serviço. Para isso, ative a geração de registros no serviço de back-end que é o destino de uma solicitação.

Para ativar a geração de registros no serviço de back-end de destino, use o comando 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

Substitua:

  • BACKEND_SERVICE: o nome do serviço de back-end
  • RATE: um valor de 0.0 a 1.0, em que 0.0 significa que nenhuma solicitação é registrada e 1.0 significa que 100% das solicitações são registradas. O valor padrão é 1.0. Essa configuração só é eficaz quando usada com o parâmetro enable-logging. Quando você omite enable-logging, a geração de registros é desativada.
  • REGION: a região do back-end
  • LOGGING_OPTIONAL_MODE: ativa a geração de registros para campos opcionais em um destes modos:

    • INCLUDE_ALL_OPTIONAL inclui todos os campos opcionais.
    • EXCLUDE_ALL_OPTIONAL (padrão) exclui todos os campos opcionais.
    • CUSTOM inclui uma lista personalizada de campos opcionais.
  • OPTIONAL_FIELDS: uma lista separada por vírgulas de campos opcionais quando você seleciona o modo CUSTOM.

Depois de ativar a geração de registros no serviço de back-end, as solicitações HTTP ou HTTPS são registradas usando as solicitações de registros do Cloud Logging.

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

Mensagens de registro de um serviço de back-end

Em geral, as entradas de registro do balanceador de carga de aplicativo contêm informações úteis para monitorar e depurar o tráfego HTTP ou HTTPS. As entradas de registro contêm os seguintes tipos de informação:

  • Informações mostradas na maioria dos registros do Google Cloud , como gravidade, ID do projeto, número do projeto e carimbo de data/hora, conforme descrito no registro LogEntry.
  • Campos de registro HttpRequest.

Os registros de solicitação para balanceadores de carga HTTP e HTTPS contêm um objeto service_extension_info no payload JSON da entrada de registro do balanceador de carga com as seguintes informações:

Campo Tipo Descrição
backend_target_name string Nome do destino de back-end da extensão.
backend_target_type string Tipo do destino de back-end.
chain string Nome da cadeia de extensões no recurso de extensão de serviço que corresponde à solicitação.
extension string Nome da extensão na cadeia de extensões.
failed_open booleano Quando a configuração da extensão tem failOpen definido como true, o valor true para essa métrica indica que o processamento continuou quando a extensão atingiu o tempo limite ou falhou.

Aplica-se apenas a balanceadores de carga de aplicativo externos regionais, balanceadores de carga de aplicativo internos regionais e balanceadores de carga de aplicativo internos entre regiões.

grpc_status enum O status mais recente no stream do gRPC. Para mais informações, consulte Códigos de status do gRPC.
per_processing_request_info matriz Uma lista de estatísticas de ProcessingRequest para extensões ext_proc ou estatísticas de CheckRequest para extensões ext_authz que ocorrem no stream gRPC.
per_processing_request_info[].event_type enum O tipo de evento de ProcessingRequest. Pode ser um destes: REQUEST_HEADERS, REQUEST_BODY, RESPONSE_HEADERS ou RESPONSE_BODY.
per_processing_request_info[].latency duration A duração entre o envio do primeiro byte da mensagem ProcessingRequest para a extensão e o recebimento do último byte da mensagem ProcessingResponse.
per_processing_request_info[].processing_effect enum O resultado do processamento de cada evento em uma solicitação de processamento.

Aplica-se apenas a balanceadores de carga de aplicativo externos regionais, balanceadores de carga de aplicativo internos regionais e balanceadores de carga de aplicativo internos entre regiões.

Pode ser um dos seguintes valores:

  • NONE: indica que o conteúdo não foi alterado.
  • NONE_FAILED_OPEN: indica que nenhuma mutação foi realizada porque a extensão falhou ao abrir.
  • CONTENT_MODIFIED: indica que o conteúdo foi alterado por uma solicitação de mutação aplicada com sucesso.
  • IMMEDIATE_RESPONSE: indica que uma resposta imediata foi enviada pela extensão para interromper todo o processamento.
  • MUTATION_REJECTED: indica que a extensão solicitou pelo menos uma mudança não permitida e o processamento foi interrompido. As mensagens de erro adequadas são registradas.
  • UNSPECIFIED: indica que o efeito do processamento não é conhecido.
per_processing_request_info[].processing_effect_details string Quando processing_effect é MUTATION_REJECTED, os detalhes sobre o motivo da rejeição de uma mutação.

Aplica-se apenas a balanceadores de carga de aplicativo externos regionais, balanceadores de carga de aplicativo internos regionais e balanceadores de carga de aplicativo internos entre regiões.

resource string Nome do recurso de extensão

Monitoramento

Nesta seção, descrevemos como usar os painéis do Cloud Monitoring para visualizar métricas de plug-ins do balanceador de carga de aplicativo configurados usando as extensões de serviço. É possível monitorar os plug-ins pela perspectiva do plug-in ou do balanceador de carga.

Monitoramento da perspectiva de plug-ins

Nesta seção, descrevemos o monitoramento de extensões de serviço do ponto de vista dos plug-ins.

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 networkservices.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.

Monitoramento da perspectiva do balanceador de carga

Nesta seção, descrevemos o monitoramento de extensões de serviço para plug-ins da perspectiva do balanceador de carga.

Acessar o painel do Monitoring para o Cloud Load Balancing

Os balanceadores de carga de aplicativo exportam dados de monitoramento para o Cloud Monitoring.

Use as métricas do Monitoring para:

  • avaliar a configuração, o uso e o desempenho de um balanceador de carga;
  • resolver problemas;
  • Melhorar a utilização de recursos e a experiência do usuário

Para visualizar um painel predefinido, siga estas etapas:

  1. No console do Google Cloud , acesse a página Visão geral dos painéis.

    Acessar "Visão geral dos painéis"

  2. Na seção Categorias, clique em GCP.
    • Para ver uma lista de painéis de todos os balanceadores de carga, na lista Painéis do GCP, clique no painel chamado Balanceadores de carga do Google Cloud. Para visualizar o painel de um balanceador de carga específico, localize o balanceador de carga na lista e clique no nome dele.
    • Para visualizar os painéis predefinidos apenas para seus balanceadores de carga, selecione o painel apropriado.

Além dos painéis predefinidos no Monitoring, é possível criar painéis personalizados, configurar alertas e consultar as métricas por meio da API Cloud Monitoring.

Métricas de plug-in para o Cloud Load Balancing

É possível monitorar as seguintes métricas para plug-ins do ponto de vista do Cloud Load Balancing.

Na pré-lançamento, é possível monitorar as seguintes métricas para extensões em todos os tipos de balanceadores de carga de aplicativo. Essas métricas têm o prefixo networkservices.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.

Também é possível monitorar as métricas a seguir. Essas métricas têm o prefixo loadbalancing.googleapis.com/. O prefixo é omitido das entradas na tabela.

Tipo de métrica Nome de exibição
Classe, Tipo, Unidade
Descrição
https/backend_request_count,
https/external/regional/backend_request_count,
https/internal/backend_request_count
Contagem de solicitações de back-end
DELTA, INT64, 1
O número de vezes que um plug-in é chamado pelo balanceador de carga de aplicativo.
https/backend_request_bytes_count,
https/external/regional/backend_request_bytes_count,
https/internal/backend_request_bytes_count
Bytes de solicitação de back-end
DELTA, INT64, By
O número de bytes enviados do balanceador de carga para o plug-in.
https/backend_response_bytes_count,
https/external/regional/backend_response_bytes_count,
https/internal/backend_response_bytes_count
Bytes de resposta do back-end
DELTA, INT64, By
O número de bytes recebidos pelo balanceador de carga do back-end da extensão.

Ver métricas do plug-in

Para conferir as métricas de um plug-in específico, faça o seguinte:

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

    Acessar o Metrics Explorer

  2. No elemento Métrica, expanda o menu Selecionar uma métrica. Em seguida, faça o seguinte:

    1. Na lista de recursos, selecione a regra apropriada do balanceador de carga de aplicativo.

    2. Na lista de categorias de métricas, selecione Https.

    3. Na lista de métricas, selecione uma métrica de plug-in.

    4. Clique em Aplicar.

  3. No elemento Filtro, faça o seguinte:

    1. Selecione o rótulo backend_target_type e defina o valor como WASM_PLUGIN.

    2. Selecione o rótulo backend_target_name e defina o nome do plug-in como o valor.

Para mais informações sobre os tipos de métricas do balanceador de carga, consulte a seção loadbalancing da página de métricas do Google Cloud .