Registo e monitorização do balanceador de carga de aplicações externo regional

Este documento mostra como configurar e usar o Cloud Logging e o Cloud Monitoring com equilibradores de carga de aplicações externos regionais.

Registo

Pode ativar, desativar e ver registos de um serviço de back-end do balanceador de carga de aplicações externo.

Ativa ou desativa o registo para cada serviço de back-end. Pode configurar se pretende registar todos os pedidos ou uma fração aleatória de amostras.

Tem de garantir que não tem uma exclusão de registos que se aplique a equilibradores de carga de aplicações externos. Para obter informações sobre como verificar se os registos Cloud HTTP Load Balancer são permitidos, consulte a secção Filtros de exclusão.

Amostragem e recolha de registos

Os pedidos (e as respostas correspondentes) processados pelas instâncias de máquinas virtuais (VMs) do back-end do balanceador de carga são amostrados. Estes pedidos com amostragem são, em seguida, processados para gerar registos. Controla a fração dos pedidos que são emitidos como entradas de registo de acordo com o parâmetro logConfig.sampleRate. Quando logConfig.sampleRate é 1.0 (100%), significa que os registos são gerados para todos os pedidos e escritos no Cloud Logging.

Campos opcionais

Os registos de registo contêm campos obrigatórios e campos opcionais. A secção O que é registado indica que campos são opcionais e quais são obrigatórios. Todos os campos obrigatórios estão sempre incluídos. Pode personalizar os campos opcionais que quer manter.

  • Se selecionar incluir todos os campos opcionais, todos os campos opcionais no formato de registo são incluídos nos registos. Quando são adicionados novos campos opcionais ao formato de registo, os registos incluem automaticamente os novos campos.

  • Se selecionar excluir todos os opcionais, todos os campos opcionais são omitidos.

  • Se selecionar personalizado, pode especificar os campos opcionais que quer incluir, como tls.protocol,tls.cipher,orca_load_report.cpu_utilization,orca_load_report.mem_utilization.

Para obter informações sobre a personalização de campos opcionais, consulte o artigo Ative o registo num novo serviço de back-end.

Ativar o registo num novo serviço de back-end

Consola

  1. Na Google Cloud consola, aceda à página Equilíbrio de carga.

    Aceda a 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 de serviço de back-end obrigatórios.

  7. Na secção Registo, selecione a caixa de verificação Ativar registo.

  8. Defina uma fração da Taxa de amostragem. Pode definir um número de 0.0 a 1.0, em que 0.0 significa que não são registados pedidos e 1.0 significa que 100% dos pedidos são registados. O valor predefinido é 1.0.

  9. Opcional: para incluir todos os campos opcionais nos registos, na secção Campos opcionais, clique em Incluir todos os campos opcionais.

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

  11. Para terminar a edição do equilibrador de carga, clique em Atualizar.

gcloud: modo regional

Crie um serviço de back-end e ative o registo através do comando gcloud compute backend-services create.

gcloud compute backend-services create BACKEND_SERVICE \
    --region=REGION \
    --enable-logging \
    --logging-sample-rate=VALUE \
    --load-balancing-scheme=EXTERNAL_MANAGED \
    --logging-optional=LOGGING_OPTIONAL_MODE \
    --logging-optional-fields=OPTIONAL_FIELDS

onde

  • --region indica que o serviço de back-end é regional. Use este campo para serviços de back-end usados com balanceadores de carga de aplicações externos regionais.
  • O --enable-logging ativa o registo para esse serviço de back-end.
  • --logging-sample-rate permite-lhe especificar um valor de 0.0 a 1.0, em que 0.0 significa que não são registados pedidos e 1.0 significa que 100% dos pedidos são registados. Este campo só é significativo com o parâmetro --enable-logging. A ativação do registo, mas a definição da taxa de amostragem para 0.0, é equivalente à desativação do registo. O valor predefinido é 1.0.
  • --logging-optional permite-lhe especificar os campos opcionais que quer incluir nos registos:

    • INCLUDE_ALL_OPTIONAL para incluir todos os campos opcionais.

    • EXCLUDE_ALL_OPTIONAL (predefinição) para excluir todos os campos opcionais.

    • CUSTOM para incluir uma lista personalizada de campos opcionais que especifica em OPTIONAL_FIELDS.

  • --logging-optional-fields permite-lhe especificar uma lista separada por vírgulas de campos opcionais que quer incluir nos registos.

    Por exemplo, tls.protocol,tls.cipher só pode ser definido se LOGGING_OPTIONAL_MODE estiver definido como CUSTOM. Se usar métricas personalizadas e quiser registar elementos do relatório de carregamento ORCA, defina LOGGING_OPTIONAL_MODE como CUSTOM e especifique que elementos têm de ser registados no campo OPTIONAL_FIELDS. Por exemplo, orca_load_report.cpu_utilization,orca_load_report.mem_utilization.

Ativar o registo num serviço de back-end existente

Consola

  1. Na Google Cloud consola, aceda à página Equilíbrio de carga.

    Aceda a 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 junto ao seu serviço de back-end.

  6. Na secção Registo, selecione a caixa de verificação Ativar registo.

  7. No campo Taxa de amostragem, defina a probabilidade de amostragem. Pode definir um número de 0.0 a 1.0, em que 0.0 significa que não são registados pedidos e 1.0 significa que 100% dos pedidos são registados. O valor predefinido é 1.0.

  8. Opcional: para incluir todos os campos opcionais nos registos, na secção Campos opcionais, clique em Incluir todos os campos opcionais.

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

  10. Para terminar a edição do equilibrador de carga, clique em Atualizar.

gcloud: modo regional

Ative o registo num serviço de back-end existente com o comando gcloud compute backend-services update.

gcloud compute backend-services update BACKEND_SERVICE \
    --region=REGION \
    --enable-logging \
    --logging-sample-rate=VALUE \
    --logging-optional=LOGGING_OPTIONAL_MODE \
    --logging-optional-fields=OPTIONAL_FIELDS

onde

  • --region indica que o serviço de back-end é regional. Use este campo para serviços de back-end usados com balanceadores de carga de aplicações externos regionais.
  • O --enable-logging ativa o registo para esse serviço de back-end.
  • --logging-sample-rate permite-lhe especificar um valor de 0.0 a 1.0, em que 0.0 significa que não são registados pedidos e 1.0 significa que 100% dos pedidos são registados. Só é significativo com o parâmetro --enable-logging. A ativação do registo, mas a definição da taxa de amostragem para 0.0, é equivalente à desativação do registo. O valor predefinido é 1.0.
  • --logging-optional permite-lhe especificar os campos opcionais que quer incluir nos registos.

    • INCLUDE_ALL_OPTIONAL para incluir todos os campos opcionais.

    • EXCLUDE_ALL_OPTIONAL (predefinição) para excluir todos os campos opcionais.

    • CUSTOM para incluir uma lista personalizada de campos opcionais que especifica em OPTIONAL_FIELDS.

  • --logging-optional-fields permite-lhe especificar uma lista separada por vírgulas de campos opcionais que quer incluir nos registos.

    Por exemplo, tls.protocol,tls.cipher. Só pode ser definido se LOGGING_OPTIONAL_MODE estiver definido como CUSTOM.

Desativar ou modificar o registo num serviço de back-end existente

Consola

  1. Na Google Cloud consola, aceda à página Equilíbrio de carga.

    Aceda a 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 junto ao seu serviço de back-end.

  6. Para desativar o registo por completo, na secção Registo, desmarque a caixa de verificação Ativar registo.

  7. Se deixar o registo ativado, pode definir uma fração de taxa de amostragem diferente. Pode definir um número de 0.0 a 1.0, em que 0.0 significa que não são registados pedidos e 1.0 significa que 100% dos pedidos são registados. O valor predefinido é 1.0. Por exemplo, 0.2 significa que 20% dos pedidos de amostra geram registos.

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

  9. Para terminar a edição do equilibrador de carga, clique em Atualizar.

gcloud: modo regional

Desative o registo num serviço de back-end com o comando gcloud compute backend-services update.

Desativar o registo por completo

gcloud compute backend-services update BACKEND_SERVICE \
    --region=REGION \
    --no-enable-logging

onde

  • --region indica que o serviço de back-end é regional. Use este campo para serviços de back-end usados com balanceadores de carga de aplicações externos regionais.
  • O --no-enable-logging desativa o registo para esse serviço de back-end.

Ativar o registo de campos opcionais num serviço de back-end existente

gcloud compute backend-services update BACKEND_SERVICE \
    --global \
    --enable-logging \
    --logging-sample-rate=VALUE \
    --logging-optional=LOGGING_OPTIONAL_MODE \
    --logging-optional-fields=OPTIONAL_FIELDS

onde

  • --logging-sample-rate permite-lhe especificar um valor de 0.0 a 1.0, em que 0.0 significa que não são registados pedidos e 1.0 significa que 100% dos pedidos são registados. Só é significativo com o parâmetro --enable-logging. A ativação do registo, mas a definição da taxa de amostragem para 0.0, é equivalente à desativação do registo. O valor predefinido é 1.0.
  • --logging-optional permite-lhe especificar os campos opcionais que quer incluir nos registos:

    • INCLUDE_ALL_OPTIONAL para incluir todos os campos opcionais.

    • EXCLUDE_ALL_OPTIONAL (predefinição) para excluir todos os campos opcionais.

    • CUSTOM para incluir uma lista personalizada de campos opcionais que especifica em OPTIONAL_FIELDS.

  • --logging-optional-fields permite-lhe especificar uma lista separada por vírgulas de campos opcionais que quer incluir nos registos.

    Por exemplo, tls.protocol,tls.cipher só pode ser definido se LOGGING_OPTIONAL_MODE estiver definido como CUSTOM. Se usar métricas personalizadas e quiser registar elementos do relatório de carregamento ORCA, defina LOGGING_OPTIONAL_MODE como CUSTOM e especifique que elementos têm de ser registados no campo OPTIONAL_FIELDS. Por exemplo, orca_load_report.cpu_utilization,orca_load_report.mem_utilization.

Atualizar o modo opcional de registo de CUSTOM para outros

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

onde

  • --logging-optional permite-lhe especificar os campos opcionais que quer incluir nos registos:

    • INCLUDE_ALL_OPTIONAL para incluir todos os campos opcionais.

    • EXCLUDE_ALL_OPTIONAL (predefinição) para excluir todos os campos opcionais.

  • Tem de configurar explicitamente o seguinte: --logging-optional-fields, conforme mostrado, para limpar os campos CUSTOM existentes. A API não permite combinar um modo não CUSTOM com campos CUSTOM.

Modificar a taxa de amostragem de registo

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

Ver registos

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

Para ver os registos, aceda à página Explorador de registos:

Aceda ao Explorador de registos

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

  • Para ver os registos de uma regra de encaminhamento, selecione o nome de uma única regra de encaminhamento.

  • Para ver os registos de um mapa de URLs, selecione uma regra de encaminhamento e, de seguida, selecione um mapa de URLs.

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

A codificação UTF-8 é aplicada aos campos de registo. Os carateres que não são carateres UTF-8 são substituídos por pontos de interrogação. Para balanceadores de carga de aplicações externos regionais, pode exportar métricas baseadas em registos através de registos de recursos (resource.type="http_external_regional_lb_rule").

O que é registado

As entradas de registo do balanceador de carga de aplicações externo contêm informações úteis para monitorizar e depurar o seu tráfego HTTP(S). Os registos de registo contêm campos obrigatórios, que são os campos predefinidos de todos os registos de registo.

Os registos contêm campos opcionais que adicionam informações adicionais sobre o seu tráfego HTTP(S). Os campos opcionais podem ser omitidos para poupar custos de armazenamento.

Alguns campos de registo estão num formato de vários campos, com mais do que um elemento de dados num determinado campo. Por exemplo, o campo tls está no formato TlsInfo, que contém o protocolo TLS e a cifra TLS num único campo. Estes campos de vários campos estão descritos na tabela de formato de registo seguinte.

Campo Formato do campo Tipo de campo: obrigatório ou opcional Descrição
severity
insertID
timestamp
logName
LogEntry Obrigatória Os campos gerais, conforme descrito numa entrada de registo.
httpRequest HttpRequest Obrigatória Um protocolo comum para registar pedidos HTTP.
recurso MonitoredResource Obrigatória

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

O MonitoredResourceDescriptor descreve o esquema de um objeto MonitoredResource através da utilização de um nome de tipo e um conjunto de etiquetas. Para mais informações, consulte o artigo Etiquetas de recursos.

jsonPayload objeto (formato Struct) Obrigatória O payload da entrada do registo expresso como um objeto JSON. O objeto JSON contém os seguintes campos:
  • proxyStatus
  • tls
  • backendTargetProjectNumber
  • mtls
  • authzPolicyInfo
  • backendNetworkName
  • orca_load_report
de string Obrigatória

O campo proxyStatus contém uma string que especifica o motivo pelo qual o Application Load Balancer externo regional devolveu o HttpRequest.status.

O campo não é registado se o valor for uma string vazia. Isto pode acontecer se o proxy ou o back-end não devolverem um código de estado ou se o código de estado devolvido não for 0, 4XX ou 5XX.

O campo proxyStatus tem duas partes:

AuthzPolicyInfo Obrigatória O campo authzPolicyInfo armazena informações sobre o resultado da política de autorização. Estas informações só estão disponíveis para equilibradores de carga de aplicações externos regionais que tenham ativado as políticas de autorização. Para mais informações, consulte o que é registado para as políticas de autorização.
TlsInfo Opcional

O campo tls contém o campo TlsInfo que especifica os metadados TLS para a ligação entre o cliente e o balanceador de carga. Este campo só está disponível se o cliente estiver a usar a encriptação TLS/SSL.

Use o parâmetro --logging-optional-fields para especificar os elementos que têm de ser registados:

  • tls.protocol
  • tls.cipher

Não pode definir --logging-optional-fields como tls para especificar todos os elementos.

MtlsInfo Opcional

O campo mtls contém o valor MtlsInfo que especifica os metadados mTLS para a ligação entre o cliente e o equilibrador de carga. Este campo só está disponível se o balanceador de carga usar o TLS mútuo (mTLS) de front-end.

de string Opcional O campo backendNetworkName especifica a rede de VPC do back-end.
OrcaLoadReport Opcional

O campo orca_load_report contém alguns ou todos os elementos do relatório de carregamento ORCA devolvido pelo back-end. Este campo só está presente se o back-end devolver um relatório de carga da ORCA e tiver configurado o balanceador de carga para registar o relatório de carga da ORCA.

Use o parâmetro --logging-optional-fields para especificar qual dos seguintes elementos do relatório de carregamento do ORCA tem de ser registado:

  • orca_load_report.cpu_utilization
  • orca_load_report.mem_utilization
  • orca_load_report.request_cost
  • orca_load_report.utilization
  • orca_load_report.rps_fractional
  • orca_load_report.eps
  • orca_load_report.named_metrics
  • orca_load_report.application_utilization

Também pode definir --logging-optional-fields como orca_load_report para especificar que todos os elementos têm de ser registados.

Formato do campo TlsInfo

Campo Formato do campo Tipo de campo: obrigatório ou opcional Descrição
protocol de string Opcional Protocolo TLS que os clientes usam para estabelecer uma ligação com o equilibrador de carga. Os valores possíveis são TLSv1, TLSv1.1, TLSv1.2, TLSv1.3, ou QUIC. Este valor é definido como NULL se o cliente não estiver a usar a encriptação TLS/SSL.
cipher de string Opcional Cifra TLS que os clientes usam para estabelecer uma ligação com o balanceador de carga. Este valor é definido como NULL se o cliente não estiver a usar HTTP(S) ou se o cliente não estiver a usar a encriptação TLS/SSL.

Formato do campo MtlsInfo

Campo Formato do campo Tipo de campo: obrigatório ou opcional Descrição
clientCertPresent booleano Opcional

true se o cliente tiver fornecido um certificado durante o handshake TLS; caso contrário, false.

clientCertChainVerified booleano Opcional

true se a cadeia de certificados de cliente for validada em relação a um TrustStore configurado; caso contrário, false.

clientCertError de string Opcional

Strings predefinidas que representam as condições de erro. Para mais informações sobre as strings de erro, consulte o artigo Modo de validação do cliente.

clientCertSha256Fingerprint de string Opcional

Impressão digital SHA-256 codificada em Base64 do certificado do cliente.

clientCertSerialNumber de string Opcional

O número de série do certificado de cliente. Se o número de série tiver mais de 50 bytes, a string client_cert_serial_number_exceeded_size_limit é adicionada a client_cert_error e o número de série é definido como uma string vazia.

clientCertValidStartTime de string Opcional

Data/hora (formato de string de data RFC 3339) antes da qual o certificado de cliente não é válido. Por exemplo, 2022-07-01T18:05:09+00:00.

clientCertValidEndTime de string Opcional

Data/hora (formato de string de data RFC 3339) após a qual o certificado de cliente não é válido. Por exemplo, 2022-07-01T18:05:09+00:00.

clientCertSpiffeId de string Opcional

O ID SPIFFE do campo de nome alternativo de assunto (SAN). Se o valor não for válido ou exceder 2048 bytes, o ID SPIFFE é definido como uma string vazia.

Se o SPIFFE ID tiver mais de 2048 bytes, a string client_cert_spiffe_id_exceeded_size_limit é adicionada a client_cert_error.

clientCertUriSans de string Opcional

Lista separada por vírgulas e codificada em Base64 das extensões SAN do tipo URI. As extensões SAN são extraídas do certificado de cliente. O SPIFFE ID não está incluído no campo client_cert_uri_sans.

Se o campo client_cert_uri_sans tiver mais de 512 bytes, a string client_cert_uri_sans_exceeded_size_limit é adicionada a client_cert_error e a lista separada por vírgulas é definida como uma string vazia.

clientCertDnsnameSans de string Opcional

Lista codificada em Base64 separada por vírgulas das extensões SAN do tipo DNSName. As extensões SAN são extraídas do certificado de cliente.

Se o campo client_cert_dnsname_sans tiver mais de 512 bytes, a string client_cert_dnsname_sans_exceeded_size_limit é adicionada a client_cert_error e a lista separada por vírgulas é definida como uma string vazia.

clientCertIssuerDn de string Opcional

Campo Emissor completo codificado em Base64 do certificado.

Se o campo client_cert_issuer_dn tiver mais de 512 bytes, a string client_cert_issuer_dn_exceeded_size_limit é adicionada a client_cert_error e client_cert_issuer_dn é definido como uma string vazia.

clientCertSubjectDn de string Opcional

Campo Subject completo codificado em Base64 do certificado.

Se o campo client_cert_subject_dn tiver mais de 512 bytes, a string client_cert_subject_dn_exceeded_size_limit é adicionada a client_cert_error e client_cert_subject_dn é definido como uma string vazia.

clientCertLeaf de string Opcional

O certificado de folha do cliente para uma ligação mTLS estabelecida em que o certificado passou na validação. A codificação do certificado está em conformidade com a RFC 9440: o certificado DER binário é codificado com Base64 (sem quebras de linha, espaços ou outros carateres fora do alfabeto Base64) e delimitado com dois pontos de cada lado.

Se client_cert_leaf exceder 16 KB sem codificação, a string client_cert_validated_leaf_exceeded_size_limit é adicionada a client_cert_error e client_cert_leaf é definida como uma string vazia.

clientCertChain de string Opcional

A lista de certificados delimitada por vírgulas, na ordem TLS padrão, da cadeia de certificados de cliente para uma ligação mTLS estabelecida em que o certificado de cliente passou na validação, não incluindo o certificado principal. A codificação de certificados está em conformidade com a norma RFC 9440.

Se o tamanho combinado de client_cert_leaf e client_cert_chain antes da codificação Base64 exceder 16 KB, a string client_cert_validated_chain_exceeded_size_limit é adicionada a client_cert_error e client_cert_chain é definida como uma string vazia.

Etiquetas de recursos

A tabela seguinte lista as etiquetas de recursos para resource.type="http_external_regional_lb_rule".

Campo Tipo Descrição
backend_name de string O nome do grupo de instâncias ou do NEG de back-end. No entanto, a etiqueta está vazia para uma ligação TLS com falha.
backend_scope de string O âmbito do back-end (um nome de zona ou um nome de região). Pode ser UNKNOWN sempre que backend_name for desconhecido.
backend_scope_type de string O âmbito do back-end (REGION/ZONE). Pode ser UNKNOWN sempre que backend_name for desconhecido.
backend_target_name de string O nome do back-end selecionado para processar o pedido, com base na regra de caminho do mapa de URLs ou na regra de trajeto que corresponde ao pedido.
backend_target_type de string O tipo de destino de back-end. Pode ser BACKEND_SERVICE ou UNKNOWN é devolvido se o back-end não tiver sido atribuído.
backend_type de string O tipo de grupo de back-end. Pode ser INSTANCE_GROUP, NETWORK_ENDPOINT_GROUP ou UNKNOWN é devolvido se o back-end não tiver sido atribuído.
forwarding_rule_name de string O nome do objeto da regra de encaminhamento.
matched_url_path_rule de string A regra de caminho do mapa de URLs ou a regra de trajeto configurada como parte da chave do mapa de URLs. Pode ser UNMATCHED ou UNKNOWN como alternativas.
  • UNMATCHED refere-se a um pedido que não corresponde a nenhuma regra de caminho do URL, pelo que usa a regra de caminho predefinida.
  • UNKNOWN indica um erro interno ou uma ligação TLS com falha.
network_name de string O nome da rede VPC do balanceador de carga.
project_id de string O identificador do Google Cloud projeto associado a este recurso.
region de string A região na qual o balanceador de carga está definido.
target_proxy_name de string O nome do objeto proxy de destino referenciado pela regra de encaminhamento.
url_map_name de string O nome do objeto do mapa de URLs configurado para selecionar um serviço de back-end. Para uma ligação TLS com falha, url_map_name está vazio.

Campo de erro proxyStatus

O campo proxyStatus contém uma string que especifica o motivo pelo qual o balanceador de carga devolveu um erro. Existem duas partes no campo proxyStatus : proxyStatus error e proxyStatus details. Esta secção descreve as strings suportadas no campo proxyStatus error.

O campo proxyStatus error aplica-se aos seguintes balanceadores de carga:

  • Balanceador de carga de aplicações externo regional
  • Balanceador de carga de aplicações interno entre regiões
  • Balanceador de carga de aplicações interno regional
Erro proxyStatus Descrição Códigos de resposta acompanhantes comuns
destination_unavailable O balanceador de carga considera o back-end indisponível. Por exemplo, as tentativas recentes de comunicação com o back-end falharam ou uma verificação do estado de funcionamento pode ter resultado numa falha. 500, 503
connection_timeout A tentativa do balanceador de carga de abrir uma ligação ao back-end excedeu o tempo limite. 504
connection_terminated

A ligação do balanceador de carga ao back-end terminou antes de ser recebida uma resposta completa.

Este proxyStatus error é devolvido em qualquer um dos seguintes cenários:

  • A ligação do balanceador de carga ao back-end terminou antes de ser recebida uma resposta completa.
  • A ligação TLS falhou no handshake SSL e o cliente não estabeleceu uma ligação com o equilibrador de carga.

0, 502, 503
connection_refused A ligação do balanceador de carga ao back-end é recusada. 502, 503
connection_limit_reached

O balanceador de carga está configurado para limitar o número de ligações que tem ao back-end, e esse limite foi excedido.

Este proxyStatus error é devolvido durante qualquer um dos seguintes cenários:

  • Se qualquer back-end estiver no modo de manutenção, não é possível encaminhar o tráfego para o back-end.
  • Se o pedido tiver um limite de taxa local.
  • O Envoy está a processar condições de erro, como a falta de memória.
502, 503
destination_not_found O equilibrador de carga não consegue determinar o back-end adequado a usar para este pedido. Por exemplo, o back-end pode não estar configurado. 500, 404
dns_error O equilibrador de carga encontrou um erro de DNS ao tentar encontrar um endereço IP para o nome do anfitrião do back-end. 502, 503
proxy_configuration_error O balanceador de carga encontrou um erro de configuração interno. 500
proxy_internal_error O balanceador de carga encontrou um erro interno. O erro pode dever-se a um reinício agendado do proxy que gere as ligações. 0, 500, 502
proxy_internal_response O balanceador de carga gerou a resposta sem tentar estabelecer ligação ao back-end. Qualquer código de estado, consoante o tipo de problema. Por exemplo, o código de estado 410 significa que o back-end está indisponível devido a pagamentos em atraso.
http_response_timeout O balanceador de carga atingiu um limite de tempo limite do serviço de back-end configurado enquanto aguardava a resposta completa do back-end. 504, 408
http_request_error O balanceador de carga encontrou um erro HTTP 4xx, o que indica problemas com o pedido do cliente. 400, 403, 405, 406, 408, 411, 413, 414, 415, 416, 417 ou 429
http_protocol_error O equilibrador de carga encontrou um erro de protocolo HTTP ao comunicar com o back-end. 502
tls_protocol_error O balanceador de carga encontrou um erro de TLS durante o handshake de TLS. 0
tls_certificate_error O balanceador de carga encontrou um erro no momento da validação do certificado apresentado pelo servidor ou pelo cliente quando o mTLS está ativado. 0
tls_alert_received O balanceador de carga encontrou um alerta TLS fatal durante o handshake TLS. 0

Campo de detalhes proxyStatus

O campo proxyStatus contém uma string que especifica o motivo pelo qual o balanceador de carga devolveu um erro. Existem duas partes no campo proxyStatus : proxyStatus error e proxyStatus details. O campo proxyStatus details é opcional e é apresentado apenas quando estão disponíveis informações adicionais. Esta secção descreve as strings suportadas no campo proxyStatus details.

O campo proxyStatus details aplica-se aos seguintes balanceadores de carga:

  • Balanceador de carga de aplicações externo regional
  • Balanceador de carga de aplicações interno regional
  • Balanceador de carga de aplicações interno entre regiões
proxyStatus details Descrição Códigos de estado de resposta comuns
client_disconnected_before_any_response A ligação ao cliente foi interrompida antes de o balanceador de carga enviar qualquer resposta. 0
backend_connection_closed O back-end fechou inesperadamente a respetiva ligação ao balanceador de carga. Isto pode acontecer se o balanceador de carga estiver a enviar tráfego para outra entidade, como uma aplicação de terceiros com um limite de tempo de TCP inferior ao limite de tempo de 10 minutos (600 segundos) do balanceador de carga. 502
failed_to_connect_to_backend O equilibrador de carga não conseguiu estabelecer ligação ao back-end. Esta falha inclui tempos limite durante a fase de ligação. 503
failed_to_pick_backend O equilibrador de carga não conseguiu selecionar um back-end em bom estado para processar o pedido. 502
response_sent_by_backend O pedido HTTP foi encaminhado com êxito para o back-end e a resposta foi devolvida pelo back-end. O código de estado HTTP é definido pelo software em execução no back-end.
client_timed_out

A ligação entre o balanceador de carga e o cliente excedeu o tempo limite de inatividade.

Para mais informações sobre o balanceador de carga de aplicações externo regional, consulte o artigo Limite de tempo limite de keep-alive HTTP do cliente. Para mais informações sobre o balanceador de carga de aplicações interno, consulte o artigo Limite de tempo limite de keep-alive HTTP do cliente.
0, 408
backend_timeout

O back-end excedeu o tempo limite durante a geração de uma resposta.

502
http_protocol_error_from_backend_response A resposta do back-end contém um erro do protocolo HTTP. 501, 502
http_protocol_error_from_request O pedido do cliente contém um erro do protocolo HTTP. 400, 503
http_version_not_supported A versão do protocolo HTTP não é suportada. Apenas são suportados os protocolos HTTP 1.1 e 2.0. 400
handled_by_identity_aware_proxy Esta resposta foi gerada pelo Identity-Aware Proxy (IAP) durante a validação da identidade do cliente antes de permitir o acesso. 200, 302, 400, 401, 403, 500, 502
invalid_request_headers

Os cabeçalhos de pedidos HTTP recebidos de um cliente contêm, pelo menos, um caráter que não é permitido ao abrigo de uma especificação HTTP aplicável.

Por exemplo, os nomes dos campos de cabeçalho que incluem aspas duplas (") ou quaisquer carateres fora do intervalo ASCII padrão (ou seja, qualquer byte >= 0x80) são inválidos.

Para mais informações, consulte:

400, 404
ip_detection_failed Não foi possível detetar o endereço IP original. Qualquer código de estado possível, consoante a natureza da falha. O valor tem de estar entre 400 e 599.
request_body_too_large O corpo do pedido HTTP excedeu o comprimento máximo suportado pelo balanceador de carga. 413, 507
request_header_timeout O cabeçalho do pedido excedeu o tempo limite porque o balanceador de carga não recebeu o pedido completo no prazo de 5 segundos. 408, 504
denied_by_security_policy O balanceador de carga recusou este pedido devido a uma política de segurança do Google Cloud Armor. 403
throttled_by_security_policy O pedido foi bloqueado por uma regra de limitação do Cloud Armor. 429
client_cert_chain_invalid_eku O certificado de cliente ou o respetivo emissor não tem utilização de chave alargada que inclua clientAuth. Para mais informações, consulte o artigo Erros registados para ligações fechadas. 0
client_cert_chain_max_name_constraints_exceeded Um certificado intermédio fornecido para validação tinha mais de 10 restrições de nomes. Para mais informações, consulte o artigo Erros registados para ligações fechadas. 0
client_cert_invalid_rsa_key_size Um certificado de folha ou intermédio de cliente tinha um tamanho da chave RSA inválido. Para mais informações, consulte o artigo Erros registados para ligações fechadas. 0
client_cert_not_provided O cliente não forneceu o certificado pedido durante a negociação. Para mais informações, consulte o artigo Erros registados para ligações fechadas. 0
client_cert_pki_too_large A infraestrutura de chaves públicas a usar para validação tem mais de três certificados intermédios que partilham o mesmo Subject e Subject Public Key Info. Para mais informações, consulte o artigo Erros registados para ligações fechadas. 0
client_cert_unsupported_elliptic_curve_key Um certificado intermédio ou de cliente está a usar uma curva elíptica não suportada. Para mais informações, consulte o artigo Erros registados para ligações fechadas. 0
client_cert_unsupported_key_algorithm Um certificado de cliente ou intermédio está a usar um algoritmo não RSA ou não ECDSA. Para mais informações, consulte o artigo Erros registados para ligações fechadas. 0
client_cert_validation_failed O certificado de cliente não passa na validação com o TrustConfig. Para mais informações, consulte o artigo Erros registados para ligações fechadas. 0
client_cert_validation_not_performed Configurou o TLS mútuo sem configurar um TrustConfig. Para mais informações, consulte o artigo Erros registados para ligaçõ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 o artigo Erros registados para ligações fechadas. 0
client_cert_validation_timed_out O limite de tempo foi excedido (200 ms) durante a validação da cadeia de certificados. Para mais informações, consulte o artigo Erros registados para ligações fechadas. 0
tls_version_not_supported A versão do protocolo TLS é reconhecida, mas não é suportada. O erro resulta numa ligação TLS fechada. 0
unknown_psk_identity Os servidores enviam este erro quando é necessário o estabelecimento de chaves PSK, mas o cliente não fornece uma identidade PSK aceitável. O erro resulta numa ligação TLS fechada. 0
no_application_protocol Enviado pelos servidores quando uma extensão "application_layer_protocol_negotiation" anuncia apenas protocolos que o servidor não suporta. Consulte a extensão de negociação do protocolo da camada de aplicação TLS. O erro resulta numa ligação TLS fechada. 0
no_certificate Não foi encontrado nenhum certificado. O erro resulta numa ligação TLS fechada. 0
bad_certificate Um certificado é inválido ou contém assinaturas que não foi possível validar. O erro resulta numa ligação TLS fechada. 0
unsupported_certificate Um certificado é de um tipo não suportado. O erro resulta numa ligação TLS fechada. 0
certificate_revoked Um certificado foi revogado pelo respetivo signatário. O erro resulta numa ligação TLS fechada. 0
certificate_expired Um certificado expirou ou não é válido. O erro resulta numa ligação TLS fechada. 0
certificate_unknown Surgiram alguns problemas não especificados durante o processamento do certificado, o que o torna inaceitável. O erro resulta numa ligação TLS fechada. 0
unknown_ca Foi recebida uma cadeia de certificados válida ou parcial, mas não é possível aceitar o certificado porque não é possível localizar o certificado da CA ou este não corresponde a uma âncora de confiança conhecida. O erro resulta numa ligação TLS fechada. 0
unexpected_message Uma mensagem imprópria, como uma mensagem de handshake incorreta ou dados de aplicação prematuros foram recebidos. O erro resulta numa ligação TLS fechada. 0
bad_record_mac É recebido um registo que não pode ser desprotegido. O erro resulta numa ligação TLS fechada. 0
record_overflow Foi recebido um registo TLSCiphertext com um comprimento superior a 214+256 bytes ou um registo foi descifrado para um registo TLSPlaintext com mais de 214 bytes (ou algum outro limite negociado). O erro resulta numa ligação TLS fechada. 0
handshake_failure Não é possível negociar um conjunto aceitável de parâmetros de segurança com base nas opções disponíveis. O erro resulta numa ligação TLS fechada. 0
illegal_parameter Um campo na sincronização estava incorreto ou era inconsistente com outros campos. O erro resulta numa ligação TLS fechada. 0
access_denied Foi recebido um certificado ou uma PSK válida, mas quando o controlo de acesso foi aplicado, o cliente não prosseguiu com a negociação. O erro resulta numa ligação TLS fechada. 0
decode_error Não foi possível descodificar uma mensagem porque alguns campos estão fora do intervalo especificado ou o comprimento da mensagem está incorreto. O erro resulta numa ligação TLS fechada. 0
decrypt_error Falha de uma operação criptográfica de handshake (não ao nível do registo), incluindo: Não conseguir validar corretamente uma assinatura ou uma mensagem concluída ou um binder PSK. O erro resulta numa ligação TLS fechada. 0
insufficient_security Uma negociação falhou especificamente porque o servidor requer parâmetros mais seguros do que os suportados pelo cliente. O erro resulta numa ligação TLS fechada. 0
inappropriate_fallback Enviado por um servidor em resposta a uma tentativa de repetição de ligação inválida de um cliente. O erro resulta numa ligação TLS fechada. 0
user_cancelled O utilizador cancelou a sincronização por algum motivo não relacionado com uma falha de protocolo. O erro resulta numa ligação TLS fechada. 0
missing_extension Enviadas por pontos finais que recebem uma mensagem de handshake que não contém uma extensão obrigatória para envio para a versão TLS oferecida ou outros parâmetros negociados. O erro resulta numa ligação TLS fechada. 0
unsupported_extension Enviado por pontos finais que recebem qualquer mensagem de sincronização contendo uma extensão conhecida por ser proibida para inclusão na determinada mensagem de sincronização ou incluindo quaisquer extensões em ServerHello ou Certificate que não foi oferecida primeiro no correspondente ClientHello ou CertificateRequest. O erro resulta numa ligação TLS fechada. 0
unrecognized_name Enviado pelos servidores quando não existe nenhum servidor que possa ser identificado pelo nome fornecido pelo cliente através da extensão "server_name". Consulte as definições de extensão TLS. 0
bad_certificate_status_response Enviado pelos clientes quando é fornecida uma resposta OCSP inválida ou inaceitável pelo servidor através da extensão "status_request". Consulte as definições de extensão TLS. O erro resulta numa ligação TLS fechada. 0
load_balancer_configured_resource_limits_reached O balanceador de carga atingiu os limites de recursos configurados, como o número máximo de ligações. 0

Entradas do registo de ligações TLS falhadas

Quando a ligação TLS entre o cliente e o equilibrador de carga falha antes de ser selecionado qualquer back-end, as entradas de registo registam os erros. Pode configurar os serviços de back-end com diferentes taxas de amostragem de registos. Quando uma ligação TLS falha, a taxa de amostragem do registo de ligações TLS com falhas é a taxa de amostragem mais elevada para qualquer serviço de back-end. Por exemplo, se tiver configurado dois serviços de back-end com a taxa de amostragem de registo como 0.3 e 0.5, a taxa de amostragem de registo de ligação TLS com falha é 0.5.

Pode identificar ligações TLS com falhas verificando os seguintes detalhes de entrada no registo:

  • O tipo de erro proxyStatus é tls_alert_received, tls_certificate_error, tls_protocol_error, ou connection_terminated.
  • Não existem informações de back-end.

O exemplo seguinte mostra uma entrada de registo TLS com falha com o campo proxyStatus error:

   json_payload:    {
   @type: "type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry"
   proxyStatus: "error="tls_alert_received"; details="server_to_client: handshake_failure""
   log_name: "projects/529254013417/logs/mockservice.googleapis.com%20name"
   }
   http_request {
    latency {
      nanos: 12412000
    }
    protocol: "HTTP/1.0"
    remote_ip: "127.0.0.2"
   }
  resource {
    type: "mock_internal_http_lb_rule"
    labels {
      backend_name: ""
      backend_scope: ""
      backend_scope_type: "UNKNOWN"
      backend_target_name: ""
      backend_target_type: "UNKNOWN"
      backend_type: "UNKNOWN"
      forwarding_rule_name: "l7-ilb-https-forwarding-rule-dev"
      matched_url_path_rule: "UNKNOWN"
      network_name: "lb-network"
      region: "REGION"
      target_proxy_name: "l7-ilb-https-proxy-dev"
      url_map_name: ""
    }
  }
  timestamp: "2023-08-15T16:49:30.850785Z"
  

Registos de pedidos da política de autorização

O objeto authz_info no payload JSON da entrada do registo do equilibrador de carga contém informações sobre as políticas de autorização. Pode configurar métricas baseadas em registos para o tráfego permitido ou recusado por estas políticas. Consulte mais detalhes do registo das políticas de autorização.

Campo Tipo Descrição
authz_info.policies[] objeto A lista de políticas que correspondem ao pedido.
authz_info.policies[].name de string O nome da política de autorização que corresponde ao pedido.

O nome está vazio pelos seguintes motivos:

  • Nenhuma política ALLOW corresponde ao pedido e o pedido é recusado.
  • Nenhuma política DENY corresponde ao pedido e o pedido é permitido.
authz_info.policies[].result enum O resultado pode ser ALLOWED ou DENIED.
authz_info.policies[].details de 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.

Interagir com os registos

Pode interagir com os registos do Application Load Balancer externo através da API Cloud Logging. A API Logging oferece formas de filtrar interativamente registos que têm campos específicos definidos. Exporta os registos correspondentes para o Cloud Logging, o Cloud Storage, o BigQuery ou o Pub/Sub. Para mais informações acerca da API Logging, consulte a vista geral da API Logging.

Monitorização

O balanceador de carga exporta dados de monitorização para o Monitoring.

Pode usar as métricas de monitorização para:

  • Avalie a configuração, a utilização e o desempenho de um balanceador de carga
  • Resolva problemas
  • Melhore a utilização de recursos e a experiência do utilizador

Além dos painéis de controlo predefinidos no Monitoring, pode criar painéis de controlo personalizados, configurar alertas e consultar as métricas através da API Cloud Monitoring.

Definir políticas de alerta

Pode criar políticas de alerta para monitorizar os valores das métricas e receber uma notificação quando essas métricas violarem uma condição.

  1. Na Google Cloud consola, aceda à página  Alertas:

    Aceder a Alertas

    Se usar a barra de pesquisa para encontrar esta página, selecione o resultado cujo subtítulo é Monitorização.

  2. Se não tiver criado os canais de notificação e quiser receber notificações, clique em Editar canais de notificação e adicione os seus canais de notificação. Regresse à página Alertas depois de adicionar os seus canais.
  3. Na página Alertas, selecione Criar política.
  4. Para selecionar a métrica, expanda o menu Selecione uma métrica e, em seguida, faça o seguinte:
    1. Para limitar o menu a entradas relevantes, introduza Regional External Application Load Balancer Rule na barra de filtros. Se não houver resultados depois de filtrar o menu, desative o botão Mostrar apenas recursos e métricas ativos.
    2. Para o Tipo de recurso, selecione Regra do balanceador de carga de aplicações externo regional.
    3. Selecione uma Categoria de métrica e uma Métrica e, de seguida, selecione Aplicar.
  5. Clicar em Seguinte.
  6. As definições na página Configurar acionador de alerta determinam quando o alerta é acionado. Selecione um tipo de condição e, se necessário, especifique um limite. Para mais informações, consulte Crie políticas de alertas de limite métrico.
  7. Clicar em Seguinte.
  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, de seguida, clique em OK.
  9. Opcional: atualize a Duração do encerramento automático do incidente. Este campo determina quando o Monitoring fecha incidentes na ausência de dados de métricas.
  10. Opcional: clique em Documentação e, de seguida, adicione as informações que quer incluir numa mensagem de notificação.
  11. Clique em Nome do alerta e introduza um nome para a política de alertas.
  12. Clique em Criar política.
Para mais informações, consulte o artigo Vista geral dos alertas.

Definir painéis de controlo personalizados do Cloud Monitoring

Pode criar painéis de controlo personalizados do Cloud Monitoring para as métricas do balanceador de carga:

  1. Na Google Cloud consola, aceda à página Monitorização.

    Aceder a Monitorização

  2. Selecione Painéis de controlo > Criar painel de controlo.

  3. Clique em Adicionar gráfico e, de seguida, atribua um título ao gráfico.

  4. Para identificar a série cronológica a apresentar, escolha um tipo de recurso e um tipo de métrica:

    1. Na secção Recurso e métrica, clique no gráfico e, de seguida, na secção Selecionar uma métrica, selecione uma das opções disponíveis:
    2. Para um Application Load Balancer externo regional, selecione o tipo de recurso Regra do Application Load Balancer externo regional.
    3. Clique em Aplicar.
  5. Para especificar filtros de monitorização, clique em Filtros > Adicionar filtro.

  6. Clique em Guardar.

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

As métricas dos equilibradores de carga de aplicações externos são exportadas para o Cloud Monitoring em lotes de granularidade de 1 minuto. Os dados de monitorização são retidos durante seis (6) semanas.

O painel de controlo apresenta a análise de dados em intervalos predefinidos de 1H (uma hora), 6H (seis horas), 1D (um dia), 1W (uma semana) e 6W (seis semanas). Pode pedir manualmente a análise em qualquer intervalo de 6 semanas a 1 minuto.

Métricas de monitorização

Pode monitorizar as seguintes métricas para equilibradores de carga de aplicações externos.

As seguintes métricas para balanceadores de carga de aplicações externos regionais são comunicadas no Cloud Monitoring. Estas métricas têm o prefixo loadbalancing.googleapis.com/.

Métrica Nome Descrição
Contagem de pedidos https/external/regional/request_count O número de pedidos publicados pelo Application Load Balancer externo regional.
Contagem de bytes de pedidos https/external/regional/request_bytes O número de bytes enviados como pedidos de clientes para o Application Load Balancer externo regional.
Contagem de bytes de resposta https/external/regional/response_bytes O número de bytes enviados como respostas do Application Load Balancer externo regional para o cliente.
Latências totais https/external/regional/total_latencies

Uma distribuição da latência total. A latência total é o tempo em milissegundos entre o primeiro byte do pedido recebido pelo proxy e o último byte da resposta enviada pelo proxy. Inclui: o tempo que o proxy demora a processar o pedido, o tempo que o pedido demora a ser enviado do proxy para o back-end, o tempo que o back-end demora a processar o pedido, o tempo que a resposta demora a ser enviada de volta para o proxy e o tempo que o proxy demora a processar a resposta e a enviá-la para o cliente.

Não inclui o tempo de resposta entre o cliente e o proxy. Além disso, as pausas entre pedidos na mesma ligação que usam Connection: keep-alive não afetam a medição. Normalmente, esta medição é reduzida ao percentil 95 nas vistas do Cloud Monitoring.

Latências de back-end https/external/regional/backend_latencies

Uma distribuição da latência do back-end. A latência do back-end é o tempo, em milissegundos, entre o último byte do pedido enviado para o back-end e o último byte da resposta recebida pelo proxy. Inclui o tempo que o back-end demora a processar o pedido e o tempo que a resposta demora a ser enviada de volta para o proxy.

Filtrar dimensões para métricas

Pode aplicar filtros para métricas de equilibradores de carga de aplicações externos.

As métricas são agregadas para cada Application Load Balancer externo regional. Pode filtrar as métricas agregadas através das seguintes dimensões para resource.type="http_external_regional_lb_rule".

Propriedade Descrição
backend_name O nome do grupo de instâncias ou do NEG de back-end.
backend_scope O âmbito do back-end (um nome de zona ou um nome de região). Pode ser UNKNOWN sempre que backend_name for desconhecido.
backend_scope_type O âmbito do back-end (REGION/ZONE). Pode ser UNKNOWN sempre que backend_name for desconhecido.
backend_target_name O nome do back-end selecionado para processar o pedido, com base na regra de caminho do mapa de URLs ou na regra de trajeto que corresponde ao pedido.
backend_target_type O tipo de destino de back-end. Pode ser BACKEND_SERVICE ou UNKNOWN é devolvido se o back-end não tiver sido atribuído.
backend_type O tipo de grupo de back-end. Pode ser INSTANCE_GROUP, NETWORK_ENDPOINT_GROUP ou UNKNOWN é devolvido se o back-end não tiver sido atribuído.
forwarding_rule_name O nome do objeto da regra de encaminhamento.
matched_url_path_rule A regra de caminho do mapa de URLs ou a regra de trajeto configurada como parte da chave do mapa de URLs. Pode ser UNMATCHED ou UNKNOWN como alternativas.
  • UNMATCHED refere-se a um pedido que não corresponde a nenhuma regra do caminho do URL, pelo que usa a regra do caminho predefinida.
  • UNKNOWN indica um erro interno.
network_name O nome da rede VPC do balanceador de carga.
project_id O identificador do Google Cloud projeto associado a este recurso.
region A região na qual o balanceador de carga está definido.
target_proxy_name O nome do objeto proxy de destino referenciado pela regra de encaminhamento.
url_map_name O nome do objeto do mapa de URLs configurado para selecionar um serviço de back-end.

O que se segue?