Neste documento, apresentamos as informações necessárias para entender as métricas de geração de registros e monitoramento dos balanceadores de carga de aplicativo internos. As métricas de geração de registros e monitoramento dos balanceadores de carga internos e regionais de aplicativos são as mesmas.
Geração de registros
É possível ativar a geração de registros por serviço de back-end. Um mapa de URL do balanceador de carga de aplicativo interno pode fazer referência a mais de um serviço de back-end. Talvez seja necessário ativar a geração de registros para vários serviços de back-end, dependendo da configuração.
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 de fluxo. Quando novos campos opcionais são adicionados ao formato de registro, os registros de fluxo 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 serviço de back-end existente.
Como ativar a geração de registros em um serviço de back-end
Para balanceadores de carga de aplicativo internos regionais, use as seguintes etapas:
Console
No Console do Google Cloud, acesse a página Balanceamento de carga.
Clique no nome do balanceador de carga.
Clique em
Editar.Clique em Configuração de back-end.
Clique em
Editar ao lado do serviço de back-end.Clique em Configurações avançadas (afinidade de sessão, tempo limite de diminuição da conexão).
Clique em Ativar a geração de registros.
Defina uma fração da Taxa de amostragem. É possível definir um número de
0.0
a1.0
, em que0.0
significa que nenhuma solicitação é registrada e1.0
significa que 100% das solicitações são registradas. O valor padrão é1.0
.Opcional: para incluir todos os campos opcionais nos registros, na seção Campos opcionais, clique em Incluir todos os campos opcionais.
Para concluir a edição do serviço de back-end, clique em Atualizar.
Para concluir a edição do balanceador de carga, clique em Atualizar.
gcloud
Para atualizar o serviço de back-end e ativar a geração de registros, use o comando gcloud compute
backend-services update
.
gcloud compute backend-services update BACKEND_SERVICE \ --enable-logging \ --logging-sample-rate=RATE \ --region=REGION \ --logging-optional=LOGGING_OPTIONAL_MODE \ --logging-optional-fields=OPTIONAL_FIELDS
onde
--enable-logging
ativa a geração de registros para esse serviço de back-end.--logging-sample-rate
permite especificar um valor de0.0
a1.0
, em que0.0
significa que nenhuma solicitação é registrada e1.0
significa que 100% das solicitações são registradas. Só é significativo com o parâmetro--enable-logging
. Ativar a geração de registros, mas definir a taxa de amostragem como0.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 emOPTIONAL_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 seLOGGING_OPTIONAL_MODE
for definido comoCUSTOM
.
Para balanceadores de carga de aplicativo internos entre regiões, use as seguintes etapas:
Console
No Console do Google Cloud, acesse a página Balanceamento de carga.
Clique no nome do balanceador de carga.
Clique em
Editar.Clique em Configuração de back-end.
Clique em
Editar ao lado do serviço de back-end.Clique em Configurações avançadas (afinidade de sessão, tempo limite de diminuição da conexão).
Clique em Ativar a geração de registros.
Defina uma fração da Taxa de amostragem. É possível definir um número de
0.0
a1.0
, em que0.0
significa que nenhuma solicitação é registrada e1.0
significa que 100% das solicitações são registradas. O valor padrão é1.0
.Opcional: para incluir todos os campos opcionais nos registros, na seção Campos opcionais, clique em Incluir todos os campos opcionais.
Para concluir a edição do serviço de back-end, clique em Atualizar.
Para concluir a edição do balanceador de carga, clique em Atualizar.
gcloud
Para atualizar o serviço de back-end e ativar a geração de registros, use o comando gcloud compute
backend-services update
.
gcloud compute backend-services update BACKEND_SERVICE \ --enable-logging \ --logging-sample-rate=RATE \ --global \ --logging-optional=LOGGING_OPTIONAL_MODE \ --logging-optional-fields=OPTIONAL_FIELDS
onde
--enable-logging
ativa a geração de registros para esse serviço de back-end.--logging-sample-rate
permite especificar um valor de0.0
a1.0
, em que0.0
significa que nenhuma solicitação é registrada e1.0
significa que 100% das solicitações são registradas. Só é significativo com o parâmetro--enable-logging
. Ativar a geração de registros, mas definir a taxa de amostragem como0.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 emOPTIONAL_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 seLOGGING_OPTIONAL_MODE
for definido comoCUSTOM
.
Depois de ativar a geração de registros no serviço de back-end, cada solicitação HTTP(S) é registrada usando o Cloud Logging.
Como visualizar os registros
Para ver os registros, no console do Google Cloud, acesse a página Análise de registros.
Os registros do balanceador de carga interno do aplicativo são indexados primeiro por rede e depois por região.
- Para consultar os registros de todos os balanceadores de carga de aplicativo internos, no primeiro menu suspenso, selecione Regra de balanceador de carga de aplicativo interno.
- Para consultar os registros de apenas uma rede, selecione Regra de balanceador de carga de aplicativo interno e, em seguida, selecione o nome de uma rede.
- Para consultar os registros de apenas uma região da rede, selecione
Regra de balanceador de carga de aplicativo interno>
NETWORK
>REGION
.
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.
É possível configurar a exportação de
métricas com base em registros para
registros de recursos (resource.type="internal_http_lb_rule"
). As métricas
criadas são baseadas no recurso "Regra de balanceador de carga de aplicativo interno",
disponível nos painéis do Cloud Monitoring:
O que é registrado
As entradas de registro do balanceador de carga externo do aplicativo 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, e campos opcionais que adicionam outras informações sobre seu tráfego HTTP(S). Esses campos podem ser omitidos para economizar nos custos de armazenamento. As entradas de registro contêm os seguintes tipos de informação:
- Informações gerais mostradas na maioria dos registros do Google Cloud, como gravidade, ID do projeto, número do projeto e carimbo de data/hora, conforme descrito no LogEntry.
- campos de registro HttpRequest.
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 | Tipo | Tipo de campo: obrigatório ou opcional | Descrição |
---|---|---|---|
logName
|
string | Obrigatório |
O nome do recurso do registro a que a entrada pertence. No formato "projects/PROJECT_ID/logs/requests" .
|
timestamp
|
string | Obrigatório | A hora em que a solicitação começou. |
severity
|
Formato LogSeverity | Obrigatório |
A gravidade da entrada de registro. O padrão é
LogSeverity.DEFAULT .
|
httpRequest
|
Objeto HttpRequest | Obrigatório | Um proto HttpRequest que descreve a solicitação HTTP(S) que está sendo registrada. |
trace
|
string | Obrigatório |
O nome do recurso do trace associado à entrada de registro,
se houver. Se ele incluir um nome de recurso relativo, presume-se que o nome
seja https://tracing.googleapis.com . Exemplo:
projects/PROJECT_ID/traces/06796866738c859f2f19b7cfb3214824 .
Os balanceadores de carga de aplicativo internos não são compatíveis com este campo. |
spanId
|
string | Obrigatório |
O ID do período dentro do trace associado à entrada de registro. Para
períodos do Trace, esse é o mesmo formato que a API Trace v2 usa: uma
codificação hexadecimal de 16 caracteres de uma matriz de 8 bytes, como
000000000000004a .
Os balanceadores de carga de aplicativo internos não são compatíveis com este campo. |
resource
|
Objeto MonitoredResource | Obrigatório |
O recurso monitorado que produziu a entrada de registro. O objeto Por exemplo, os descritores de recursos monitorados para
balanceadores de carga de aplicativo internos têm um tipo de
|
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:
|
string | Obrigatório | O campo 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 de erro
que não seja O campo
|
|
string | Obrigatório | O campo backendTargetProjectNumber contém o número do projeto que identifica o proprietário do serviço ou bucket de back-end.
|
|
string | Obrigatório | O campo serviceDirectoryService contém o nome do serviço do Diretório de serviços em que a falha do Cloud FIT foi configurada. |
|
string | Obrigatório | O campo cloudFitExperiment contém o nome do experimento do Cloud FIT. |
|
string | Obrigatório | O campo cloudFitFault contém o nome da falha injetada por um experimento de falha do Cloud FIT no caminho da solicitação. |
|
ServiceExtensionInfo | Obrigatório | O campo serviceExtensionInfo armazena informações sobre os streams gRPC do balanceador de carga para as extensões de serviço. Para mais informações, consulte
o que é registrado para extensões de frase de destaque. |
|
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 internos 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 interno. 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 mTLS para
a conexão entre o cliente e o balanceador de carga de aplicativo interno. 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 |
|
clientCertChainVerified | bool | Opcional |
|
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 |
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, |
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, |
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 |
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 Se o campo |
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 |
clientCertIssuerDn | string | Opcional | Campo do emissor completo codificado em Base64 do certificado. Se o campo |
clientCertSubjectDn | string | Opcional | Campo "Assunto" completo codificado em Base64 do certificado. Se o campo |
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 |
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 combinado de |
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
|
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
|
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
( 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
ouconnection_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"
Rótulos de recursos
A tabela a seguir lista os rótulos dos recursos de
resource.type="internal_http_lb_rule"
.
Campo | Tipo | Descrição |
---|---|---|
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. |
url_map_name | string | O nome do objeto do mapa de URL configurado para selecionar um serviço de back-end. |
forwarding_rule_name |
string | O nome do objeto da regra de encaminhamento. |
target_proxy_name | string | O nome do objeto do proxy de destino referenciado pela 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.
|
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 (BACKEND_SERVICE / UNKNOWN ). |
backend_name |
string | O nome do grupo de instâncias de back-end ou do NEG. |
backend_type |
string | O tipo de back-end, um grupo de instâncias, um NEG ou desconhecido. O Cloud Logging registra solicitações quando |
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_cross_project_id |
String |
O ID do projeto do serviço ou bucket de destino de back-end. Esse campo só fica disponível se o recurso de destino do back-end for criado em um projeto diferente daquele em que o recurso url_map foi criado.
|
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:
|
authz_info.policies[].result |
enum | O resultado pode ser ALLOWED ou DENIED . |
authz_info.policies[].details |
string | Estes são os detalhes:
|
authz_info.overall_result |
enum | O resultado pode ser ALLOWED ou DENIED . |
Ver registros para validação do certificado do cliente mTLS
Para ver os erros registrados para conexões fechadas durante a validação do certificado do cliente TLS mútuo, conclua as etapas a seguir.
Console
No console do Google Cloud, acesse a página do Explorador de registros.
Clique no botão Mostrar consulta para ativar o Editor de consultas.
Cole o seguinte no campo Consulta. Substitua
FORWARDING_RULE_NAME
pelo nome da regra de encaminhamento.jsonPayload.statusDetails=~"client_cert" jsonPayload.@type="type.googleapis.com/google.cloud.loadbalancing.type.LoadBalancerLogEntry" resource.labels.forwarding_rule_name=FORWARDING_RULE_NAME
Clique em Executar consulta.
Monitoramento
Os balanceadores de carga internos do aplicativo exportam dados de monitoramento para o Monitoring.
É possível usar métricas do Monitoring para:
- avaliar a configuração, o uso e o desempenho de um balanceador de carga;
- resolver problemas;
- Melhorar a utilização de recursos e a experiência do usuário
Além dos painéis predefinidos no Monitoring, é possível criar painéis personalizados, configurar alertas e consultar as métricas por meio da API Monitoring.
Como visualizar métricas do Cloud Monitoring
Console
Para visualizar as métricas de um recurso monitorado usando o Metrics Explorer, faça o seguinte:
-
No console do Google Cloud, acesse a página do leaderboard Metrics Explorer:
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoramento.
- No elemento Metric, expanda o menu Selecionar uma métrica,
digite
Internal Application Load Balancer Rule
na barra de filtro e use os submenus para selecionar um tipo de recurso e métrica específicos:- No menu Recursos ativos, selecione Regra de balanceador de carga de aplicativo interno.
- Para selecionar uma métrica, use os menus Categorias de métricas ativas e Métricas ativas.
- Clique em Aplicar.
Para remover séries temporais da exibição, use o elemento Filtro.
Para combinar séries temporais, use os menus no elemento Agregação. Por exemplo, para exibir a utilização da CPU para suas VMs, com base na zona, defina o primeiro menu como Média e o segundo como zona.
Todas as séries temporais são exibidas quando o primeiro menu do elemento Agregação está definido como Não agregado. As configurações padrão do elemento Agregação são determinadas pelo tipo de métrica selecionada.
- Para cotas e outras métricas que informam uma amostra por dia, faça as seguintes ações:
- No painel Exibição, defina o Tipo de widget como Gráfico de barras empilhadas.
- Defina o período como pelo menos uma semana.
Como definir políticas de alertas
Console
É possível criar políticas de alertas para monitorar os valores das métricas e ser notificado quando elas violarem uma condição.
-
No console do Google Cloud, acesse a página notifications Alertas:
Se você usar a barra de pesquisa para encontrar essa página, selecione o resultado com o subtítulo Monitoring.
- 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.
- Na página Alertas, clique em Criar política.
- Para selecionar a métrica, expanda o menu Selecionar uma métrica e faça isto:
- Para limitar o menu a entradas relevantes, insira
Internal 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. - Em Tipo de recurso, selecione Regra de balanceador de carga de aplicativo interno.
- Selecione uma Categoria de métrica e uma Métrica, depois selecione Aplicar.
- Para limitar o menu a entradas relevantes, insira
- Clique em Próxima.
- 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.
- Clique em Próxima.
- 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.
- 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.
- Opcional: clique em Documentação e adicione as informações que quer incluir em uma mensagem de notificação.
- Clique em Nome e digite um nome para a política de alertas.
- Clique em Criar política.
Como definir painéis personalizados do Monitoring
Console
É possível criar painéis personalizados do Monitoring sobre métricas internas do balanceador de carga de aplicativo:
No Console do Google Cloud, acesse a página Monitoring.
Selecione Painéis > Criar painel.
Clique em Adicionar gráfico.
Dê um título ao gráfico.
Selecione as métricas e os filtros. Para métricas, o tipo de recurso é Balanceador de carga HTTP/S interno.
Clique em Salvar.
Frequência e retenção de relatórios de métricas
As métricas dos balanceadores de carga são exportadas para o 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 de balanceadores de carga internos do aplicativo
As seguintes métricas de balanceadores de carga internos de aplicativos são relatadas no Monitoring:
Métrica | FQDN | Descrição |
---|---|---|
Contagem de solicitações | loadbalancing.googleapis.com/https/internal/request_count |
O número de solicitações exibidas pelo balanceador de carga de aplicativo externo |
Contagem de bytes da solicitação | loadbalancing.googleapis.com/https/internal/request_bytes |
O número de bytes enviados como solicitações dos clientes para o balanceador de carga de aplicativo interno |
Contagem de bytes da resposta | loadbalancing.googleapis.com/https/internal/response_bytes |
O número de bytes enviados como respostas do balanceador de carga HTTP(S) interno para o cliente. |
Latências totais | loadbalancing.googleapis.com/https/internal/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 | loadbalancing.googleapis.com/https/internal/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 das métricas do balanceador de carga interno
As métricas são agregadas para cada balanceador de carga interno. As métricas agregadas podem ser filtradas pelas seguintes dimensões:
Propriedade | Descrição |
---|---|
BACKEND_SCOPE | A zona ou região
do Google Cloud Platform do grupo de back-ends que veiculou a solicitação do cliente, ou
a string especial para casos em que o grupo de back-ends não foi atribuído.
Exemplos:
us-central1-a , europe-west1-b ,
asia-east1 , UNKNOWN .
|
PROXY_REGION | Região do balanceador de carga interno do aplicativo, cliente e back-end. Exemplos:
us-central1 , europe-west1 ou
asia-east1 .
|
BACKEND | O nome do grupo de instâncias de back-end ou NEG que exibiu a solicitação do cliente. |
BACKEND_TARGET | O nome do serviço de back-end que exibiu a solicitação do cliente. |
MATCHED_URL_RULE | A regra de caminho do mapa de URL ou a regra de rota que correspondeu ao prefixo da solicitação HTTP(S) do cliente (até 50 caracteres) |
A métrica Response code class fraction
é aceita em todo o
balanceador de carga. Não é permitida mais granularidade.
A seguir
- Leia informações conceituais sobre balanceadores de carga de aplicativo internos.
- Crie um balanceador de carga de aplicativo interno.
- Consulte Balanceamento de carga interno e nomes do DNS para as opções de nome do DNS disponíveis que o balanceador de carga pode usar.