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 do Service Extensions para o Cloud Load Balancing e o Cloud CDN.

Logging

Esta seção descreve o registro em registros para plug-ins do balanceador de carga de aplicativo. É possível fazer o registro do ponto de vista do plug-in e do balanceador de carga.

Mensagens de registro

Service Extensions oferece suporte à geração de mensagens de registro durante a execução do plug-in. A gravação de registros fica desativada por padrão. Para gravar registros de um plug-in, ative-o ao criar ou atualizar o plug-in.

Os registros de log do 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 rastreamento requestId que ajuda a determinar o registro de solicitação a que uma mensagem de registro está associada.

Os registros relevantes para Service Extensions estão em uma das seguintes categorias:

  • Mensagens de registro do plug-in

    Gerado por uma chamada de geração de registros, 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 conferir 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.

Registro do ponto de vista do plug-in

Esta seção descreve o registro do Service Extensions na perspectiva do plug-in.

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

Service Extensions oferece suporte à geração de mensagens de registro durante a execução do plug-in. A gravação de registros fica desativada por padrão.

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

Para ativar o registro em um plug-in atual, 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 atividade 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 de 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 o registro em log para o plug-in, é possível conferir as mensagens emitidas por instruções de registro em log no código do plug-in em Cloud Logging.

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

Ver mensagens de registro para plug-ins

É possível ver os registros criando consultas na Análise de registros.

É possível ver os registros de plug-in como registros independentes de Service Extensions. Nessa visualização, cada mensagem de registro do plug-in é gravada em um registro próprio 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 exceder os limites de CPU ou memória, uma mensagem de gravidade ERROR será registrada. Essas mensagens também podem ser vistas em Ver e filtrar erros.

Exemplos de registros de plug-ins

Considere um exemplo de entrada de registro das Service Extensions. 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 em 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 incluídos no registro pelo Service Extensions.

Por exemplo, se um callback on_http_request_headers fizer duas chamadas de registro com mensagens de 4 KiB cada, e 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 terceira 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.

Registro em log da perspectiva do balanceador de carga

Esta seção descreve o registro em registros do Service Extensions na perspectiva 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 para o 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 ao selecionar o modo CUSTOM

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

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

Registrar mensagens 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ão no recurso de extensão de serviço que corresponde à solicitação.
extension string Nome da extensão na cadeia de extensão.
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.

Aplicável 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 fluxo gRPC. Para mais informações, consulte códigos de status do gRPC.
per_processing_request_info matriz Uma lista de estatísticas ProcessingRequest para extensões ext_proc ou estatísticas CheckRequest para extensões ext_authz que ocorrem no fluxo 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 momento em que o primeiro byte da mensagem ProcessingRequest é enviado para a extensão e o momento em que o último byte da mensagem ProcessingResponse é recebido.
per_processing_request_info[].processing_effect enum O resultado do processamento de cada evento em uma solicitação de processamento.

Aplicável 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 futuro.
  • 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.

Aplicável 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

Esta seção descreve como usar os painéis do Cloud Monitoring para visualizar métricas de plug-ins do balanceador de carga de aplicativo configurados com Service Extensions. É possível monitorar plug-ins da perspectiva do plug-in ou do balanceador de carga.

Monitoramento da perspectiva de plug-ins

Esta seção descreve o monitoramento de Service Extensions na perspectiva de plug-ins.

Para informações detalhadas sobre os tipos de métricas do Service Extensions, consulte a página Google Cloud métricas.

Ver o painel do Monitoring para Service Extensions

Para acessar o painel do Monitoring para Service Extensions, faça o seguinte:

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

    Acessar Service Extensions

  2. Clique na guia Plug-ins.
  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 você a monitorar a performance 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 conferir 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 mostradas para todas as versões.
  8. Para mudar o período em que você quer ver os dados, 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 Service Extensions

É possível monitorar as seguintes métricas para plug-ins na perspectiva de Service Extensions. Essas métricas têm o prefixo networkservices.googleapis.com/wasm_plugin/. O prefixo foi omitido das entradas na tabela.

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

Monitoramento da perspectiva do balanceador de carga

Esta seção descreve o monitoramento de Service Extensions para plug-ins na perspectiva do balanceador de carga.

Conferir 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 acessar um painel predefinido, siga estas etapas:

  1. No console 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 conferir 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 acessar o painel de um balanceador de carga específico, localize o balanceador de carga na lista e clique no nome dele.
    • Para conferir os painéis predefinidos apenas para seus balanceadores de carga, selecione o painel adequado.

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.

Em prévia, é possível monitorar as seguintes métricas para extensões em balanceadores de carga de aplicativo externos regionais, balanceadores de carga de aplicativo internos regionais e balanceadores de carga de aplicativo internos entre regiões. Essas métricas têm o prefixo networkservices.googleapis.com. O prefixo foi omitido das entradas na tabela a seguir.

A tabela a seguir fornece 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
Tipo, Tipo, Unidade
Descrição
extension/invocation_count Contagem de invocações de extensão
DELTAINT641
O número de invocações enviadas à extensão.
extension/invocation_latencies Latências de invocação de extensão
DELTADISTRIBUTIONms
A distribuição calculada com base na latência de cada invocação de extensão.
extension/sent_chunks_count Contagem de partes enviadas da extensão
DELTAINT641
Aplicável apenas a eventos request_body e response_body. O número de blocos de dados enviados para a extensão.
extension/received_chunks_count Contagem de partes recebidas da extensão
DELTAINT641
Aplicável somente a eventos request_body e response_body. O número de partes recebidas da extensão.
extension/failed_open_count Falhas de invocação de extensão com fail-open
DELTAINT641
O número de vezes que uma invocação falhou quando o sistema foi configurado para fail-open e a solicitação pôde continuar.
extension/mutation_rejections Contagem de rejeições de mutação de extensão
DELTAINT641
O número de invocações que solicitaram mutações de cabeçalho, 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
DELTAINT64By
O número de bytes enviados para a extensão.
extension/received_bytes_count Contagem de bytes recebidos da extensão
DELTAINT64By
O número de bytes recebidos da extensão.

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

Tipo de métrica Nome de exibição
Tipo, 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
DELTAINT641
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 da solicitação de back-end
DELTAINT64By
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
DELTAINT64By
O número de bytes recebidos pelo balanceador de carga do back-end da extensão.

Ver métricas de 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 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 .