Registros e métricas para serviços de back-end

Neste documento, mostramos como configurar e usar o Cloud Logging e o Cloud Monitoring com balanceadores de carga de aplicativo clássicos, balanceadores de carga de aplicativo externos globais e Cloud CDN.

Geração de registros

É possível ativar, desativar e ver registros para um serviço de back-end do balanceador de carga de aplicativo externo. Para balanceadores de carga de aplicativos externos com buckets de back-end, a geração de registros é ativada automaticamente e não pode ser desativada.

É possível ativar ou desativar a geração de registros para cada serviço de back-end. É possível configurar se você quer registrar todas as solicitações ou uma fração amostrada aleatoriamente.

Você precisa garantir que não tem uma exclusão de registros que se aplique a balanceadores de carga de aplicativo externos. Para instruções sobre como verificar se os registros Cloud HTTP Load Balancer são permitidos, consulte Como visualizar exclusões de tipo de recurso.

Coleta e amostragem de registros

As solicitações (e as respostas correspondentes) processadas pelo back-end do balanceador de carga e as instâncias de máquina virtual (VM) são amostradas. Essas solicitações são processadas para gerar registros. Você controla a fração das solicitações que são emitidos como entradas de registro, de acordo com a logConfig.sampleRate . Quando logConfig.sampleRate for 1.0 (100%), os registros serão gerados para todas as solicitações e gravados no Cloud Logging.

Como ativar a geração de registros em um novo serviço de back-end

Console

  1. No Console do Google Cloud, acesse a página Balanceamento de carga.

    Acessar o "Balanceamento de carga"

  2. Clique no nome do balanceador de carga.

  3. Clique em Editar.

  4. Clique em Configuração de back-end.

  5. Selecione Criar um serviço de back-end.

  6. Preencha os campos obrigatórios.

  7. Na seção Logging, marque a caixa de seleção Ativar geração de registros.

  8. Defina uma fração da Taxa de amostragem. É possível definir um número 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.

  9. Para concluir a edição do serviço de back-end, clique em Atualizar.

  10. Para concluir a edição do balanceador de carga, clique em Atualizar.

gcloud: modo global

Crie um serviço de back-end e ative a geração de registros usando o comando gcloud compute backend-services create.

gcloud compute backend-services create BACKEND_SERVICE \
    --global \
    --enable-logging \
    --logging-sample-rate=VALUE \
    --load-balancing-scheme=EXTERNAL_MANAGED

onde

  • --global indica que o serviço de back-end é global. Use este campo para serviços de back-end usados com balanceadores de carga de aplicativo externos globais.
  • --enable-logging ativa a geração de registros para esse serviço de back-end.
  • --logging-sample-rate permite especificar 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 registrado. Só é significativo com o parâmetro --enable-logging. Ativar a geração de registros, mas definir a taxa de amostragem como 0.0, equivale a desativar a geração de registros. O valor padrão é 1.0.

gcloud: modo clássico

Crie um serviço de back-end e ative a geração de registros usando o comando gcloud compute backend-services create.

gcloud compute backend-services create BACKEND_SERVICE \
 --global \
 --enable-logging \
 --logging-sample-rate=VALUE \
 --load-balancing-scheme=EXTERNAL

onde

  • --global indica que o serviço de back-end é global. Use este campo para serviços de back-end usados com um balanceador de carga de aplicativo clássico.
  • --enable-logging ativa a geração de registros para esse serviço de back-end.
  • --logging-sample-rate permite especificar 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 registrado. Só é significativo com o parâmetro --enable-logging. Ativar a geração de registros, mas definir a taxa de amostragem como 0.0, equivale a desativar a geração de registros. O valor padrão é 1.0.

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

Console

  1. No Console do Google Cloud, acesse a página Balanceamento de carga.

    Acessar o "Balanceamento de carga"

  2. Clique no nome do balanceador de carga.

  3. Clique em Editar.

  4. Clique em Configuração de back-end.

  5. Clique em Editar ao lado do serviço de back-end.

  6. Na seção Logging, marque a caixa de seleção Ativar geração de registros.

  7. No campo Taxa de amostragem, defina a probabilidade de amostragem. É possível definir um número 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.

  8. Para concluir a edição do serviço de back-end, clique em Atualizar.

  9. Para concluir a edição do balanceador de carga, clique em Atualizar.

gcloud: modo global

Ative a geração de registros em um serviço de back-end com o comando gcloud compute backend-services update.

gcloud compute backend-services update BACKEND_SERVICE \
    --global \
    --enable-logging \
    --logging-sample-rate=VALUE

onde

  • --global indica que o serviço de back-end é global. Use este campo para serviços de back-end usados com balanceadores de carga de aplicativo externos globais.
  • --enable-logging ativa a geração de registros para esse serviço de back-end.
  • --logging-sample-rate permite especificar 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 registrado. Só é significativo com o parâmetro --enable-logging. Ativar a geração de registros, mas definir a taxa de amostragem como 0.0, equivale a desativar a geração de registros. O valor padrão é 1.0.

gcloud: modo clássico

Ative a geração de registros em um serviço de back-end com o comando gcloud compute backend-services update.

gcloud compute backend-services update BACKEND_SERVICE \
    --global \
    --enable-logging \
    --logging-sample-rate=VALUE

onde

  • --global indica que o serviço de back-end é global. Use este campo para serviços de back-end usados com um balanceador de carga de aplicativo clássico.
  • --enable-logging ativa a geração de registros para esse serviço de back-end.
  • --logging-sample-rate permite especificar 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 registrado. Só é significativo com o parâmetro --enable-logging. Ativar a geração de registros, mas definir a taxa de amostragem como 0.0, equivale a desativar a geração de registros. O valor padrão é 1.0.

Como desativar ou modificar a geração de registros em um serviço de back-end atual

Console

  1. No Console do Google Cloud, acesse a página Balanceamento de carga.

    Acessar o "Balanceamento de carga"

  2. Clique no nome do balanceador de carga.

  3. Clique em Editar.

  4. Clique em Configuração de back-end.

  5. Clique em Editar ao lado do serviço de back-end.

  6. Para desativar completamente a geração de registros, na seção Geração de registros, limpe a Ativar a geração de registros.

  7. Se a geração de registros permanecer ativada, será possível definir uma fração da taxa de amostragem diferente. Você pode definir um número de 0.0 a 1.0, em que 0.0 significa que nenhuma solicitação é registrada e 1.0 significa que 100% dos solicitações são registradas. O valor padrão é 1.0. Por exemplo, 0.2 significa 20% das solicitações amostradas geram registros.

  8. Para concluir a edição do serviço de back-end, clique em Atualizar.

  9. Para concluir a edição do balanceador de carga, clique em Atualizar.

gcloud: modo global

Desative a geração de registros no serviço de back-end com o comando gcloud compute backend-services update.

Como desativar completamente a geração de registros

gcloud compute backend-services update BACKEND_SERVICE \
    --global \
    --no-enable-logging

onde

  • --global indica que o serviço de back-end é global. Use este campo para serviços de back-end usados com balanceadores de carga de aplicativo externos globais.
  • --region indica que o serviço de back-end é global. Use este campo para serviços de back-end usados com balanceadores de carga de aplicativo externos regionais.
  • --no-enable-logging desativa a geração de registro para esse serviço de back-end.

Como alterar a taxa de amostragem da geração de registros

gcloud compute backend-services update BACKEND_SERVICE \
 --global \
 --logging-sample-rate=VALUE

gcloud: modo clássico

Desative a geração de registros no serviço de back-end com o comando gcloud compute backend-services update.

Como desativar completamente a geração de registros

gcloud compute backend-services update BACKEND_SERVICE \
    --global \
    --no-enable-logging

onde

  • --global indica que o serviço de back-end é global. Use este campo para serviços de back-end usados com um balanceador de carga de aplicativo clássico.
  • --no-enable-logging desativa a geração de registro para esse serviço de back-end.

Como alterar a taxa de amostragem da geração de registros

gcloud compute backend-services update BACKEND_SERVICE \
 --global \
 --logging-sample-rate=VALUE

onde

  • --global indica que o serviço de back-end é global. Use este campo para serviços de back-end usados com um balanceador de carga de aplicativo clássico.
  • --logging-sample-rate permite especificar 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 registrado. Só é significativo com o parâmetro --enable-logging. Ativar a geração de registros, mas definir a taxa de amostragem como 0.0, equivale a desativar a geração de registros.

Mostrar registros


Para seguir as instruções passo a passo desta tarefa diretamente no console do Google Cloud, clique em Orientação:

Orientações


Os registros HTTP(S) são indexados primeiro por uma regra de encaminhamento e, depois, por um mapa de URLs.

Para visualizar os registros, acesse a página do Análise de registros.

Acessar o "Análise de registros"

  • Para ver todos os registros, no menu de filtro Recurso, selecione Balanceador de carga HTTP do Cloud > Todas as regras de encaminhamento.

  • Para conferir os registros de uma regra de encaminhamento, selecione apenas um nome de regra.

  • Para explorar os registros de um mapa de URL, selecione uma regra de encaminhamento e, em seguida, selecione um mapa de URL.

Os campos de registro do tipo booleano normalmente só aparecem se tiverem um valor true. Se um campo booleano tem um valor false, esse campo é omitido do registro.

A codificação UTF-8 é aplicada aos campos de registro. Os caracteres que não forem UTF-8 serão substituídos por pontos de interrogação. Para balanceadores de carga de aplicativo clássicos e externos globais, é possível exportar métricas com base em registros usando registros de recurso (resource.type="http_load_balancer"). As métricas criadas são baseadas no recurso "Regra de balanceador de carga de aplicativo (métricas com base em registros)" (l7_lb_rule), que está disponível nos painéis do Cloud Monitoring e não no recurso https_lb_rule.

O que é registrado

As entradas de registro do balanceador de carga de aplicativo externo contêm informações úteis para monitorar e depurar o tráfego HTTP(S). Os registros contêm campos obrigatórios, que são os campos padrão de cada registro.

Campo Formato do campo Tipo de campo: obrigatório ou opcional Descrição
gravidade
insertID
logName
LogEntry Obrigatório Os campos gerais, conforme descrito em uma entrada de registro.
timestamp string (Timestamp format) Opcional A hora em que o GFE da primeira camada recebe a solicitação.
httpRequest HttpRequest Obrigatório Um protocolo comum para o registro de solicitações HTTP.

HttpRequest.protocol não está preenchido para resource.type="http_load_balancer"

.
resource MonitoredResource Obrigatório

O MonitoredResource é o tipo de recurso associado a uma entrada de registro.

O MonitoredResourceDescriptor descreve o esquema de um objeto MonitoredResource usando um nome de tipo e um conjunto de rótulos. Para mais informações, consulte Rótulos de recursos.

jsonPayload object (Struct format) Obrigatório O payload da entrada de registro expresso como um objeto JSON. O objeto JSON contém os seguintes campos:
  • statusDetails
  • backendTargetProjectNumber
  • overrideResponseCode
  • errorService
  • errorBackendStatusDetails
string Obrigatório O campo statusDetails tem uma string que explica por que o balanceador de carga retornou o status HTTP específico. Para mais informações sobre essas strings de registro, consulte Mensagens de sucesso de HTTP statusDetails e Mensagens de falha HTTP de statusDetails.
string Obrigatório O campo backendTargetProjectNumber contém o número do projeto em que o destino de back-end (serviço ou bucket de back-end) foi criado. Este campo está no formato: "projects/PROJECT_NUMBER". Essas informações são disponível apenas para balanceadores de carga de aplicativo externos globais que usam mensagens de erro de resposta.
integer Obrigatório O overrideResponseCode contém o código de resposta de substituição aplicado à resposta enviada ao cliente. Essas informações estão disponíveis apenas para balanceadores de carga de aplicativo externos globais que usam respostas de erro personalizadas.
string Obrigatório O campo errorService contém o serviço de back-end que forneceu a resposta de erro personalizada. Essas informações estão disponíveis apenas para balanceadores de carga de aplicativo externos globais que usam respostas de erro personalizadas.
string Obrigatório O campo errorBackendStatusDetails contém a statusDetails da resposta final exibida ao cliente. Esta informação só está disponível para balanceadores de carga de aplicativo externos globais que usam atributos de erro de resposta.

Rótulos de recursos

A tabela a seguir lista os rótulos dos recursos de resource.type="http_load_balancer".

Campo Tipo Descrição
backend_service_name string O nome do serviço de back-end.
forwarding_rule_name string O nome do objeto da regra de encaminhamento.
project_id string O identificador do projeto do Google Cloud associado a esse recurso.
target_proxy_name string O nome do objeto do proxy de destino referenciado pela regra de encaminhamento.
url_map_name string O nome do objeto do mapa de URL configurado para selecionar um serviço de back-end.
zone string A zona em que o balanceador de carga está em execução. A zona é global.

Mensagens de sucesso HTTP statusDetails

statusDetails (bem-sucedida) Significado Códigos de resposta associados frequentes
byte_range_caching A solicitação HTTP foi exibida usando o cache de intervalo de bytes do Cloud CDN. Qualquer código de resposta armazenável em cache é possível.
response_from_cache A solicitação HTTP foi exibida por um cache do Cloud CDN. Qualquer código de resposta armazenável em cache é possível.
response_from_cache_validated O código de retorno foi definido por uma entrada de cache do Cloud CDN que foi validada por um back-end. Qualquer código de resposta armazenável em cache é possível.
response_sent_by_backend A solicitação HTTP foi encaminhada com sucesso por um proxy para o back-end, e a resposta foi retornada pelo back-end. O código de resposta HTTP é definido pelo software em execução no back-end.

Mensagens de falha HTTP statusStatusDetails

statusDetails (falha) Significado Códigos de resposta associados frequentes
aborted_request_due_to_backend_early_response Uma solicitação com corpo foi cancelada porque o back-end enviou uma resposta antecipada com um código de erro. A resposta foi encaminhada ao cliente. A solicitação foi encerrada. 4XX ou 5XX
backend_connection_closed_after_partial_response_sent A conexão do back-end fechou inesperadamente depois de uma resposta parcial ter sido enviada ao cliente.

O código de resposta HTTP é definido pelo software em execução no back-end. O código de resposta HTTP 0 (zero) significa que o back-end enviou cabeçalhos HTTP incompletos.

O código de resposta HTTP será 101 se a conexão HTTP(S) tiver sido atualizada a uma conexão websocket.

backend_connection_closed_before_data_sent_to_client O back-end fechou inesperadamente sua conexão com o balanceador de carga antes de a resposta ser encaminhada por proxy para o cliente.

502 e 503

O código de resposta HTTP será 101 se a conexão HTTP(S) tiver sido atualizada a uma conexão websocket.

backend_early_response_with_non_error_status O back-end enviou uma resposta sem erro (1XX ou 2XX) a uma solicitação antes de receber todo o corpo da solicitação. 502, 503
backend_interim_response_not_supported O back-end enviou uma resposta provisória 1XX para a solicitação, em um contexto em que as respostas temporárias não são aceitas.

502 e 503

backend_response_corrupted O corpo da resposta HTTP enviada pelo back-end tem uma codificação de transferência fragmentada inválida ou então está corrompida. Qualquer código de resposta é possível, dependendo da natureza da corrupção. Geralmente 502 e 503.
backend_response_headers_too_long Os cabeçalhos de resposta HTTP enviados pelo back-end excederam o limite permitido. Consulte a seção Tamanho do cabeçalho para balanceadores de carga de aplicativos externos para mais informações. 502, 503
backend_timeout

O tempo limite do back-end foi atingido enquanto uma resposta era gerada.

Para uma conexão WebSocket:

  • No caso do balanceador de carga de aplicativo externo global, um erro é gerado quando o GFE fecha a conexão do websocket em estado inativo após o serviço de back-end tempo limite expirar.
  • No balanceador de carga de aplicativo clássico, um erro é gerado quando o GFE fecha a conexão do Websocket em estado inativo ou ativo, após o o tempo limite do serviço de back-end expirar.

502 e 503

O código de resposta HTTP é 101 se a conexão HTTP(S) foi atualizada para uma conexão WebSocket.

banned_by_security_policy A solicitação foi banida por uma regra de proibição baseada em taxa do Google Cloud Armor. 429
body_not_allowed O cliente enviou uma solicitação HTTP com corpo, mas o método HTTP usado não permite um corpo. 400
byte_range_caching_aborted Anteriormente, o balanceador de carga recebeu uma resposta indicando que o recurso podia ser armazenado em cache e era compatível com intervalos de bytes. O Cloud CDN recebeu uma resposta inconsistente (por exemplo, com um código de resposta diferente do 206 Conteúdo parcial esperado). Isso aconteceu ao tentar executar o preenchimento do cache usando uma solicitação de intervalo de bytes. Como resultado, o balanceador de carga cancelou a resposta para o cliente. 2XX
byte_range_caching_forwarded_backend_response Anteriormente, o balanceador de carga recebeu uma resposta indicando que o recurso podia ser armazenado em cache e era compatível com intervalos de bytes. O Cloud CDN recebeu uma resposta inconsistente (por exemplo, com um código de resposta diferente do 206 Conteúdo parcial esperado). Isso aconteceu ao tentar executar o preenchimento do cache usando uma solicitação de intervalo de bytes. O balanceador de carga então encaminhou a resposta inconsistente para o cliente.

Devolvido do back-end: qualquer código de resposta é possível.

byte_range_caching_retrieval_abandoned O cliente cancelou uma solicitação de intervalo de bytes ou de validação iniciada pelo Cloud CDN.

Devolvido do back-end: qualquer código de resposta é possível.

byte_range_caching_retrieval_from_backend_failed_after_partial_response Uma solicitação de intervalo de bytes ou de validação iniciada pelo Cloud CDN encontrou um erro. Consulte a entrada de registro correspondente do Cloud Logging referente à solicitação iniciada pelo Cloud CDN para o status detalhado do back-end. 2XX
cache_lookup_failed_after_partial_response O balanceador de carga não conseguiu exibir uma resposta completa do cache do Cloud CDN devido a um erro interno. 2XX
cache_lookup_timeout_after_partial_response O stream de consulta de cache do Cloud CDN atingiu o tempo limite, porque o cliente não recuperou o conteúdo em tempo hábil. 2XX
client_disconnected_after_partial_response A conexão com o cliente foi interrompida depois de o balanceador de carga enviar uma resposta parcial.

Devolvido do back-end: qualquer código de resposta é possível.

O código de resposta HTTP será 101 se a conexão HTTP(S) tiver sido atualizada a uma conexão websocket.

client_disconnected_before_any_response A conexão com o cliente foi interrompida antes de o balanceador de carga enviar uma resposta.

0

O código de resposta HTTP é 101 se a conexão HTTP(S) foi atualizada para uma conexão WebSocket.

client_timed_out O Google Front End (GFE) deixou inativa a conexão com o cliente devido à falta de progresso enquanto estava enviando solicitação ou resposta via proxy. 0 ou 408
client_cert_invalid_rsa_key_size Uma folha do cliente ou um certificado intermediário tinha um tamanho de chave RSA inválido. Para mais informações, consulte Erros registrados para conexões fechadas. 0
client_cert_unsupported_elliptic_curve_key Um cliente ou certificado intermediário está usando uma curva elíptica não compatível. Para mais informações, consulte Erros registrados para conexões fechadas. 0
client_cert_unsupported_key_algorithm Um cliente ou certificado intermediário está usando um algoritmo não RSA ou não ECDSA. Para mais informações, consulte Erros registrados para conexões fechadas. 0
client_cert_pki_too_large A ICP a ser usada para validação tem mais de três certificados intermediários que compartilham as mesmas informações de assunto e de chave pública do assunto. Para mais informações, consulte Erros registrados para conexões fechadas. 0
client_cert_chain_max_name_constraints_exceeded Um certificado intermediário fornecido para validação tinha mais de dez restrições de nome. Para mais informações, consulte Erros registrados para conexões fechadas. 0
client_cert_chain_invalid_eku O certificado do cliente ou o emissor não tem Extended Key Usage (EKU) que inclui clientAuth. Para mais informações, consulte Erros registrados para conexões fechadas. 0
client_cert_validation_timed_out O limite de tempo foi excedido ao validar a cadeia de certificados. Para mais informações, consulte Erros registrados para conexões fechadas. 0
client_cert_validation_search_limit_exceeded O limite de profundidade ou iteração é atingido ao tentar validar a cadeia de certificados. Para mais informações, consulte Erros registrados para conexões fechadas. 0
client_cert_validation_not_performed Você configurou o mTLS sem configurar um TrustConfig. Para mais informações, consulte Erros registrados para conexões fechadas. 0
client_cert_not_provided O cliente não forneceu o certificado solicitado durante o handshake. Para mais informações, consulte Erros registrados para conexões fechadas. 0
client_cert_validation_failed Falha na validação do certificado do cliente com o TrustConfig ao usar algoritmos de hash como MD4, MD5 e SHA-1. Para mais informações, consulte Erros registrados para conexões fechadas. 0
config_not_found

Falta a configuração do projeto no balanceador de carga. Isso pode ocorrer de maneira intermitente, principalmente depois de fazer alterações na configuração que adicionam um novo recurso.

Como existem duas camadas de proxies, às vezes, o GFE de primeira camada pode não alcancem o GFE de segunda camada. Isso pode ser devido a um erro interno, como um lançamento em andamento, uma sobrecarga do balanceador de carga ou problemas de configuração intermitentes.

404, 502 e 503
direct_response O balanceador de carga substituiu essa solicitação e retornou uma resposta fixa. Você pode ver qualquer código de resposta HTTP, dependendo da natureza do problema. Por exemplo, o código de resposta HTTP 410 significa que o back-end está indisponível devido à inadimplência de pagamento.
denied_by_security_policy O balanceador de carga negou essa solicitação devido a uma política de segurança do Google Cloud Armor. Configurado na Política de segurança.
error_uncompressing_gzipped_body Houve um erro ao descompactar uma resposta HTTP compactada como gzip. 502, 503
failed_to_connect_to_backend O balanceador de carga falhou ao se conectar com o back-end. Isso inclui tempos limite durante a fase de conexão. 502, 503
failed_to_pick_backend O balanceador de carga falhou ao escolher um back-end íntegro para administrar a solicitação. 502, 503
failed_to_negotiate_alpn O balanceador de carga e o back-end não conseguiram negociar um protocolo da camada de aplicativos (como HTTP/2) para se comunicar entre si por meio de TLS. 502, 503
headers_too_long Os cabeçalhos da solicitação eram maiores do que o tamanho máximo permitido. 413
http_version_not_supported Versão HTTP não compatível. Atualmente, apenas HTTP 0.9, 1.0, 1.1 e 2.0 são compatíveis. 400
internal_error Erro interno no balanceador de carga. Normalmente, representa um erro temporário na infraestrutura do balanceador de carga. Tente refazer a consulta. 4XX
invalid_external_origin_endpoint A configuração do back-end externo é inválida. Revise a configuração do NEG da Internet e certifique-se de que ela especifique um endereço FQDN/IP e uma porta válidos. 4XX
invalid_request_headers

Os cabeçalhos de solicitação HTTP recebidos de um cliente contêm pelo menos um que não é permitido por uma especificação HTTP aplicável.

Por exemplo, os nomes de campos de cabeçalho que incluem uma aspa dupla (") ou qualquer caractere fora do intervalo ASCII padrão (ou seja, qualquer byte >= 0x80) são inválidos.

Veja mais informações em:

400
invalid_http2_client_header_format Os cabeçalhos HTTP/2 de um cliente são inválidos. Para mais informações, consulte invalid_request_headers. 400
multiple_iap_policies Não é possível combinar várias políticas do Identity-Aware Proxy (IAP). Se você tiver uma política de IAP anexada a um serviço de back-end e outra a um objeto sem servidor, remova uma das políticas e tente novamente. Os objetos sem servidor incluem o App Engine, do Cloud Run e do Cloud Run. 500
malformed_chunked_body O corpo da solicitação foi codificado inadequadamente em fragmentos. 411
request_loop_detected O balanceador de carga detectou um loop de solicitação. Esse loop pode ser causado por uma configuração incorreta em que o back-end encaminhou a solicitação de volta ao balanceador de carga. 502, 503
required_body_but_no_content_length A solicitação HTTP requer um corpo, mas os cabeçalhos da solicitação não incluem um comprimento de conteúdo ou cabeçalho fragmentado de codificação de transferência. 400 ou 403
secure_url_rejected Uma solicitação com um URL https:// foi recebida em uma conexão HTTP/1.1 de texto simples. 400
ssl_certificate_san_verification_failed O balanceador de carga não encontrou um SAN (Subject Alternative Name) no certificado SSL apresentado pelo back-end que correspondesse ao nome do host configurado. 502, 503
ssl_certificate_chain_verification_failed O certificado SSL apresentado pelo back-end falhou na verificação do certificado SSL. 502, 503
throttled_by_security_policy A solicitação foi bloqueada por uma regra de limitação do Google Cloud Armor. 429
unsupported_method O cliente forneceu um método de solicitação HTTP não compatível. 400
unsupported_100_continue A solicitação do cliente incluía o cabeçalho "Expect: 100-continue" em um protocolo que não tem suporte. 400
upgrade_header_rejected A solicitação HTTP do cliente continha o cabeçalho Upgrade e foi recusada. 400
websocket_closed A conexão WebSocket foi fechada. 101
websocket_handshake_failed O handshake do WebSocket falhou. Qualquer código de resposta é possível, dependendo da natureza da falha de handshake.
request_body_too_large O corpo da solicitação HTTP excedeu o máximo suportado pelo back-end. Não aplicável a back-ends de VMs. 413
handled_by_identity_aware_proxy Esta resposta foi gerada pelo Identity-Aware Proxy durante a verificação de identidade do cliente antes de permitir o acesso. 200, 302, 400, 401, 403, 500, 502 e 503
serverless_neg_routing_failed A solicitação NEG sem servidor não pode ser enviada. Esse erro pode acontecer quando a região especificada no NEG não puder ser alcançada ou quando o o nome do recurso (por exemplo, o nome das funções do Cloud Run) não foi encontrado. 404, 502, 503
fault_filter_abort Esse erro pode acontecer se o cliente tiver configurado um filtro de falha e este tiver sido acionado para a solicitação em questão. O valor precisa estar entre 200 e 599.

Ver registros para validação do certificado do cliente mTLS

Para ver os erros registrados para conexões fechadas durante a validação do certificado do cliente TLS mútuo, conclua as etapas a seguir.

Consulta do console

  1. No console do Google Cloud, acesse a página do Explorador de registros.

    Acessar a Análise de registros

  2. Clique no botão de alternância Mostrar consulta.

  3. Cole o código abaixo no campo "Consulta". Substitua FORWARDING_RULE_NAME pelo nome da regra de encaminhamento.

    jsonPayload.statusDetails=~"client_cert"
    jsonPayload.@type="type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
    resource.labels.forwarding_rule_name=FORWARDING_RULE_NAME
    
  4. Clique em Executar consulta.

Registros de solicitação da política de autorização

O objeto authz_info no payload JSON da entrada de registro do balanceador de carga contém informações sobre políticas de autorização. É possível configurar métricas com base em registros para o tráfego permitido ou negado por essas políticas.

Campo Tipo Descrição
authz_info.policies[] objeto A lista de políticas que correspondem à solicitação.
authz_info.policies[].name string O nome da política de autorização que corresponde à solicitação.
O nome está em branco pelos seguintes motivos:
  • Nenhuma política ALLOW corresponde à solicitação, que é negada.
  • Nenhuma política do DENY corresponde à solicitação, que é permitida.
authz_info.policies[].result enum O resultado pode ser ALLOWED ou DENIED.
authz_info.policies[].details string Os detalhes incluem o seguinte:
  • allowed_as_no_deny_policies_matched_request
  • denied_as_no_allow_policies_matched_request
  • denied_by_authz_extension
  • denied_by_cloud_iap
authz_info.overall_result enum O resultado pode ser ALLOWED ou DENIED.

Como gerar registros de buckets de back-end

A geração de registros é ativada automaticamente para balanceadores de carga com buckets de back-end. Não é possível modificar ou desativar a geração de registros em buckets de back-end.

Geração de registros para o Google Cloud Armor

A tabela de mensagens de falha HTTP statusDetail contém algumas mensagens que se aplicam ao Google Cloud Armor. Para mais informações sobre os registros do Google Cloud Armor, consulte Como usar a geração de registros de solicitação.

Geração de registros para implantações de VPC compartilhada

Os registros e as métricas do balanceador de carga do aplicativo geralmente são exportados para o projeto que tem a regra de encaminhamento. Portanto, os administradores de serviço (proprietários ou usuários de projetos em que o serviço de back-end é criado) não terão acesso aos registros e métricas do balanceador de carga por padrão. Use os papéis do IAM para conceder essas permissões aos administradores do serviço. Para saber mais sobre os papéis do IAM disponíveis e as etapas para conceder acesso, consulte Conceder acesso ao Monitoring.

Como interagir com os registros

É possível interagir com os registros do balanceador de carga de aplicativo externo usando a API Cloud Logging. A API Logging fornece maneiras de filtrar de forma interativa registros que têm campos específicos definidos. Ela exporta registros correspondentes para o Cloud Logging, o Cloud Storage, o BigQuery ou o Pub/Sub. Para mais informações sobre a API Logging, consulte Visão geral da API Cloud Logging.

Monitoramento

O balanceador de carga exporta dados de monitoramento para o Cloud Monitoring.

Use as métricas de monitoramento para fazer o seguinte:

  • 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

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

Como visualizar painéis predefinidos do Cloud Monitoring

O Cloud Monitoring fornece painéis predefinidos para monitorar os balanceadores de carga. Esses painéis são preenchidos automaticamente pelo Cloud Monitoring.

Siga estas etapas para acessar os painéis predefinidos:

  1. Acesse o Monitoring no Console do Google Cloud.

    Acessar Monitoring

  2. No painel de navegação do Monitoring, clique em Painéis.

  3. Em Categorias, clique em GCP.

    • Para visualizar uma lista de painéis de todos os balanceadores de carga do Google Cloud, selecione o 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 em seu nome.

    • Para visualizar os painéis predefinidos apenas para os balanceadores de carga de aplicativo externos, selecione o painel chamado Balanceadores de carga HTTP(S) externos. Essa página exibe um painel que mostra as proporções de resposta 5XX e a latência do back-end de todos os balanceadores de carga de aplicativo externos no projeto. Ela também fornece uma lista de painéis com todos os balanceadores de carga de aplicativo externos no seu projeto.

      É possível clicar no painel de cada balanceador de carga. Cada painel inclui:

      • Gráficos pré-preenchidos que exibem detalhamentos das respostas por classes de código de resposta (5XX, 4XX, 3XX, 2XX)
      • Latência total
      • Latência de back-end
      • RTT do front-end
      • Contagem de solicitações
      • Um link para os registros do balanceador de carga
  4. Para visualizar os painéis de serviços de terceiros, volte à página Painéis. Em Categorias, clique em Outros.

    • Para visualizar um painel de serviço de terceiros específico, localize-o na lista e clique no nome dele.

Como definir políticas de alertas


Para seguir as instruções passo a passo desta tarefa diretamente no console do Google Cloud, clique em Orientação:

Orientações


É possível criar políticas de alertas para monitorar os valores das métricas e ser notificado quando elas violarem uma condição.

  1. No console do Google Cloud, acesse a página  Alertas:

    Acessar Alertas

    Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoring.

  2. Se você não tiver criado seus canais de notificação e quiser receber uma notificação, clique em Editar canais de notificação e adicione-os. Volte para a página Alertas depois de adicionar seus canais.
  3. Na página Alertas, clique em Criar política.
  4. Para selecionar a métrica, expanda o menu Selecionar uma métrica e faça isto:
    1. Para limitar o menu a entradas relevantes, insira Global External Application Load Balancer Rule na barra de filtro. Se não houver resultados depois de filtrar o menu, desative a opção Mostrar somente recursos e métricas ativos.
    2. Em Tipo de recurso, selecione Regra de balanceador de carga de aplicativo externo global.
    3. Selecione uma Categoria de métrica e uma Métrica, depois selecione Aplicar.
  5. Clique em Próxima.
  6. As configurações da página Configurar acionador de alertas determinam quando o alerta é acionado. Selecione um tipo de condição e, se necessário, especifique um limite. Para mais informações, consulte Criar políticas de alertas de limite de métrica.
  7. Clique em Próxima.
  8. Opcional: para adicionar notificações à sua política de alertas, clique em Canais de notificação. Na caixa de diálogo, selecione um ou mais canais de notificação no menu e clique em OK.
  9. Opcional: Atualize a Duração do fechamento automático do incidente. Este campo determina quando o Monitoring fecha incidentes na ausência de dados de métrica.
  10. Opcional: clique em Documentação e adicione as informações que quer incluir em uma mensagem de notificação.
  11. Clique em Nome e digite um nome para a política de alertas.
  12. Clique em Criar política.
Saiba mais em Políticas de alertas.

Como definir painéis personalizados do Cloud Monitoring

É possível criar painéis personalizados do Cloud Monitoring para as métricas do balanceador de carga:

  1. No Console do Google Cloud, acesse a página Monitoring.

    Acessar Monitoring

  2. Selecione Painéis > Criar painel.

  3. Clique em Adicionar gráfico e dê um título ao gráfico.

  4. Para identificar a série temporal a ser exibida, escolha um tipo de recurso e de métrica:

    1. Na seção Recurso e métrica, clique no gráfico e, na seção Selecionar uma métrica, selecione uma das opções disponíveis:
      • Para um balanceador de carga de aplicativo externo global, selecione o tipo de recurso Regra de balanceador de carga de aplicativo externo global.
    2. Clique em Aplicar.
  5. Para especificar filtros de monitoramento, clique em Filtros > Adicionar filtro.

  6. Clique em Save.

Frequência e retenção de geração de relatórios de métricas

As métricas dos balanceadores de carga de aplicativo externos são exportadas para o Cloud Monitoring em lotes de granularidade de 1 minuto. Os dados de monitoramento são retidos por seis semanas.

O painel fornece análise de dados em intervalos padrão de 1H (uma hora), 6H (seis horas), 1D (um dia), 1W (uma semana) e 6W (seis semanas). É possível solicitar manualmente a análise em qualquer intervalo, de 6W a 1 minuto.

Como monitorar métricas

É possível monitorar as seguintes métricas para balanceadores de carga de aplicativo externos.

As seguintes métricas para balanceadores de carga de aplicativo externos globais são informadas no Cloud Monitoring. Essas métricas são precedidas por loadbalancing.googleapis.com/:s

Métrica Nome Descrição
Contagem de solicitações https/request_count O número de solicitações atendidas pelo balanceador de carga de aplicativo externo
Contagem de bytes da solicitação https/request_bytes_count O número de bytes enviados como solicitações dos clientes para o balanceador de carga de aplicativo externo
Contagem de bytes da resposta https/response_bytes_count O número de bytes enviados como respostas do balanceador de carga de aplicativo externo para os clientes
Latências totais https/total_latencies

Uma distribuição da latência. Latência é o tempo entre o primeiro byte da solicitação recebida para o último byte da resposta enviada pelo GFE.

As latências totais são medidas por solicitação/resposta. As pausas entre solicitações na mesma conexão que usam Connection: keep-alive não afetam a medição. Essa medida costuma ser reduzida para o 95º percentil nas visualizações do Cloud Monitoring.

Para conexões WebSocket, esse campo se refere a todo o tempo de duração da conexão.

Exemplo: um balanceador de carga tem 1 solicitação por segundo do Reino Unido com uma latência de 100 ms e 9 solicitações por segundo dos EUA com uma latência de 50 ms. Durante um determinado minuto, houve 60 solicitações do Reino Unido e 540 solicitações dos EUA. As métricas de monitoramento preservam a distribuição em todas as dimensões. É possível solicitar informações como as seguintes:

  • latência global mediana (300/600) – 50 ms
  • latência mediana do Reino Unido (30/60) - 100 ms
  • latência geral do 95º percentil (570/600) - 100 ms
RTT do front-end* https/frontend_tcp_rtt Uma distribuição do tempo de retorno (RTT) suavizado medido para cada conexão entre o cliente e o GFE (medida pela pilha TCP do GFE). O RTT suavizado é um algoritmo que lida com variações e anomalias que podem ocorrer em medições de RTT.
Latências de back-end* https/backend_latencies

Uma distribuição da latência medida a partir do momento em que o primeiro byte da solicitação foi enviado pelo GFE para o back-end até o GFE receber do back-end, o último byte da resposta.

Para conexões WebSocket, as latências de back-end se aplicam a toda a duração da sessão.

Parte da classe de código de resposta Fração do total de respostas externas do balanceador de carga de aplicativo que estão em cada classe de código de resposta (2XX, 4XX ...). No Cloud Monitoring, esse valor só está disponível em painéis padrão. Não é possível vê-lo nos painéis personalizados. É possível usar a API para definir alertas para ela.
Contagem de solicitações de back-end https/backend_request_count O número de solicitações enviadas do balanceador de carga de aplicativo externo para os back-ends.
Contagem de bytes da solicitação de back-end https/backend_request_bytes_count O número de bytes enviados como solicitações do balanceador de carga de aplicativo externo para os back-ends.
Contagem de bytes de resposta de back-end https/backend_response_bytes_count O número de bytes enviados como respostas dos back-ends, incluindo o cache, para o balanceador de carga de aplicativo externo.

* Não há garantias de que a soma das latências do RTT de front-end e do back-end será menor ou igual à soma das latências totais. Isso ocorre porque, mesmo que pesquisemos o RTT no soquete do GFE para o cliente no momento em que a resposta HTTP é confirmada, dependemos do relatório do kernel para algumas dessas medidas e não podemos garantir que o kernel terá uma medição de RTT para uma determinada resposta HTTP. O resultado final é um valor RTT suavizado que também é afetado por respostas HTTP anteriores, SYN/ACKs e handshakes SSL que não têm impacto sobre os verdadeiros tempos da solicitação HTTP real.

Para monitorar conexões do WebSocket, crie um serviço de back-end específico para WebSockets.

Como filtrar dimensões para métricas

É possível aplicar filtros a métricas para balanceadores de carga de aplicativo externos.

As métricas são agregadas para cada balanceador de carga de aplicativo clássico e balanceador de carga de aplicativo externo global. Você pode filtrar as métricas agregadas pelas seguintes dimensões para resource.type="http_load_balancer" ou resource.type="https_lb_rule". Observe que nem todas as dimensões estão disponíveis em todas as métricas.

Propriedade Descrição
backend_scope O escopo do Google Cloud (região ou zona) do grupo de instâncias de serviço de back-end que serviu à conexão.

Se nenhum grupo de instâncias estava disponível ou se a solicitação foi exibida por outra entidade, você verá um dos valores a seguir em vez de uma região ou zona do grupo de instâncias do serviço de back-end.

  • FRONTEND_5XX: ocorreu um erro interno antes que o GFE pudesse selecionar um back-end. O GFE retornou "5XX" ao cliente.
  • INVALID_BACKEND: o GFE não conseguiu encontrar um back-end íntegro ao qual atribuir a solicitação, então retornou uma resposta "5XX" ao solicitante.
  • NO_BACKEND_SELECTED: ocorreu um erro ou outra interrupção antes da seleção de um back-end ou da ocorrência de um redirecionamento de URL.
  • MULTIPLE_BACKENDS: a solicitação foi exibida por possivelmente vários back-ends. Isso pode acontecer quando o Cloud CDN disponibiliza a solicitação parcialmente a partir do cache e também enviou uma ou mais solicitações de intervalo de bytes para o back-end. Use o detalhamento backend_scope para visualizar cada solicitação de balanceador de carga para back-end.

Quando esse detalhamento é escolhido, os gráficos mostram métricas de back-end (balanceador de carga-para-back-ends), não métricas de front-end (balanceador do cliente para carga).
backend_type

O nome do grupo de back-ends que atendeu à solicitação do cliente. Pode ser INSTANCE GROUP, NETWORK_ENDPOINT_GROUP, ou UNKNOWN vai ser retornado se o back-end não tiver sido atribuído. Se nenhum grupo de back-end estava disponível ou se a solicitação foi atendida por outra entidade, um dos valores a seguir será exibido em vez de um grupo de back-ends.

  • FRONTEND_5XX: ocorreu um erro interno antes que o GFE pudesse selecionar um back-end. O GFE retornou "5XX" ao cliente.
  • INVALID_BACKEND: o GFE não conseguiu encontrar um back-end íntegro ao qual atribuir a solicitação, então retornou uma resposta "5XX" ao solicitante.
  • NO_BACKEND_SELECTED: ocorreu um erro ou outra interrupção antes da seleção do back-end ou da ocorrência de um redirecionamento de URL.
  • MULTIPLE_BACKENDS: a solicitação foi exibida por possivelmente vários back-ends. Isso pode acontecer quando o Cloud CDN disponibiliza a solicitação parcialmente a partir do cache e também enviou uma ou mais solicitações de intervalo de bytes para o back-end. Use o detalhamento backend_scope para visualizar cada solicitação de balanceador de carga para back-end.
backend_target_type O nome do serviço de back-end que atendeu a solicitação do cliente. Pode ser BACKEND_SERVICE, BACKEND_BUCKET, UNKNOWN se o back-end não foi atribuído ou NO_BACKEND_SELECTED se ocorreu um erro ou outra interrupção antes de uma tenha sido selecionado ou ocorreu um redirecionamento de URL.
matched_url_path_rule A regra do caminho do mapa de URL que corresponde ao prefixo da solicitação HTTP(S) (até 50 caracteres).
forwarding_rule_name O nome da regra de encaminhamento usada pelo cliente para enviar a solicitação.
url_map_name

A regra de caminho do mapa de URL ou a regra de rota configurada como parte da chave do mapa de URL. Pode ser UNMATCHED ou UNKNOWN como substituto.

  • UNMATCHED refere-se a uma solicitação que não corresponde a nenhuma regra de caminho de URL. Portanto, url_map_name usa a regra de caminho padrão.
  • UNKNOWN indica um erro interno.
target_proxy_name O nome do objeto do proxy HTTP(S) de destino referenciado pela regra de encaminhamento.
backend_target_name O nome do destino do back-end. O destino pode ser um serviço ou bucket de back-end. UNKNOWN será retornado se um back-end não tiver sido atribuído.
backend_name O nome do grupo de instâncias de back-end, do bucket ou do NEG. UNKNOWN será retornado se o back-end não tiver sido atribuído ou NO_BACKEND_SELECTED se ocorrer um erro ou outra interrupção antes da seleção de um back-end ou da ocorrência de um redirecionamento de URL.
backend_scope_type

O tipo do escopo do grupo de back-end. Pode ser GLOBAL, REGION, ZONE, MULTIPLE_BACKENDS ou NO_BACKEND_SELECTED se ocorreu um erro ou outra interrupção antes da seleção de um back-end ou um redirecionamento de URL ou outras saídas possíveis de backend_type.

A propriedade MULTIPLE_BACKENDS é usada quando o armazenamento em cache de partes é utilizado. Várias consultas são enviadas ao mesmo back-end para diferentes blocos de dados, para dar suporte a uma única solicitação do cliente.

proxy_continent O continente do GFE HTTP(S) que encerrou a conexão HTTP(S). (Exemplos: America, Europe, Asia)
protocol Protocolo usado pelo cliente, um dos seguintes: HTTP/1.0, HTTP/1.1, HTTP/2.0, QUIC/HTTP/2.0, UNKNOWN.
response_code O código de resposta HTTP da solicitação.
response_code_class A classe do código de resposta HTTP da solicitação: 200, 300, 400, 500 ou 0 para nenhum.
cache_result Resultado em cache para atender a solicitação HTTP pelo proxy: HIT, MISS, DISABLED, PARTIAL_HIT (para uma solicitação veiculada parcialmente do cache e de back-end) ou UNKNOWN.
client_country O país do cliente que emitiu a solicitação HTTP (por exemplo, United States ou Germany)
load_balancing_scheme O esquema de balanceamento de carga usado. Se o balanceador de carga de aplicativo clássico for usado, a o valor é EXTERNAL. Se o balanceador de carga de aplicativo externo global for usado, o valor será EXTERNAL_MANAGED.

A seguir