Geração de registros e monitoramento de balanceador de carga de aplicativo externo e regional

Neste documento, mostramos como configurar e usar o Cloud Logging e o Cloud Monitoring com balanceadores de carga de aplicativo externos regionais.

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.

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

Campos opcionais

Os registros contêm campos obrigatórios e opcionais. A seção O que é registrado lista quais campos são opcionais e quais são obrigatórios. Todos os campos obrigatórios estão sempre incluídos. É possível personalizar quais campos de metadados manter.

  • Se você selecionar Incluir todos os opcionais, todos os campos opcionais no formato de registro serão incluídos nos registros. Quando novos campos opcionais são adicionados ao formato de registro, os registros incluem automaticamente os novos campos.

  • Se você selecionar excluir todos os opcionais, todos os campos opcionais serão omitidos.

  • Se você selecionar personalizado, poderá especificar os campos opcionais que quer incluir, como tls.protocol,tls.cipher.

Para instruções sobre como personalizar campos opcionais, consulte Ativar a geração de registros em um novo serviço de back-end.

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. Opcional: para incluir todos os campos opcionais nos registros, na seção Campos opcionais, clique em Incluir todos os campos opcionais.

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

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

gcloud: modo regional

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 \
    --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 é global. Use este campo para serviços de back-end usados com balanceadores de carga de aplicativo externos regionais.
  • --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.
  • --logging-optional permite especificar os campos opcionais que você quer incluir nos registros:

    • INCLUDE_ALL_OPTIONAL para incluir todos os campos opcionais.

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

    • CUSTOM para incluir uma lista personalizada de campos de metadados especificados em OPTIONAL_FIELDS.

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

    Por exemplo, tls.protocol,tls.cipher só pode ser definido se LOGGING_OPTIONAL_MODE for definido como CUSTOM.

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. Opcional: para incluir todos os campos opcionais nos registros, na seção Campos opcionais, clique em Incluir todos os campos opcionais.

  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 regional

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 \
    --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 é global. Use este campo para serviços de back-end usados com balanceadores de carga de aplicativo externos regionais.
  • --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.
  • --logging-optional permite especificar os campos opcionais que você quer incluir nos registros.

    • INCLUDE_ALL_OPTIONAL para incluir todos os campos opcionais.

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

    • CUSTOM para incluir uma lista personalizada de campos de metadados especificados em OPTIONAL_FIELDS.

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

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

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 regional

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 \
    --region=REGION \
    --no-enable-logging

onde

  • --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 | --region=REGION \
 --logging-sample-rate=VALUE

Ver registros

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 externos regionais,é possível exportar métricas com base em registros usando registros de recurso (resource.type="http_external_regional_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. Os registros contêm campos opcionais que adicionam mais informações sobre seu tráfego HTTP(S). Esses campos podem ser omitidos para economizar nos custos de armazenamento.

Alguns campos de registro aparecem em um formato múltiplo, com mais de um dado em cada campo. Por exemplo, o campo tls é do formato TlsDetails, que contém o protocolo TLS e a criptografia TLS em um único campo. Esses campos são descritos na tabela de formatos de registro a seguir.

Campo Formato do campo Tipo de campo: obrigatório ou opcional Descrição
severity
insertID
timestamp
logName
LogEntry Obrigatório Os campos gerais, conforme descrito em uma entrada de registro.
httpRequest HttpRequest Obrigatório Um protocolo comum para o registro de solicitações HTTP.
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:
  • proxyStatus
  • tls
  • backendTargetProjectNumber
  • mtls
  • authzPolicyInfo
string Obrigatório

O campo proxyStatus contém uma string que especifica por que o balanceador de carga de aplicativo externo regional retornou o HttpRequest.status.

O campo não será registrado se o valor for uma string vazia. Isso poderá acontecer se o proxy ou back-end não retornar um erro ou um código do erro que não seja 0, 4XX ou 5XX.

O campo proxyStatus tem duas partes:

AuthzPolicyInfo Obrigatório O campo authzPolicyInfo armazena informações sobre o resultado da política de autorização. Essas informações estão disponíveis apenas para balanceadores de carga de aplicativo externos regionais com política de autorização ativada. Para mais informações, consulte o que é registrado para a política de autorização.
TlsDetails Opcional O campo tls contém os TlsDetails que especificam os metadados TLS para a conexão entre o cliente e o balanceador de carga de aplicativo externo regional. Este campo só está disponível se o cliente estiver usando criptografia TLS/SSL.
MtlsDetails Opcional O campo mtls contém o valor MtlsDetails que especifica os metadados mTL para a conexão entre o cliente e o balanceador de carga de aplicativo regional externo. Esse campo só estará disponível se o balanceador de carga usar TLS mútuo de front-end (mTLS).

Formato do campo TlsDetails

Campo Formato do campo Tipo de campo: obrigatório ou opcional Descrição
protocol string Opcional Protocolo TLS que os clientes podem usar para estabelecer uma conexão com o balanceador de carga. Os valores possíveis podem ser TLS 1.0, 1.1, 1.2, 1.3 ou QUIC. Esse valor será definido como NULL se o cliente não estiver usando criptografia TLS/SSL.
criptografia string Opcional Criptografia TLS que os clientes podem usar para estabelecer uma conexão com o balanceador de carga. Esse valor é definido como NULL se o cliente não estiver usando HTTP(S) ou não estiver usando criptografia TLS/SSL.

Formato do campo MtlsDetails

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

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

clientCertChainVerified bool Opcional

true se a cadeia de certificados do cliente for verificada em relação a um TrustStore configurado. Caso contrário, false.

clientCertError string Opcional

Strings predefinidas que representam as condições de erro. Para mais informações sobre as strings de erro, consulte os modos de validação de cliente mTLS.

clientCertSha256Fingerprint string Opcional

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

clientCertSerialNumber string Opcional

O número de série do certificado do cliente. Se o número de série for maior que 50 bytes, a string client_cert_serial_number_exceeded_size_limit será adicionada ao client_cert_error e o número de série será definido como uma string vazia.

clientCertValidStartTime string Opcional

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

clientCertValidEndTime string Opcional

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

clientCertSpiffeId string Opcional

O ID do SPIFFE no campo Nome alternativo do assunto (SAN, na sigla em inglês). Se o valor não for válido ou exceder 2.048 bytes, o ID do SPIFFE será definido como uma string vazia.

Se o ID SPIFFE tiver mais de 2.048 bytes, a string client_cert_spiffe_id_exceeded_size_limit será adicionada a client_cert_error.

clientCertUriSans string Opcional

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

Se o campo client_cert_uri_sans for maior que 512 bytes, a string client_cert_uri_sans_exceeded_size_limit será adicionada ao client_cert_error, e a lista separada por vírgulas será definida como uma string vazia.

clientCertDnsnameSans string Opcional

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

Se o campo client_cert_dnsname_sans for maior que 512 bytes, a string client_cert_dnsname_sans_exceeded_size_limit será adicionada ao client_cert_error, e a lista separada por vírgulas será definida como uma string vazia.

clientCertIssuerDn string Opcional

Campo do 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 será adicionada a client_cert_error, e client_cert_issuer_dn será definido como uma string vazia.

clientCertSubjectDn string Opcional

Campo "Assunto" 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 será adicionada a client_cert_error, e client_cert_subject_dn será definido como uma string vazia.

clientCertLeaf string Opcional

O certificado de folha de cliente para uma conexão mTLS estabelecida em que o certificado passou na validação. A codificação do certificado está em conformidade com asRFC 9440: o certificado DER binário é codificado usando Base64 (sem quebras de linha, espaços ou outros caracteres fora do alfabeto Base64) e delimitado por dois pontos em ambos os lados.

Se client_cert_leaf exceder 16 KB não codificados, a string client_cert_validated_leaf_exceeded_size_limit será adicionada a client_cert_error, e client_cert_leaf será definido como uma string vazia.

clientCertChain string Opcional

A lista de certificados delimitada por vírgulas, na ordem TLS padrão, da cadeia de certificados do cliente para uma conexão mTLS estabelecida em que o certificado do cliente passou na validação, sem incluir o certificado de folha. A codificação do certificado é compatível com a RFC 9440 (link em inglês).

Se o tamanho combinadoclient_cert_leaf e client_cert_chain antes que a codificação Base64 exceda 16 KB, a stringclient_cert_validated_chain_exceeded_size_limit foi adicionado aclient_cert_error eclient_cert_chain é definido como uma string vazia.

Rótulos de recursos

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

Campo Tipo Descrição
backend_name string O nome do grupo de instâncias de back-end ou do NEG. No entanto, o rótulo fica em branco para uma conexão TLS com falha.
backend_scope string O escopo do back-end (um nome de zona ou de região). Poderá ser UNKNOWN sempre que backend_name for desconhecido.
backend_scope_type string O escopo do back-end (REGION/ZONE). Poderá ser UNKNOWN sempre que backend_name for desconhecido.
backend_target_name string O nome do back-end selecionado para processar a solicitação, com base na regra de caminho do mapa de URL ou na regra de rota que corresponde à solicitação.
backend_target_type string O tipo de destino de back-end. Pode ser BACKEND_SERVICE ou UNKNOWN é retornado se o back-end não foi atribuído.
backend_type string O tipo do grupo de back-end. Pode ser INSTANCE_GROUP, NETWORK_ENDPOINT_GROUP ou UNKNOWN é retornado se o back-end não foi atribuído.
forwarding_rule_name string O nome do objeto da regra de encaminhamento.
matched_url_path_rule string 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 se refere a uma solicitação que não corresponde a regras de caminho do URL. Portanto, ele usa a regra de caminho padrão.
  • UNKNOWN indica um erro interno ou uma falha na conexão TLS.
network_name string O nome da rede VPC do balanceador de carga.
project_id string O identificador do projeto do Google Cloud associado a esse recurso.
region string A região em que o balanceador de carga é definido.
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. Ele fica vazio para uma conexão TLS com falha.

Campo de erro proxyStatus

O campo proxyStatus contém uma string que especifica por que o balanceador de carga retornou um erro. Há duas partes no campo proxyStatus, proxyStatus error e proxyStatus details. Esta seção descreve as strings com suporte no campo proxyStatus error.

O campo de erro proxyStatus é aplicável aos seguintes balanceadores de carga:

  • Balanceador de carga de aplicativo externo regional
  • Balanceador de carga de aplicativo interno entre regiões
  • Balanceador de carga de aplicativo interno regional
Erro proxyStatus Descrição Códigos de resposta associados frequentes
destination_unavailable O balanceador de carga considera o back-end indisponível. Por exemplo, tentativas recentes de comunicação com o back-end falharam ou uma verificação de integridade pode ter resultado em uma falha. 500, 503
connection_timeout A tentativa do balanceador de carga de abrir uma conexão com o back-end expirou. 504
connection_terminated

A conexão do balanceador de carga com o back-end terminou antes do recebimento de uma resposta completa.

Esse proxyStatus error é retornado durante qualquer um dos seguintes cenários:

  • A conexão do balanceador de carga com o back-end terminou antes do recebimento de uma resposta completa.
  • A conexão TLS falhou no handshake de SSL e o cliente não estabeleceu uma conexão com o balanceador de carga.

0, 502, 503
connection_refused A conexão do balanceador de carga com o back-end é recusada. 502, 503
connection_limit_reached

O balanceador de carga está configurado para limitar o número de conexões com o back-end, e esse limite foi excedido.

Esse proxyStatus error é retornado durante qualquer um dos seguintes cenários:

  • Se algum back-end estiver no modo de manutenção, o tráfego não poderá ser roteado para ele.
  • Se a solicitação tem limitação de taxa localmente.
  • O Envoy está lidando com condições de erro, como falta de memória.
502, 503
destination_not_found O balanceador de carga não pode determinar o back-end apropriado a ser usado para essa solicitação. Por exemplo, o back-end pode não estar configurado. 500, 404
dns_error O balanceador de carga encontrou um erro de DNS ao tentar encontrar um endereço IP para o nome do host do back-end. 502, 503
proxy_configuration_error O balanceador de carga encontrou um erro interno de configuração. 500
proxy_internal_error O balanceador de carga encontrou um erro interno. 0, 500, 502
proxy_internal_response O balanceador de carga gerou a resposta sem tentar se conectar ao back-end. Qualquer código de resposta, dependendo do tipo de problema. Por exemplo, o código de resposta 410 significa que o back-end está indisponível devido à inadimplência de pagamento.
http_response_timeout O balanceador de carga atingiu um tempo limite configurado do serviço de back-end enquanto aguardava a resposta completa do back-end. 504, 408
http_request_error O balanceador de carga encontrou um erro HTTP 4xx, que indica problemas com a solicitação do cliente. 400, 403, 405, 406, 408, 411, 413, 414, 415, 416, 417, or 429
http_protocol_error O balanceador de carga encontrou um erro de protocolo HTTP ao se 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 de verificar o 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 de TLS. 0

Campo de detalhes do proxyStatus

O campo proxyStatus contém uma string que especifica por que o balanceador de carga retornou um erro. Há duas partes no campo proxyStatus, proxyStatus error e proxyStatus details. O campo proxyStatus details é opcional e só é exibido quando há mais informações disponíveis. Esta seção descreve as strings com suporte no campo proxyStatus details.

O campo de detalhes do proxyStatus é aplicável aos seguintes balanceadores de carga:

  • Balanceador de carga de aplicativo externo regional
  • Balanceador de carga de aplicativo interno regional
  • Balanceador de carga de aplicativo interno entre regiões
Detalhes do proxyStatus Descrição Códigos de resposta associados frequentes
client_disconnected_before_any_response A conexão com o cliente foi interrompida antes de o balanceador de carga enviar uma resposta. 0
backend_connection_closed O back-end fechou inesperadamente sua conexão com o balanceador de carga. Isso poderá acontecer se o balanceador de carga estiver enviando tráfego para outra entidade, como um aplicativo de terceiros com um tempo limite TCP menor que o tempo limite de 10 minutos (600 segundos) do balanceador de carga. 502
failed_to_connect_to_backend O balanceador de carga falhou ao se conectar com o back-end. Essa falha inclui tempos limite durante a fase de conexão. 503
failed_to_pick_backend O balanceador de carga falhou ao escolher um back-end íntegro para administrar a solicitação. 502
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.
client_timed_out

A conexã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 aplicativo externo regional, consulte Tempo limite de sinal de atividade HTTP do cliente. Para mais informações sobre o balanceador de carga de aplicativo interno, consulte Tempo limite de sinal de atividade HTTP do cliente.
0, 408
backend_timeout

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

502
http_protocol_error_from_backend_response A resposta do back-end contém um erro de protocolo HTTP. 501, 502
http_protocol_error_from_request A solicitação do cliente contém um erro de protocolo HTTP. 400, 503
http_version_not_supported A versão do protocolo HTTP não é compatível. Atualmente, apenas HTTP 0.9, 1.0, 1.1 e 2.0 são compatíveis. 400
handled_by_identity_aware_proxy Esta resposta foi gerada pelo Identity-Aware Proxy (IAP) durante a verificação da identidade do cliente antes de permitir o acesso. 200, 302, 400, 401, 403, 500, 502
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, 404
ip_detection_failed Não foi possível detectar o endereço IP original. Qualquer código de resposta é possível, dependendo da natureza da falha. O valor precisa estar entre 400 e 599.
request_body_too_large O corpo da solicitação HTTP excedeu o tamanho máximo aceito pelo balanceador de carga. 413, 507
request_header_timeout O cabeçalho da solicitação expirou porque o balanceador de carga não recebeu a solicitação completa em cinco segundos. 408, 504
denied_by_security_policy O balanceador de carga negou essa solicitação devido a uma política de segurança do Google Cloud Armor. 403
throttled_by_security_policy A solicitação foi bloqueada por uma regra de limitação do Google Cloud Armor. 429
client_cert_chain_invalid_eku O certificado do cliente ou o emissor não tem o uso de chave estendido que inclua o clientAuth. 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 10 restrições de nome. Para mais informações, consulte Erros registrados para conexões fechadas. 0
client_cert_invalid_rsa_key_size Uma folha do cliente ou um certificado intermediário tinha um tamanho inválido da chave RSA. 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_pki_too_large A ICP a ser usada para validação tem mais de três certificados intermediários que compartilham os mesmos Subject e Subject Public Key Info. 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_validation_failed A validação do certificado do cliente falha com TrustConfig. Para mais informações, consulte Erros registrados para conexões fechadas. 0
client_cert_validation_not_performed Você configurou o TLS mútuo sem configurar um TrustConfig. 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_timed_out O limite de tempo foi excedido (200 ms) durante a validação da cadeia de certificados. Para mais informações, consulte Erros registrados para conexões fechadas. 0
tls_version_not_supported A versão do protocolo TLS é reconhecida, mas incompatível. O erro resulta no fechamento da conexão TLS. 0
unknown_psk_identity Os servidores enviam esse erro quando o estabelecimento da chave PSK é necessário, mas o cliente não fornece uma identidade PSK aceitável. O erro resulta no fechamento da conexão TLS. 0
no_application_protocol Enviada por servidores quando uma extensão "application_layer_protocol_negotiation" do cliente anuncia somente protocolos não compatíveis com o servidor. Consulte Extensão de negociação do protocolo da camada de aplicativo TLS. O erro resulta no fechamento da conexão TLS. 0
no_certificate Nenhum certificado foi encontrado. O erro resulta no fechamento da conexão TLS. 0
bad_certificate Um certificado é inválido ou contém assinaturas que não puderam ser verificadas. O erro resulta no fechamento da conexão TLS. 0
unsupported_certificate O tipo de certificado não é compatível. O erro resulta no fechamento da conexão TLS. 0
certificate_revoked Um certificado foi revogado pelo signatário. O erro resulta no fechamento da conexão TLS. 0
certificate_expired Um certificado expirou ou não é válido. O erro resulta no fechamento da conexão TLS. 0
certificate_unknown Ocorreram alguns problemas não especificados durante o processamento do certificado, tornando-o inaceitável. O erro resulta no fechamento da conexão TLS. 0
unknown_ca Uma cadeia de certificados ou parcial válida foi recebida, mas o certificado não foi aceito porque o certificado de CA não pôde ser localizado ou combinado com uma âncora de confiança conhecida. O erro resulta no fechamento da conexão TLS. 0
unexpected_message Uma mensagem inadequada foi recebida, por exemplo, uma mensagem de handshake incorreta ou dados de aplicativo prematuros. O erro resulta no fechamento da conexão TLS. 0
bad_record_mac É recebido um registro que não pode ser desprotegido. O erro resulta no fechamento da conexão TLS. 0
record_overflow Um registro TLSCiphertext com duração superior a 214+256 bytes ou um registro foi descriptografado para um registro TLSPlaintext com mais de 214 bytes (ou algum outro limite negociado). O erro resulta no fechamento da conexão TLS. 0
handshake_failure Não é possível negociar um conjunto aceitável de parâmetros de segurança com as opções disponíveis. O erro resulta no fechamento da conexão TLS. 0
illegal_parameter Um campo no handshake estava incorreto ou era inconsistente com outros campos. O erro resulta no fechamento da conexão TLS. 0
access_denied Um certificado válido ou PSK foi recebido, mas quando o controle de acesso foi aplicado, o cliente não prosseguiu com a negociação. O erro resulta no fechamento da conexão TLS. 0
decode_error Não foi possível decodificar uma mensagem porque alguns campos estavam fora do intervalo especificado ou o tamanho da mensagem estava incorreto. O erro resulta em uma conexão TLS fechada. 0
decrypt_error Uma operação criptográfica de handshake (não da camada de registro) falhou, incluindo a incapacidade de verificar corretamente uma assinatura ou validar uma mensagem concluída ou um vinculador PSK. O erro resulta no fechamento da conexão TLS. 0
insufficient_security Uma negociação falhou especificamente porque o servidor exige parâmetros mais seguros do que aqueles aceitos pelo cliente. O erro resulta em uma conexão TLS fechada. 0
inappropriate_fallback Enviado por um servidor em resposta a uma tentativa inválida de nova tentativa de conexão de um cliente. O erro resulta no fechamento da conexão TLS. 0
user_cancelled O usuário cancela o handshake por algum motivo não relacionado a uma falha de protocolo. O erro resulta no fechamento da conexão TLS. 0
missing_extension Enviado por endpoints que recebem uma mensagem de handshake sem uma extensão obrigatória para a versão do TLS oferecida ou para outros parâmetros negociados. O erro resulta no fechamento da conexão TLS. 0
unsupported_extension Enviado por endpoints que recebem qualquer mensagem de handshake contendo uma extensão conhecida por ser proibida para inclusão na mensagem de handshake ou incluir qualquer extensão em ServerHello ou Certificate que não tenha sido oferecida primeiro no ClientHello ou no CertificateRequest correspondente. O erro resulta no fechamento da conexão TLS. 0
unrecognized_name Enviado por servidores quando não há servidor que possa ser identificado pelo nome fornecido pelo cliente com a extensão "server_name". Consulte Definições de extensão TLS. 0
bad_certificate_status_response Enviada por clientes quando uma resposta OCSP inválida ou inaceitável é fornecida pelo servidor com a extensão "status_request". Consulte Definições de extensão TLS. O erro resulta no fechamento da conexão TLS. 0
load_balancer_configured_resource_limits_reached O balanceador de carga atingiu os limites de recursos configurados, como o número máximo de conexões. 400, 500, 503

Entradas de registro de conexão TLS com falha

Quando a conexão TLS entre o cliente e o balanceador de carga falha antes da seleção de qualquer back-end, as entradas de registro registram os erros. É possível configurar os serviços de back-end com diferentes taxas de amostragem de registros. Quando uma conexão TLS falha, a taxa de amostragem do registro de conexão TLS com falha é a taxa de amostragem mais alta para qualquer serviço de back-end. Por exemplo, se você configurou dois serviços de back-end com a taxa de amostragem de geração de registros como 0.3 e 0.5, a taxa de amostragem do registro de conexão TLS com falha será 0.5.

Verifique os detalhes da entrada de registro a seguir para identificar as conexões TLS com falha:

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

O exemplo a seguir mostra uma entrada de registro 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"
  

Registros de solicitação de políticas 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. Confira mais detalhes do registro de políticas de autorização.

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.

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

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

Como definir políticas de alertas

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

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

    Acessar Alertas

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

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

Como definir painéis personalizados do Cloud Monitoring

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

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

    Acessar Monitoring

  2. Selecione Painéis > Criar painel.

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

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

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

  6. Clique em Salvar.

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 métricas a seguir para balanceadores de carga de aplicativo externos regionais 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/external/regional/request_count O número de solicitações exibidas pelo balanceador de carga de aplicativo externo regional.
Contagem de bytes da solicitação https/external/regional/request_bytes O número de bytes enviados como solicitações dos clientes para o balanceador de carga regional externo.
Contagem de bytes da resposta https/external/regional/response_bytes O número de bytes enviados como respostas do balanceador de carga regional externo para o cliente.
Latências totais https/external/regional/total_latencies Uma distribuição da latência, em milissegundos. A latência é medida entre o momento em que o proxy recebe o primeiro byte da solicitação e o momento em que o proxy envia o último byte da resposta.
Latências de back-end https/external/regional/backend_latencies Uma distribuição da latência, em milissegundos. A latência é medida entre o momento em que o proxy envia o primeiro byte da solicitação ao back-end e o momento em que o proxy recebe o último byte da resposta do back-end.

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 externo regional. É possível filtrar as métricas agregadas usando as seguintes dimensões para resource.type="http_external_regional_lb_rule".

Propriedade Descrição
backend_name O nome do grupo de instâncias de back-end ou do NEG.
backend_scope O escopo do back-end (um nome de zona ou de região). Poderá ser UNKNOWN sempre que backend_name for desconhecido.
backend_scope_type O escopo do back-end (REGION/ZONE). Poderá ser UNKNOWN sempre que backend_name for desconhecido.
backend_target_name O nome do back-end selecionado para processar a solicitação, com base na regra de caminho do mapa de URL ou na regra de rota que corresponde à solicitação.
backend_target_type O tipo de destino de back-end. Pode ser BACKEND_SERVICE ou UNKNOWN é retornado se o back-end não foi atribuído.
backend_type O tipo do grupo de back-end. Pode ser INSTANCE_GROUP, NETWORK_ENDPOINT_GROUP ou UNKNOWN é retornado se o back-end não foi atribuído.
forwarding_rule_name O nome do objeto da regra de encaminhamento.
matched_url_path_rule 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, usa a regra de caminho padrão.
  • UNKNOWN indica um erro interno.
network_name O nome da rede VPC do balanceador de carga.
project_id O identificador do projeto do Google Cloud associado a esse recurso.
region A região em que o balanceador de carga é definido.
target_proxy_name O nome do objeto do proxy de destino referenciado pela regra de encaminhamento.
url_map_name O nome do objeto do mapa de URL configurado para selecionar um serviço de back-end.

A seguir