Información de registro de comprobación del estado

Puedes obtener registros de las comprobaciones del estado del balanceo de carga cuando cambia el estado de un endpoint. Puedes usar los registros de comprobación del estado para lo siguiente:

  • Depuración en directo y solución de problemas del estado de salud de tu endpoint
  • Obtener visibilidad del estado de salud de tus endpoints
  • Fines de auditoría y cumplimiento

Las comprobaciones de estado registran información sobre la transición de estado en Logging. Puedes habilitar o inhabilitar el registro de cada comprobación del estado.

Para ver los registros de comprobación del estado en Logging, debes asegurarte de que no haya ninguna exclusión de registros que se aplique a las comprobaciones del estado. Para obtener instrucciones sobre cómo verificar que se permiten los registros GCE Instance Group y Network Endpoint Group, consulta Filtros de exclusión.

Habilitar e inhabilitar el registro

En esta sección se describe cómo habilitar el registro en una comprobación del estado nueva o ya creada, y cómo inhabilitarlo en una comprobación del estado ya creada.

Habilitar el registro en una comprobación de estado nueva

Consola

  1. En la Google Cloud consola, ve a la página Comprobaciones de estado.

    Ir a Comprobaciones del estado

  2. Haz clic en Crear comprobación del estado.

  3. En Registros, selecciona Activado.

  4. Sigue configurando la comprobación de estado.

gcloud

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

La marca --enable-logging habilita el registro de esa comprobación del estado.

Terraform

Para crear una comprobación del estado para diferentes protocolos con registro, usa el 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
  }
}

En el caso de un balanceador de carga regional, usa el recurso google_compute_region_health_check.

Para saber cómo aplicar o quitar una configuración de Terraform, consulta Comandos básicos de Terraform.

Habilitar el registro en una comprobación de estado

Consola

  1. En la Google Cloud consola, ve a la página Comprobaciones de estado.

    Ir a Comprobaciones del estado

  2. Haz clic en el nombre de la comprobación del estado.

  3. Haz clic en Editar.

  4. En Registros, selecciona Activado.

  5. Haz clic en Guardar.

gcloud

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

La marca --enable-logging habilita el registro de esa comprobación del estado.

Inhabilitar el registro en una comprobación de estado

Consola

  1. En la Google Cloud consola, ve a la página Comprobaciones de estado.

    Ir a Comprobaciones del estado

  2. Haz clic en el nombre de la comprobación del estado.

  3. Haz clic en Editar.

  4. En Registros, selecciona Desactivado.

  5. Haz clic en Guardar.

gcloud

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

La marca --no-enable-logging inhabilita el registro de esa comprobación del estado.

Ver registros

  1. Para ver los registros, ve a Explorador de registros.

    Los registros de comprobación de estado se indexan por grupo de instancias o grupo de puntos finales de red.

  2. Para ver todos los registros, en el menú Recurso, selecciona GCE Instance Group o Network Endpoint Group, en función del tipo de backend.

  3. También puedes pegar lo siguiente en el campo Consulta. Sustituye PROJECT_ID por el ID de tu proyecto.

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

Puede configurar la exportación de métricas basadas en registros para las comprobaciones de estado de los balanceadores de carga.

Usar filtros para ver registros

También puedes obtener registros basados en búsquedas más específicas. Por ejemplo, el siguiente filtro muestra todos los registros de una dirección IP de instancia de backend específica:

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

Los campos de registro de tipo booleano suelen aparecer solo si tienen el valor true. Si un campo booleano tiene el valor false, se omite en el registro.

La codificación UTF-8 se aplica a los campos de registro. Los caracteres que no son caracteres UTF-8 se sustituyen por signos de interrogación.

Qué se registra

Las entradas de registro de comprobación de estado contienen información útil para monitorizar y depurar el estado de tus endpoints. Las entradas de registro contienen los siguientes tipos de información:

  • Información general que se muestra en la mayoría de los registros, como la gravedad, el ID del proyecto, el número del proyecto y la marca de tiempo.
  • Campos específicos de las comprobaciones de estado, que se describen en las siguientes tablas.

Estados de comprobación del estado

Un endpoint se considera HEALTHY o UNHEALTHY. Estos son los estados básicos. Dentro de cada uno de estos estados básicos, hay varios estados más detallados.

Las NEGs híbridas y las NEGs de Internet regionales que usan comprobaciones de estado de Envoy distribuidas no admiten estados de salud detallados.

En la siguiente tabla se muestra la asignación entre los estados de salud básicos y detallados.

Estado de salud básico Estado de salud detallado
HEALTHY HEALTHY
DRAINING
UNHEALTHY UNKNOWN
UNHEALTHY
TIMEOUT

Los cambios de estado no siempre modifican el comportamiento del balanceador de carga. Veamos el siguiente caso:

  1. El servidor está dando una respuesta incorrecta, por lo que el endpoint se considera UNHEALTHY.
  2. El servidor deja de responder y el nuevo estado es TIMEOUT.
  3. El balanceador de carga sigue considerando que el punto final está UNHEALTHY porque el estado TIMEOUT detallado se corresponde con el estado UNHEALTHY básico.

En la siguiente tabla se ofrece una definición de cada estado de salud.

Estado detallado de la comprobación del estado Significado Estado básico
HEALTHY Se puede acceder al endpoint y cumple los requisitos definidos por la comprobación del estado. HEALTHY
UNHEALTHY Se puede acceder al endpoint, pero no cumple los requisitos definidos por la comprobación del estado. UNHEALTHY
DRAINING Se está drenando el endpoint. Las conexiones que ya existen con el endpoint pueden completarse, pero las nuevas se rechazan. El endpoint se considera HEALTHY. HEALTHY
TIMEOUT No se puede acceder al endpoint. En función del tipo de comprobación de estado, no se puede establecer una conexión con el endpoint o el servidor no ha respondido en el tiempo de espera especificado. El endpoint se considera UNHEALTHY. UNHEALTHY
UNKNOWN El sistema de comprobación del estado conoce el endpoint, pero no se sabe si está en buen estado. El endpoint se considera UNHEALTHY. UNHEALTHY

Hay varios comprobadores de estado que analizan cada endpoint. Google Cloud Elimina las entradas de registro duplicadas antes de registrarlas para que solo se generen registros únicos.

Si se reinicia un comprobador de estado, es posible que, en ocasiones, el estado de salud registrado cambie de UNKNOWN a uno de los estados conocidos que se han indicado anteriormente, aunque el estado de salud del endpoint no haya cambiado. Google Cloud usa heurísticas de mejor esfuerzo para suprimir estas entradas de registro.

Si usas el vaciado de conexiones, los registros de comprobación del estado no se generarán con el estado de salud del punto final DRAINING. Esto se debe a que los registros de comprobación del estado reflejan los resultados observados por las comprobaciones del estado, y el vaciado de conexiones no influye en los resultados observados por la comprobación del estado. El drenaje de conexiones funciona informando al balanceador de carga de que el nuevo estado es DRAINING, lo que anula el estado real del punto final observado por el comprobador de estado.

Puedes interactuar con los registros mediante la API de Cloud Logging. La API ofrece formas de filtrar de forma interactiva los registros que tienen campos específicos definidos y de exportar los registros coincidentes a Cloud Logging, Cloud Storage, BigQuery o Pub/Sub. Para obtener más información sobre la API de Cloud Logging, consulta la descripción general de la API de Cloud Logging.

Entrada de registro de comprobación del estado

El campo LogEntry jsonPayload se rellena con un campo healthCheckProbeResult que contiene la siguiente información.

Campo Tipo Descripción
ipAddress string La dirección IP interna principal asociada a la interfaz de red principal de cada máquina virtual de backend. Es una cadena legible por humanos.
healthCheckProtocol enum(HealthCheckProtocol) Protocolo de comprobación del estado usado para comprobar el estado del endpoint. Por ejemplo, TCP, HTTP y HTTPS.
healthState enum(HealthState) Estado de salud actual del endpoint: HEALTHY o UNHEALTHY.
previousHealthState enum(HealthState) El estado de salud anterior del endpoint: HEALTHY o UNHEALTHY.
detailedHealthState enum(DetailedHealthState) Estado de salud detallado actual del endpoint. Para ver una lista de las posibilidades, consulta Estados de las comprobaciones del estado.

No se admite en las comprobaciones del estado de Envoy distribuidas para NEGs híbridas y NEGs de Internet regionales.

previousDetailedHealthState enum(DetailedHealthState) El estado de salud detallado anterior del endpoint. Para ver una lista de las posibilidades, consulta Estados de las comprobaciones del estado.

No se admite en las comprobaciones del estado de Envoy distribuidas para NEGs híbridas y NEGs de Internet regionales.

probeRequest string

En el caso de HTTP, HTTPS y HTTP/2, se trata de la ruta de solicitud de la URL (campo requestPath en la configuración del recurso).

En el caso de TCP/SSL, se trata de la cadena opcional configurada que se envía después de establecer la conexión de comprobación del estado (campo request en la configuración del recurso).

No se admite en las comprobaciones del estado de Envoy distribuidas para NEGs híbridas y NEGs de Internet regionales.

probeCompletionTimestamp google.protobuf.Timestamp Marca de tiempo de finalización de la prueba.
connectLatency google.protobuf.Duration Tiempo empleado en configurar la conexión de los protocolos de comprobación del estado orientados a la conexión TCP, SSL, HTTP, HTTPS y HTTP/2.

No se admite en las comprobaciones del estado de Envoy distribuidas para NEGs híbridas y NEGs de Internet regionales.

responseLatency google.protobuf.Duration Latencia entre la solicitud y la respuesta, medida por el prober.

No se admite en las comprobaciones del estado de Envoy distribuidas para NEGs híbridos y NEGs de Internet regionales.

probeResultText string Texto descriptivo relacionado con el resultado de la prueba. Puede que diga algo como "Se ha agotado el tiempo de espera de la conexión" o "Respuesta HTTP: Bad Gateway", o que esté vacío.

No se admite en las comprobaciones del estado de Envoy distribuidas para NEGs híbridas y NEGs de Internet regionales.

probeSourceIp string Dirección IP desde la que se envió la petición de comprobación de estado.

En el caso de las comprobaciones de estado de Envoy distribuidas, corresponde a la dirección IP del proxy de la subred solo de proxy.

probeSourceRegion string

Región del punto de vista de la nube desde el que se originó la comprobación del estado.

Este campo solo se rellena en las sondas de las políticas de enrutamiento de Cloud DNS si el campo sourceRegions se ha definido en la comprobación del estado correspondiente.

targetIp string La dirección IP de destino de la prueba. Puede ser diferente a ipAddress. La dirección IP de destino de la sonda depende del tipo de balanceador de carga. Para obtener más información, consulta la sección Destino de los paquetes de sondeo del artículo sobre las comprobaciones del estado.
targetPort int El puerto al que se ha dirigido la sonda. Puede ser el puerto predeterminado de la sonda o el puerto que hayas especificado al crear la comprobación del estado.

Ejemplos de filtros

En esta sección se incluyen ejemplos de filtros de registro habituales.

Consultar todos los resultados de comprobaciones de estado de un grupo de instancias concreto

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

Buscar todos los resultados de comprobaciones del estado de un NEG concreto

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"

Buscar todas las transiciones de comprobación de estado de la dirección IP de la instancia de backend 10.128.15.201

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

Buscar todos los endpoints que antes estaban en estado HEALTHY, pero ahora están en estado TIMEOUT

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

Buscar registros de salud de un intervalo de tiempo 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"

Limitaciones

  • Los registros solo se generan para las transiciones del estado de los endpoints.
  • No se admiten las comprobaciones del estado antiguas.
  • No se admiten los grupos de destino.
  • No se generan registros cuando el estado de salud del endpoint es UNKNOWN.
  • En el caso de las migraciones de VMs, es posible que no veas ninguna entrada de registro generada cuando el estado de la endpoint cambie a UNHEALTHY.
  • Los registros no se generan cuando se eliminan los endpoints. Por ejemplo, cuando detienes una VM.

Siguientes pasos