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 está desativada por padrão. Para registrar os 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 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.

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 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 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 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 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 uma entrada de registro de exemplo 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 registro associadas a uma determinada solicitação HTTP. O limite se aplica apenas ao texto da mensagem de registro, não a metadados adicionais adicionados ao 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 do ponto de vista do balanceador de carga

Esta seção descreve a geração de 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 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

Nesta seção, descrevemos como usar 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 na perspectiva do plug-in ou do balanceador de carga.

Monitoramento da perspectiva dos 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 Service Extensions.

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

Na prévia, é 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 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 pela extensão
DELTAINT641
Aplicável apenas a eventos request_body e response_body. O número de partes de dados enviadas 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_count 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.

Você também pode 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 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 .