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 o 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 respostas correspondentes) processadas pelas instâncias de máquina virtual (VM) do back-end do balanceador de carga são analisadas. Essas solicitações são processadas para gerar registros. Você controla a fração das solicitações que são emitidas como entradas de registro de acordo com o parâmetro logConfig.sampleRate. Quando logConfig.sampleRate é 1.0 (100%), significa que os registros sã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 totalmente a geração de registros, na seção Registro, desmarque a caixa de seleção Ativar 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. É 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. Por exemplo, 0.2 significa que 20% das solicitações de amostragem 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.

Ver 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
  • loadBalancingScheme
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 estão disponíveis apenas para balanceadores de carga de aplicativo externos globais que usam respostas de erro personalizadas.
número inteiro 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 o statusDetails da resposta final disponibilizada para o cliente. Essas informações estão disponíveis apenas para balanceadores de carga de aplicativo externos globais que usam respostas de erro personalizadas.
string Opcional O campo loadBalancingScheme só é preenchido para clientes que usam o recurso de migração do balanceador de carga de aplicativo clássico. Esse campo contém uma string que descreve qual esquema de balanceamento de carga foi usado para encaminhar a solicitação. Os valores possíveis são EXTERNAL ou EXTERNAL_MANAGED.

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 é 101 se a conexão HTTP(S) foi atualizada para 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, 503

O código de resposta HTTP é 101 se a conexão HTTP(S) foi atualizada para 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, 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, 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:

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

502, 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.

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

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

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

O código de resposta HTTP é 101 se a conexão HTTP(S) foi atualizada para 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 A validação do certificado do cliente falha com TrustConfig quando algoritmos de hash como MD4, MD5 e SHA-1 são usados. 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 há duas camadas de proxies, às vezes o GFE da primeira camada pode não alcançar o GFE da 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, 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 caractere que não é permitido de acordo com uma especificação HTTP aplicável.

Por exemplo, os nomes de campos de cabeçalho que incluem aspas duplas (") 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 do cliente são inválidos. Confira mais informações em: invalid_request_headers. 400
invalid_http2_client_request_path

O caminho de solicitação HTTP/2 de um cliente contém pelo menos um caractere que não é permitido de acordo com a especificação do URI.

Para mais informações, consulte a "3.3. seção "Path" do RFC 3986.

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, o Cloud Run e o Cloud Run functions. 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, 503

429 (limitada pelo IAP)

serverless_neg_routing_failed A solicitação NEG sem servidor não pode ser enviada. Isso pode acontecer quando a região especificada no NEG não puder ser acessada ou quando o nome do recurso (por exemplo, o nome do Cloud Run functions) não puder ser 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 de 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á vazio pelos seguintes motivos:
  • Nenhuma política ALLOW corresponde à solicitação, que é negada.
  • Nenhuma política DENY corresponde à solicitação, que é permitida.
authz_info.policies[].result enum O resultado pode ser ALLOWED ou DENIED.
authz_info.policies[].details string Estes são os detalhes:
  • 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.

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.

Monitoring

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

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

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 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". 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 do cache para exibir a solicitação HTTP pelo proxy: HIT, MISS, DISABLED, PARTIAL_HIT (para uma solicitação exibida em parte pelo cache e parte pelo back-end) ou UNKNOWN.
client_country 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, o valor será EXTERNAL. Se o balanceador de carga de aplicativo externo global for usado, o valor será EXTERNAL_MANAGED.

A seguir