Información de registros de verificaciones de estado

Puedes obtener registros de las verificaciones de estado del balanceo de cargas cuando cambia el estado de un extremo. Además, puedes usar los registros de verificaciones de estado para realizar las siguientes acciones:

  • Depurar y solucionar en vivo los problemas del estado del extremo
  • Obtener visibilidad sobre el estado del extremo
  • Auditar y asegurar el cumplimiento

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

Para consultar los registros de verificaciones de estado en Logging, debes asegurarte de no tener una exclusión de registros que se aplique a ellas. A fin de obtener instrucciones para verificar que los registros GCE Instance Group y Network Endpoint Group estén permitidos, consulta Filtros de exclusión.

Inhabilita y habilita el registro

En esta sección, se describe cómo habilitar el registro en una verificación de estado nueva o existente y cómo inhabilitar el registro en una verificación de estado existente.

Habilita el registro en una nueva verificación de estado

Consola

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

    Ir a Verificaciones de estado

  2. Haz clic en Crear verificación de estado.

  3. En Registros, selecciona Activar.

  4. Continúa con la configuración de la verificación de estado.

gcloud

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

La marca --enable-logging habilita el registro en esa verificación de estado.

Terraform

A fin de crear una verificación de estado para diferentes protocolos con el 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
  }
}

Para un balanceador de cargas regional, usa el recurso google_compute_region_health_check.

Si deseas obtener más información para aplicar o quitar una configuración de Terraform, consulta los comandos básicos de Terraform.

Habilita el registro en una verificación de estado existente

Consola

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

    Ir a Verificaciones de estado

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

  3. Haz clic en Editar.

  4. En Registros, selecciona Activar.

  5. Haz clic en Guardar.

gcloud

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

La marca --enable-logging habilita el registro en esa verificación de estado.

Inhabilita el registro en una verificación de estado existente

Consola

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

    Ir a Verificaciones de estado

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

  3. Haz clic en Editar.

  4. En Registros, selecciona Desactivar.

  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 para esa verificación de estado.

Visualiza registros

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

    Los registros de verificaciones de estado se indexan por grupo de instancias o por grupo de extremos de red.

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

  3. También puedes pegar lo siguiente en el campo Consulta. Reemplaza PROJECT_ID por el ID del proyecto.

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

Puedes configurar exportaciones de métricas basadas en registros para las verificaciones de estado del balanceador de cargas.

Usa filtros para ver los registros

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

  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 un valor false, ese campo se omite del registro.

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

¿Qué se registra?

Las entradas de registro de verificaciones de estado contienen información útil para supervisar y depurar el estado de tus extremos. 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 y el número del proyecto y la marca de tiempo.
  • Campos específicos de las verificaciones de estado, que se describen en las tablas a continuación

Estados de las verificaciones de estado

Un extremo 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.

Los NEGs híbridos y los NEGs de Internet regionales que usan verificaciones de estado de Envoy distribuidos no admiten estados de estado detallados.

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

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

Los cambios de estado no siempre modifican el comportamiento del balanceador de cargas. Considera el siguiente caso:

  1. El servidor entrega una respuesta incorrecta, por lo que el extremo se considera UNHEALTHY.
  2. Luego, el servidor deja de responder y el estado nuevo es TIMEOUT.
  3. El balanceador de cargas aún considera que el extremo es UNHEALTHY porque el estado detallado TIMEOUT se asigna al estado UNHEALTHY básico.

En la siguiente tabla, se proporciona una definición de cada estado.

Estado detallado de la verificación de estado Significado Estado básico
HEALTHY Se puede acceder al extremo y este cumple con los requisitos que definió la verificación de estado. HEALTHY
UNHEALTHY Se puede acceder al extremo, pero este no cumple con los requisitos que definió la verificación de estado. UNHEALTHY
DRAINING Se está vaciando el extremo. Se permite que se completen las conexiones existentes con el extremo, pero se rechazan las nuevas. Se considera que el extremo es HEALTHY. HEALTHY
TIMEOUT No se puede acceder al extremo. En función del tipo de verificación de estado, puede suceder que no se pueda establecer una conexión con el extremo o que el servidor no haya respondido en el tiempo de espera especificado. Se considera que el extremo es UNHEALTHY. UNHEALTHY
UNKNOWN El sistema de verificación de estado reconoce el extremo, pero se desconoce su estado. El extremo se considera UNHEALTHY. UNHEALTHY

Hay varios verificadores de estado que sondean cada extremo. Google Cloud anula la duplicación de las entradas antes de que se realice el registro para que solo se generen registros únicos.

Si se reinicia un verificador de estado, en ocasiones, es posible que veas el cambio de estado registrado de UNKNOWN a uno de los estados conocidos que se mencionaron antes, a pesar de que el estado del extremo no cambió. Google Cloud usa la heurística de mejor esfuerzo para suprimir las entradas de registro.

Si usas el desvío de conexiones, los registros de verificaciones de estado no se generan con el estado DRAINING del extremo. Esto se debe a que los registros de verificación de estado reflejan los resultados que captan los sondeos de verificación de estado, y el vaciado de conexiones no afecta los resultados que capta el sondeo. El vaciado de conexiones solo informa al balanceador de cargas que el estado nuevo es DRAINING y anula de forma efectiva el estado verdadero del extremo que capta el verificador de estado.

Puedes interactuar con los registros mediante la API de Cloud Logging. La API proporciona formas de filtrar interactivamente los registros que tienen configurados campos específicos y de exportar los que coincidan con Cloud Logging, Cloud Storage, BigQuery o Pub/Sub. Para obtener más información sobre la API de Cloud Logging, consulta Descripción general de la API de Cloud Logging.

Entrada de registro de la verificación de estado

LogEntry jsonPayload se propaga con un campo healthCheckProbeResult que contiene la siguiente información:

Campo Tipo Descripción
ipAddress string Es la dirección IP interna principal que se asocia con la interfaz de red principal de cada VM de backend. Esta es una string legible.
healthCheckProtocol enum(HealthCheckProtocol) El protocolo de verificación de estado que se usa para verificar el estado del extremo. Ejemplos: TCP, HTTP y HTTPS
healthState enum(HealthState) El estado actual del extremo: HEALTHY o UNHEALTHY.
previousHealthState enum(HealthState) El estado anterior del extremo: HEALTHY o UNHEALTHY.
detailedHealthState enum(DetailedHealthState) El estado actual detallado del extremo. Para obtener una lista de las posibilidades, consulta Estados de las verificaciones de estado.

No es compatible con las verificaciones de estado distribuidas de Envoy para los NEG híbridos y los NEG de Internet regionales.

previousDetailedHealthState enum(DetailedHealthState) El estado anterior detallado del extremo. Para obtener una lista de las posibilidades, consulta Estados de las verificaciones de estado.

No es compatible con las verificaciones de estado distribuidas de Envoy para los NEG híbridos y los NEG de Internet regionales.

probeRequest string

En el caso de los protocolos HTTP, HTTPS y HTTP/2, esta es la ruta de solicitud de URL (el campo requestPath del archivo de configuración del recurso).

En el caso de TCP o SSL, es la string configurada opcional que se envía una vez que se establece la conexión de verificación de estado (el campo request del archivo de configuración del recurso).

No es compatible con las verificaciones de estado distribuidas de Envoy para los NEG híbridos y los NEG de Internet regionales.

probeCompletionTimestamp google.protobuf.Timestamp Es la marca de tiempo de la finalización del sondeo.
connectLatency google.protobuf.Duration Es el tiempo que se dedicó a la configuración de la conexión para los protocolos de verificación de estado orientados a la conexión (TCP, SSL, HTTP, HTTPS y HTTP/2).

No es compatible con las verificaciones de estado distribuidas de Envoy para los NEG híbridos y los NEG de Internet regionales.

responseLatency google.protobuf.Duration Es la latencia entre la solicitud y la respuesta, que mide el sondeador.

No es compatible con las verificaciones de estado distribuidas de Envoy para los NEGs híbridos y los NEGs de Internet regionales.

probeResultText string Es un texto descriptivo relacionado con el resultado del sondeo. Podría incluir mensajes como “Se agotó el tiempo de espera de la conexión” o “Respuesta HTTP: la puerta de enlace es incorrecta”. O bien, podría estar vacío.

No es compatible con las verificaciones de estado distribuidas de Envoy para los NEG híbridos y los NEG de Internet regionales.

probeSourceIp string Es la dirección IP desde la que se envió el sondeo de verificación de estado.

Para las verificaciones de estado distribuidas de Envoy, esto corresponde a la dirección IP del proxy de la subred de solo proxy.

targetIp string Es la dirección IP de destino del sondeo. Puede ser diferente de ipAddress. Esta dirección depende del tipo del balanceador de cargas. Para obtener más información, consulta Destino de paquetes de sondeo en la descripción general de las verificaciones de estado.
targetPort int Es el puerto que constituía el destino del sondeo. Puede ser el puerto predeterminado del sondeo o el que especificaste cuando creaste la verificación de estado.

Filtros de ejemplo

En esta sección, se proporcionan ejemplos de filtros de registro comunes.

Buscar todos los resultados de verificaciones de estado de un grupo de instancias específico

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 verificaciones de estado de un 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"

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

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

Buscar todos los extremos que tenían el estado HEALTHY, pero que ahora tienen el estado TIMEOUT

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

Buscar los registros de estado de un 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"

Limitaciones

  • Solo se generan registros para las transiciones de estado de los extremos.
  • No se admiten las verificaciones de estado heredadas.
  • Tampoco se admiten los grupos de destino.
  • Los registros no se generan cuando el estado del extremo es UNKNOWN.
  • En el caso de las migraciones de VM, es posible que no veas ninguna entrada de registro generada cuando el estado del extremo pasa al estado UNHEALTHY.
  • No se generan registros cuando se borran los extremos. Por ejemplo, cuando detienes una VM.

¿Qué sigue?