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
En la Google Cloud consola, ve a la página Comprobaciones de estado.
Haz clic en Crear comprobación del estado.
En Registros, selecciona Activado.
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
.
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
En la Google Cloud consola, ve a la página Comprobaciones de estado.
Haz clic en el nombre de la comprobación del estado.
Haz clic en
Editar.En Registros, selecciona Activado.
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
En la Google Cloud consola, ve a la página Comprobaciones de estado.
Haz clic en el nombre de la comprobación del estado.
Haz clic en
Editar.En Registros, selecciona Desactivado.
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
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.
Para ver todos los registros, en el menú Recurso, selecciona
GCE Instance Group
oNetwork Endpoint Group
, en función del tipo de backend.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:
- El servidor está dando una respuesta incorrecta, por lo que el endpoint se considera
UNHEALTHY
. - El servidor deja de responder y el nuevo estado es
TIMEOUT
. - El balanceador de carga sigue considerando que el punto final está
UNHEALTHY
porque el estadoTIMEOUT
detallado se corresponde con el estadoUNHEALTHY
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 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 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 |
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
- Consulta información conceptual sobre las comprobaciones del estado.
- Crea una comprobación del estado.
- Consulta información sobre Logging.