Informações de geração de registros de verificação de integridade

É possível receber registros de verificações de integridade de balanceamento de carga quando o status de integridade de um endpoint muda. Use os registros de verificação de integridade para:

  • depurações e solução de problemas de status de integridade do endpoint em tempo real;
  • conseguir visibilidade do status de integridade de seu endpoint;
  • Para fins de auditoria e conformidade

As verificações de integridade registram informações de transição de integridade no Logging. Você ativa ou desativa o registro por verificação.

Para ver os registros de verificação de integridade no Logging, verifique se não há uma exclusão de registros que se aplique a verificações de integridade. Para instruções sobre como verificar se os registros GCE Instance Group e Network Endpoint Group são permitidos, consulte Filtros de exclusão.

Ativar e desativar a geração de registros

Nesta seção, descrevemos como ativar a geração de registros em uma verificação de integridade nova ou existente e como desativar a geração de registros em uma verificação de integridade existente.

Ativar a geração de registros em uma nova verificação de integridade

Console

  1. No console do Google Cloud, acesse a página Verificações de integridade.

    Acessar "Verificações de integridade"

  2. Clique em Criar verificação de integridade.

  3. Em Registros, selecione Ativado.

  4. Continue configurando sua verificação de integridade.

gcloud

gcloud compute health-checks create PROTOCOL HEALTH_CHECK_NAME \
    --enable-logging

A sinalização --enable-logging ativa a geração de registros para essa verificação de integridade.

Terraform

Para criar uma verificação de integridade para diferentes protocolos com geração de registros, use o recurso google_compute_health_check.

resource "google_compute_health_check" "health_check_tcp_with_logging" {
  provider = google-beta

  name = "health-check-tcp"

  timeout_sec        = 1
  check_interval_sec = 1

  tcp_health_check {
    port = "22"
  }

  log_config {
    enable = true
  }
}

Para um balanceador de carga regional, use o recurso google_compute_region_health_check.

Para saber como aplicar ou remover uma configuração do Terraform, consulte Comandos básicos do Terraform.

Ativar a geração de registros em uma verificação de integridade atual

Console

  1. No console do Google Cloud, acesse a página Verificações de integridade.

    Acessar "Verificações de integridade"

  2. Clique no nome da sua verificação de integridade.

  3. Clique em Editar.

  4. Em Registros, selecione Ativado.

  5. Clique em Save.

gcloud

gcloud compute health-checks update PROTOCOL HEALTH_CHECK_NAME \
    --enable-logging

A sinalização --enable-logging ativa a geração de registros para essa verificação de integridade.

Desativar a geração de registros em uma verificação de integridade existente

Console

  1. No console do Google Cloud, acesse a página Verificações de integridade.

    Acessar "Verificações de integridade"

  2. Clique no nome da sua verificação de integridade.

  3. Clique em Editar.

  4. Em Registros, selecione Desativado.

  5. Clique em Save.

gcloud

gcloud compute health-checks update PROTOCOL HEALTH_CHECK_NAME \
    --no-enable-logging

A sinalização --no-enable-logging desativa a geração de registros para essa verificação de integridade.

Ver registros

  1. Para visualizar os registros, acesse o Explorador de registros.

    Os registros de verificação de integridade são indexados por grupo de instâncias ou grupo de endpoints da rede.

  2. Para ver todos os registros, no menu Recurso, selecione GCE Instance Group ou Network Endpoint Group, dependendo do tipo de back-end.

  3. Como alternativa, cole o código abaixo no campo Consulta. Substitua PROJECT_ID pelo ID do projeto.

    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"
    

Você pode configurar a exportação de métricas com base em registros para verificações de integridade do balanceador de carga.

Usar filtros para ver os registros

Também é possível receber registros com base em pesquisas mais específicas. Por exemplo, o filtro a seguir mostra todos os registros de um endereço IP de instância de back-end especificado:

  logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"
jsonPayload.healthCheckProbeResult.ipAddress="IP_ADDRESS"

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 sejam UTF-8 são substituídos por pontos de interrogação.

O que é registrado

As entradas de registro de verificação de integridade contêm informações úteis para monitorar e depurar o estado dos endpoints. As entradas de registro contêm:

  • Informações gerais exibidas na maioria dos registros, como gravidade, ID do projeto, número do projeto e carimbo de data/hora.
  • Campos específicos para verificações de integridade, descritos nas tabelas a seguir.

Estados de verificação de integridade

Um endpoint é considerado HEALTHY ou UNHEALTHY. Estes são os estados básicos. Dentro de cada um desses estados básicos, há vários outros mais detalhados.

NEGs híbridos e NEGs regionais da Internet que usam verificações de integridade distribuídas do Envoy não são compatíveis com estados de integridade detalhados.

Na tabela a seguir, mostramos o mapeamento entre estados de integridade básicos e detalhados.

Estado de integridade básico Estado de integridade detalhado
HEALTHY HEALTHY
DRAINING
UNHEALTHY UNKNOWN
UNHEALTHY
TIMEOUT

As mudanças de estado nem sempre alteram o comportamento do balanceador de carga. Considere o seguinte caso:

  1. O servidor está fornecendo a resposta incorreta, portanto, o endpoint é considerado UNHEALTHY.
  2. O servidor para de responder e o novo estado é TIMEOUT.
  3. O balanceador de carga ainda considera o endpoint como UNHEALTHY porque o estado detalhado TIMEOUT é mapeado para o estado UNHEALTHY básico.

Veja na tabela a seguir uma definição de cada estado de integridade.

Estado detalhado da verificação de integridade Significado Estado básico
HEALTHY O endpoint é acessível e está em conformidade com os requisitos definidos pela verificação de integridade. HEALTHY
UNHEALTHY O endpoint está acessível, mas não está em conformidade com os requisitos definidos pela verificação de integridade. UNHEALTHY
DRAINING O endpoint está sendo reduzido. As conexões existentes com o endpoint podem ser concluídas, mas as novas estão sendo recusadas. O endpoint é considerado HEALTHY. HEALTHY
TIMEOUT O endpoint não pode ser acessado. De acordo com o tipo de verificação de integridade, não é possível estabelecer uma conexão com o endpoint ou o servidor não respondeu dentro do tempo limite especificado. O endpoint é considerado UNHEALTHY. UNHEALTHY
UNKNOWN O sistema de verificação de integridade está ciente do endpoint, mas a integridade dele é desconhecida. O endpoint é considerado UNHEALTHY. UNHEALTHY

Há vários verificadores de integridade examinando cada endpoint. O Google Cloud desfaz a duplicação das entradas de registro antes da geração de registros para que apenas registros exclusivos sejam gerados.

Se um verificador de integridade for reiniciado, será possível que o estado de integridade registrado mude ocasionalmente de UNKNOWN para um dos estados conhecidos listados anteriormente, mesmo que o estado de integridade do endpoint não tenha sido alterado. O Google Cloud usa a heurística de melhor esforço para suprimir essas entradas de registro.

Se você estiver usando a diminuição da conexão, os registros de verificação de integridade não serão gerados com o status de integridade do endpoint DRAINING. Os registros de verificação de integridade refletem os resultados observados pelas sondagens de verificação de integridade, e a diminuição da conexão não afeta os resultados observados. A diminuição da conexão funciona apenas informando ao balanceador de carga que o novo estado é DRAINING e substitui o verdadeiro estado de integridade do endpoint, conforme observado pelo verificador de integridade.

Você pode interagir com os registros usando a API Cloud Logging. A API fornece maneiras de filtrar de forma interativa registros que têm campos específicos definidos e exportar registros correspondentes para o Cloud Logging, Cloud Storage, BigQuery ou Pub/Sub. Para mais informações sobre a API Cloud Logging, consulte Visão geral da API Cloud Logging.

Entrada de registro da verificação de integridade

O LogEntry jsonPayload é preenchido com um campo healthCheckProbeResult que contém as informações a seguir.

Campo Tipo Descrição
ipAddress string Endereço IP interno principal associado à interface de rede principal de cada VM de back-end. Esta é uma string legível.
healthCheckProtocol enum(HealthCheckProtocol) O protocolo de verificação de integridade usado para a verificação de integridade do endpoint. Exemplos: TCP, HTTP, HTTPS.
healthState enum(HealthState) Status de integridade atual do endpoint: HEALTHY ou UNHEALTHY.
previousHealthState enum(HealthState) Status de integridade anterior do endpoint: HEALTHY ou UNHEALTHY.
detailedHealthState enum(DetailedHealthState) Status de integridade atual detalhado do endpoint. Para ver uma lista de possibilidades, consulte Estados de verificação de integridade.

Não compatível com verificações de integridade distribuídas do Envoy para NEGs híbridos e NEGs regionais da Internet.

previousDetailedHealthState enum(DetailedHealthState) Status de integridade anterior detalhado do endpoint. Para ver uma lista de possibilidades, consulte Estados de verificação de integridade.

Não compatível com verificações de integridade distribuídas do Envoy para NEGs híbridos e NEGs regionais da Internet.

probeRequest string

Para HTTP, HTTPS e HTTP/2, este é o caminho de solicitação do URL (campo requestPath na configuração do recurso).

Para TCP/SSL, esta é a string opcional configurada que é enviada depois que a conexão de verificação de integridade é estabelecida (campo request na configuração do recurso).

Não compatível com verificações de integridade distribuídas do Envoy para NEGs híbridos e NEGs regionais da Internet.

probeCompletionTimestamp google.protobuf.Timestamp Carimbo de data/hora da conclusão da sondagem.
connectLatency google.protobuf.Duration Tempo gasto na configuração da conexão de protocolos de verificação de integridade orientados a conexões: TCP, SSL, HTTP, HTTPS, HTTP/2.

Não compatível com verificações de integridade distribuídas do Envoy para NEGs híbridos e NEGs regionais da Internet.

responseLatency google.protobuf.Duration Latência entre solicitação e resposta medida pela sondagem.

Não compatível com verificações de integridade distribuídas do Envoy para NEGs híbridos e NEGs regionais da Internet.

probeResultText string Texto descritivo relacionado ao resultado da sondagem. Pode ser algo como "Tempo limite de conexão atingido" ou "Resposta HTTP: gateway inválido" ou pode estar vazio.

Não compatível com verificações de integridade distribuídas do Envoy para NEGs híbridos e NEGs regionais da Internet.

probeSourceIp string Endereço IP do qual a sondagem de verificação de integridade foi enviada.

Em verificações de integridade distribuídas do Envoy, isso corresponde ao endereço IP do proxy da sub-rede somente proxy.

targetIp string Endereço IP que é o destino da sondagem. Pode ser diferente de ipAddress. O endereço IP de destino da sondagem depende do tipo de balanceador de carga. Para mais detalhes, consulte Destino para pacotes de sondagem na visão geral das verificações de integridade.
targetPort int A porta que foi o destino da sondagem. Pode ser a porta padrão da sondagem ou a porta que você especificou ao criar a verificação de integridade.

Exemplos de filtros

Nesta seção, apresentamos exemplos de filtros de registro comuns.

Encontrar todos os resultados da verificação de integridade para um determinado grupo de instâncias

logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"  AND
resource.type="gce_instance_group" AND
resource.labels.instance_group_name="INSTANCE_GROUP_NAME"

Encontrar todos os resultados da verificação de integridade de um NEG específico

logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"  AND
resource.type="gce_network_endpoint_group" AND
resource.labels.network_endpoint_group_id="ENDPOINT_GROUP_ID"

Encontrar todas as transições de verificação de integridade para o endereço IP 10.128.15.201 da instância de back-end

logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"
jsonPayload.healthCheckProbeResult.ipAddress="10.128.15.201"

Encontrar todos os endpoints que estavam ÍNTEGROS, mas agora chegaram ao TEMPO LIMITE

logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"
jsonPayload.healthCheckProbeResult.previousDetailedHealthState="HEALTHY"
jsonPayload.healthCheckProbeResult.detailedHealthState="TIMEOUT"

Encontrar registros de integridade de um período específico

logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Fhealthchecks"
timestamp>"2019-02-14T02:20:00.0Z"
timestamp<"2019-02-14T03:30:00.0Z"

Limitações

  • Os registros são gerados apenas para a transição da integridade do endpoint.
  • Verificações de integridade legadas não são compatíveis.
  • Os pools de destino não são compatíveis.
  • Os registros não são gerados quando o estado de integridade do endpoint é UNKNOWN.
  • No caso de migrações de VM, talvez você não veja nenhuma entrada de registro gerada quando a integridade do endpoint passar para o estado UNHEALTHY.
  • Registros não são gerados quando os endpoints são excluídos. Por exemplo, quando você interrompe uma VM.

A seguir