Supervisa los cambios de estado de las VMs


En este documento, se describe cómo ver y leer las entradas de registro de cambios de estado de una VM en un grupo de instancias administrado (MIG) y se proporcionan casos de uso específicos para ayudarte a supervisar las VMs en el grupo.

Si configuraste la verificación de estado basada en la aplicación para el MIG, Compute Engine escribe una entrada de registro cada vez que cambia el estado de una instancia administrada, por ejemplo, cuando la instancia pasa del estado HEALTHY al UNHEALTHY. Estas entradas de registro te ayudan a supervisar y depurar el estado de cada instancia administrada, así como el estado general del MIG.

Antes de empezar

  • Revisa Configura la comprobación de estado y la reparación automática.
  • Si aún no lo hiciste, configura la autenticación. La autenticación es el proceso mediante el cual se verifica tu identidad para acceder a los servicios y las API de Google Cloud. Para ejecutar código o muestras desde un entorno de desarrollo local, puedes autenticarte en Compute Engine de la siguiente manera.

    Selecciona la pestaña para saber cómo planeas usar las muestras en esta página:

    Consola

    Cuando usas la consola de Google Cloud para acceder a los servicios y las APIs de Google Cloud, no necesitas configurar la autenticación.

    gcloud

    1. Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init
    2. Configura una región y una zona predeterminadas.

    REST

    Para usar las muestras de la API de REST en esta página en un entorno de desarrollo local, debes usar las credenciales que proporcionas a la CLI de gcloud.

      Instala Google Cloud CLI y, luego, inicializa la ejecución del siguiente comando:

      gcloud init

Precios

Compute Engine usa Cloud Logging para generar entradas de registro para los cambios de estado de las instancias administradas. Cloud Logging te proporciona una asignación gratuita por mes, después de lo cual el precio de las entradas de registro se calcula según el volumen de datos. Para obtener más información, consulta el resumen de precios de Cloud Logging.

Para evitar los costos de registro, puedes inhabilitar los registros de cambios de estado.

Visualiza los registros de cambios de estado

Mientras los registros de cambios de estado permanezcan habilitados, Compute Engine escribirá una entrada de registro en los registros de la plataforma cada vez que cambie el estado de una instancia administrada. Puedes ver estos registros de un proyecto, de un MIG específico o de una instancia administrada específica.

Visualiza los registros de un proyecto o un MIG

Para ver las entradas de registro de un proyecto o un MIG específico, usa la consola de Google Cloud, gcloud CLI o REST.

Consola

  1. Ve al Explorador de registros en la consola de Google Cloud.

    Ir al Explorador de registros

  2. Establece los siguientes parámetros de búsqueda:

    • Recurso: administrador de grupo de instancias de GCE
    • Nombre de registro - instance_group_manager_events
  3. Como alternativa, puedes copiar la siguiente consulta en el compilador de Consultas.

    resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:*
    

    Para limitar tu búsqueda a un grupo de instancias administrado específico, usa la siguiente consulta:

    resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    resource.labels.instance_group_manager_name="MIG_NAME"
    
  4. Haz clic en Ejecutar consulta. Los resultados de la consulta mostrarán los registros.

gcloud

Usa el comando gcloud logging read para ver y leer las entradas de registro.

Para ver todos los registros de cambios de estado en tu proyecto, usa el siguiente comando:

gcloud logging read 'resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:*'\
    --limit 10

Para ver todos los registros de cambios de estado de un grupo de instancias administrado específico, usa el siguiente comando:

gcloud logging read 'resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    resource.labels.instance_group_manager_name="MIG_NAME"' \
    --limit 10

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID de tu proyecto.
  • MIG_NAME: Es el MIG en el que deseas ver los registros de cambios de estado.

REST

Para ver los registros de cambios de estado, haz una solicitud POST al método entries.list.

Para ver todos los registros de cambios de estado en tu proyecto, usa el siguiente comando:

curl -H "Content-Type: application/json" -H "Authorization: Bearer OAUTH2_TOKEN" -X POST -d \
'{"filter":
    "resource.type=gce_instance_group_manager AND
    logName=projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events AND
    jsonPayload.instanceHealthStateChange:*",
    "orderBy": "timestamp desc",
    "pageSize": 10,
    "resourceNames": ["projects/PROJECT_ID"]
}' https://logging.googleapis.com/v2/entries:list?alt=json

Para ver los registros de cambios de estado de un grupo de instancias administrado específico, usa el siguiente comando:

curl -H "Content-Type: application/json" -H "Authorization: Bearer OAUTH2_TOKEN" -X POST -d \
'{"filter":
    "resource.type=gce_instance_group_manager AND
    logName=projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events AND
    jsonPayload.instanceHealthStateChange:* AND
    resource.labels.instance_group_manager_name=MIG_NAME",
    "orderBy": "timestamp desc",
    "pageSize": 10,
    "resourceNames": ["projects/PROJECT_ID"]
}' https://logging.googleapis.com/v2/entries:list?alt=json

Reemplaza lo siguiente:

  • OAUTH2_TOKEN: Es el token de acceso de la aplicación. Para hacer pruebas locales, puedes usar el comando gcloud auth print-access-token para generar un token.
  • PROJECT_ID: Es el ID de tu proyecto.
  • MIG_NAME: Es el MIG en el que deseas ver los registros de cambios de estado.

Para obtener más información sobre cada entrada de registro, consulta Formato de entradas de registro.

Según si deseas archivar los registros, usarlos para su análisis, transmitirlos a otras aplicaciones o activar una función de Cloud Functions, puedes exportar los registros a destinos. como Cloud Storage, BigQuery o Pub/Sub. Para obtener más información sobre la exportación de registros, consulta Descripción general de las exportaciones de registros.

Visualiza los registros de cambios de estado de una VM específica

Para ver las entradas de registro de una instancia administrada específica, usa la consola de Google Cloud, gcloud CLI o REST.

Consola

  1. Ve al Explorador de registros en la consola de Google Cloud.

    Ir al Explorador de registros

  2. Copia la siguiente consulta en el compilador de consultas.

    resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    labels."compute.googleapis.com/instance_name"="INSTANCE_NAME"
    
  3. Haz clic en Ejecutar consulta.

gcloud

Usa el comando gcloud logging read para ver y leer las entradas de registro.

Para ver los registros de cambios de estado de una instancia administrada, usa el siguiente comando:

gcloud logging read 'resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    labels."compute.googleapis.com/instance_name"="INSTANCE_NAME"' \
    --limit 10

Reemplaza lo siguiente:

  • PROJECT_ID: Es el ID de tu proyecto.
  • INSTANCE_NAME: Es la instancia administrada en la que deseas ver los registros de cambios de estado.

REST

Para ver los registros de cambios de estado de una instancia administrada, haz una solicitud POST al método entries.list.

curl -H "Content-Type: application/json" -H "Authorization: Bearer OAUTH2_TOKEN" -X POST -d \
'{"filter":
    "resource.type=gce_instance_group_manager AND
        logName=projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events AND
        jsonPayload.instanceHealthStateChange:* AND
        labels.\"compute.googleapis.com/instance_name\"=\"INSTANCE_NAME\"",
    "orderBy": "timestamp desc",
    "pageSize": 10,
    "resourceNames": ["projects/PROJECT_ID"]
}' https://logging.googleapis.com/v2/entries:list?alt=json

Reemplaza lo siguiente:

  • OAUTH2_TOKEN: Es el token de acceso de la aplicación. Para hacer pruebas locales, puedes usar el comando gcloud auth print-access-token para generar un token.
  • PROJECT_ID: Es el ID de tu proyecto.
  • INSTANCE_NAME: Es la instancia administrada en la que deseas ver los registros de cambios de estado.

Formato de las entradas de registro

Las entradas de registro de cambios de estado de las instancias contienen información útil para supervisar y depurar el estado de tus instancias administradas.

Los registros se escriben en registros de la plataforma con el nombre de registro instance_group_manager_events. Los registros de la plataforma te ayudan a depurar y solucionar problemas.

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

Las entradas de registro de cambios de estado 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 nombre y el ID del MIG, el número del proyecto y la marca de tiempo, entre otros datos
  • Campos específicos del estado de la instancia

Dentro de cada entrada de registro de cambios de estado, el campo jsonPayload.instanceHealthStateChange contiene la siguiente información:

Campo Descripción
instance La URL de la instancia, según el ID del proyecto de string y el nombre de la instancia
instanceWithId URL de la instancia, según su ID numérico del proyecto y el ID de instancia
ipAddress Dirección IP de la instancia, según lo sondea la verificación de estado
network URL del recurso de red para esta instancia, basada en el ID del proyecto de la string y el nombre de la red
networkWithId La URL del recurso de red para esta instancia, basada en el ID numérico del proyecto y el ID de la red.
healthCheck La URL de la verificación de estado que está configurada para el grupo de instancias administrado
previousDetailedHealthState Estado anterior de la instancia. Para obtener la lista de estados posibles, consulta Estados
detailedHealthState El estado actual de la instancia. Para obtener la lista de estados posibles, consulta Estados
notificationTime Marca de tiempo del momento en que se produjo el cambio de estado

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.

Se aplica la codificación UTF-8 a los campos de registro. Se reemplazan los caracteres que no son UTF-8 por signos de interrogación.

Ejemplo de entrada de registro

En el siguiente ejemplo, se muestra el cambio de estado de una instancia de VM de HEALTHY a UNHEALTHY:

  {
    "logName": "projects/my-project/logs/compute.googleapis.com%2Finstance_group_manager_events",
    "resource": {
      "type": "gce_instance_group_manager",
      "labels": {
        "instance_group_manager_id": "3138236342290985981",
        "instance_group_manager_name": "my-mig",
        "project_id": "my-project",
        "location": "europe-west3"
      }
    },
    "labels": {
      "compute.googleapis.com/instance_id": "6498902454451155884",
      "compute.googleapis.com/instance_location": "europe-west3-a",
      "compute.googleapis.com/instance_name": "my-mig-a"
    },
    "timestamp": "2019-11-19T15:47:57.127Z",
    "severity": "INFO",
    "jsonPayload": {
      "@type": "type.googleapis.com/compute.InstanceGroupManagerEvent",
      "instanceHealthStateChange": {
        "instance": "projects/my-project/zones/europe-west3-a/instances/my-mig-a",
        "instanceWithId": "projects/123456/zones/europe-west3-a/instances/6498902454451155884",
        "ipAddress": "10.0.0.4",
        "network": "projects/my-project/global/networks/net-1",
        "networkWithId": "projects/123456/global/networks/456",
        "healthCheck": "projects/my-project/global/healthChecks/my-mig-health-check",
        "previousDetailedHealthState": "HEALTHY",
        "detailedHealthState": "UNHEALTHY",
        "notificationTime": "2019-11-19T15:47:56.444Z"
      }
    },
    "receiveTimestamp": "2019-11-19T15:47:57.296439184Z"
  }
  

Casos de uso

Puedes usar los registros de cambios de estado en las siguientes situaciones de supervisión o depuración:

  • Descubre la frecuencia con la que una instancia de VM en particular cambió de estado con el paso del tiempo.
  • Evalúa la frecuencia con la que un MIG experimentó cambios en el estado de las instancias.
  • Identifica las instancias de VM problemáticas que suelen ir a UNHEALTHY.
  • Averigua qué causó un intento de reparación automática.
  • Averigua si un intento de reparación automática se realizó de forma correcta para una instancia específica de VM.
  • Ajusta la configuración de la verificación de estado para una aplicación a través de la determinación de un retraso inicial adecuado para realizar la reparación automática.

Supervisa los cambios de estado de una VM

Puedes supervisar la frecuencia con la que el estado de una instancia de VM cambia a través de la creación de una métrica que realice un seguimiento de los cambios de estado de esa VM específica.

Para crear la métrica y supervisar los cambios, haz lo siguiente:

  1. Ve al Explorador de registros en la consola de Google Cloud.

    Ir al Explorador de registros

  2. Escribe la siguiente consulta en el compilador de consultas, a través del ID del proyecto y el nombre de la instancia.

    resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    labels."compute.googleapis.com/instance_name"="INSTANCE_NAME"
    
  3. En la sección Resultados de la consulta, haz clic en Acciones y, luego, en Crear métrica.

  4. En la página Crear métrica de registros, haz lo siguiente:

    1. Configura el Tipo de métrica como Contador.
    2. Escribe un Nombre de métrica de registro, por ejemplo, health-mig-xyzq.

      En la sección Filtro de compilación, se muestra la consulta de registro del Explorador de registros. También puedes configurar el filtro de métrica para incluir solo los estados disruptivos, como UNHEALTHY y TIMEOUT. Para ello, agrega severity>=WARNING al filtro.

    3. En Etiquetas, haz clic en Agregar etiqueta.

    4. Escribe un Nombre de etiqueta, por ejemplo health_state.

    5. Configura el Tipo de etiqueta como STRING.

    6. Configura el Nombre del campo como jsonPayload.instanceHealthStateChange.detailedHealthState. Esto te permitirá distinguir entre diferentes cambios de estado.

    7. Haz clic en Listo para agregar la etiqueta.

    8. Haz clic en Crear métrica.

  5. Ve a la página Métricas basadas en registros y busca la métrica recién creada.

  6. Haz clic en el menú en la fila de la métrica y elige Ver en el Explorador de métricas. Se abre el Explorador de métricas y se muestra el grafico que representa los cambios de estado de la instancia de VM que especificaste en la consulta.

Supervisa los cambios de estado de todas las VMs en un MIG

Puedes supervisar los cambios de estado de todas las instancias administradas a través de la creación de una métrica que realice un seguimiento de los cambios de estado de las instancias administradas.

Para crear la métrica y supervisar los cambios, haz lo siguiente:

  1. Ve al Explorador de registros en la consola de Google Cloud.

    Ir al Explorador de registros

  2. Escribe la siguiente consulta en el compilador de consultas a través del ID del proyecto y el nombre del grupo de instancias administrado.

    resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    resource.labels.instance_group_manager_name="MIG_NAME"
    
  3. En la sección Resultados de la consulta, haz clic en Acciones y, luego, en Crear métrica.

  4. En la página Crear métrica de registros, haz lo siguiente:

    1. Configura el Tipo de métrica como Contador.
    2. Escribe un Nombre de métrica de registro, por ejemplo, health-mig-xyzq.
    3. En Etiquetas, haz clic en Agregar etiqueta.
    4. Escribe un Nombre de etiqueta, por ejemplo health_state.
    5. Configura el Tipo de etiqueta como STRING.
    6. Configura el Nombre del campo como jsonPayload.instanceHealthStateChange.detailedHealthState. Esto te permitirá distinguir entre diferentes cambios de estado.
    7. Haz clic en Listo para agregar la etiqueta.
    8. Haz clic en Crear métrica.
  5. Ve a la página Métricas basadas en registros y busca la métrica recién creada.

  6. Haz clic en el menú en la fila de la métrica y elige Ver en el Explorador de métricas. Se abre el Explorador de métricas y muestra el gráfico que representa los cambios de estado de todas las instancias de VM en el grupo de instancias administrado que especificaste en la consulta.

Identifica las VMs que suelen estar en mal estado

Puedes identificar las VMs problemáticas que suelen ir a UNHEALTHY si creas una métrica que realice un seguimiento de los cambios de estado de todas las instancias de VM en tu MIG y agrupa la métrica por instancias.

Para crear la métrica y agrupar por instancias, haz lo siguiente:

  1. Ve al Explorador de registros en la consola de Google Cloud.

    Ir al Explorador de registros

  2. Escribe la siguiente consulta en el compilador de consultas a través del ID del proyecto y el nombre del grupo de instancias administrado.

    resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    resource.labels.instance_group_manager_name="MIG_NAME"
    
  3. En la sección Resultados de la consulta, haz clic en Acciones y, luego, en Crear métrica.

  4. En la página Crear métrica de registros, haz lo siguiente:

    1. Configura el Tipo de métrica como Contador.
    2. Escribe un Nombre de métrica de registro, por ejemplo, health-mig-xyzq.
    3. En Etiquetas, haz clic en Agregar etiqueta.
    4. Escribe un Nombre de etiqueta, por ejemplo health_state.
    5. Configura el Tipo de etiqueta como STRING.
    6. Configura el Nombre del campo como jsonPayload.instanceHealthStateChange.detailedHealthState. Esto te permitirá distinguir entre diferentes cambios de estado.
    7. Haz clic en Listo para agregar la etiqueta.
    8. De manera similar, agrega una segunda etiqueta, por ejemplo instance, con el Nombre del campo configurado como jsonPayload.instanceHealthStateChange.instance.
    9. Haz clic en Crear métrica.
  5. Ve a la página Métricas basadas en registros y busca la métrica recién creada.

  6. Haz clic en el menú en la fila de la métrica y elige Ver en el Explorador de métricas. Se abre el Explorador de métricas y muestra el gráfico que representa los cambios de estado de todas las instancias de VM en el grupo de instancias administrado que especificaste en la consulta.

  7. Configura Agrupar por en instance para ver la cantidad total de cambios de estado de cada instancia.

Las instancias con más cambios de estado en conjunto son las que están en mal estado.

Verifica la causa de un intento de reparación automática

Para averiguar qué causó un intento de reparación automática, filtra los registros de las operaciones de repair de una instancia de VM determinada.

Para filtrar las operaciones de reparación, haz lo siguiente:

  1. Ve al Explorador de registros en la consola de Google Cloud.

    Ir al Explorador de registros

  2. Escribe la siguiente consulta en el compilador de consultas, a través del ID del proyecto y el nombre de la instancia.

    resource.type="gce_instance" AND
    logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event" AND
    protoPayload.methodName="compute.instances.repair.recreateInstance" AND
    protoPayload.resourceName=~"/INSTANCE_NAME$"
    
  3. Haz clic en Ejecutar consulta. En los resultados de la consulta, se mostrarán todos los intentos de reparación automática en la VM con el motivo de la reparación automática en protoPayload.status.message.

Comprueba si la reparación automática se realizó de forma correcta en una VM

Puedes averiguar si un intento de reparación automática se realizó de forma correcta para una instancia de VM a través del filtrado de los registros de las operaciones repair y los cambios de estado por nombre de instancia de VM. Si el estado de la instancia cambió a HEALTHY después de una operación de reparación, verás un registro de cambios de estado correspondiente. Sigue estos pasos:

  1. Ve al Explorador de registros en la consola de Google Cloud.

    Ir al Explorador de registros

  2. Escribe la siguiente consulta en el compilador de consultas, a través del ID del proyecto y el nombre de la instancia.

    (resource.type="gce_instance" AND
    logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Fsystem_event" AND
    protoPayload.methodName="compute.instances.repair.recreateInstance" AND
    protoPayload.resourceName=~"/INSTANCE_NAME$")
    OR
    (resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    labels."compute.googleapis.com/instance_name"="INSTANCE_NAME")
    

    En la primera parte de la consulta, se muestran las operaciones de reparación de la instancia, que indican que la reparación automática de MIG activó la recreación para que la instancia volviera a estar en buen estado. En la segunda parte de la consulta, se muestran todos los cambios en el estado de la instancia de VM.

    En los resultados de la consulta, el evento de cambio de estado con detailedHealthState configurado como HEALTHY poco después de una operación de reparación muestra que el intento de reparación automática se realizó de forma correcta.

Determina el valor de retraso inicial de un MIG

Determinar un valor de retraso inicial adecuado para la reparación automática de MIG es más fácil con el registro de estado de la instancia de VM. Puedes usar registros para observar el tiempo que transcurre desde que finalizó la operación instances.insert hasta que se recibió el primer indicador de buen estado para un conjunto de instancias de un grupo. Este intervalo de tiempo revela cuánto tiempo tardan las instancias en iniciarse por completo. Como algunas VMs pueden iniciarse de forma más lenta que otras, Google recomienda agregar un margen al tiempo de inicialización observado (desde la operación de inserción hasta el estado en buen estado) cuando se especifica el retraso inicial en la política de reparación automática.

Para medir el tiempo entre que la operación de inserción de instancia y la instancia se recuperan, ejecuta una consulta para las operaciones insert y los registros de cambios de estado por nombre de instancia de VM. Usa marcas de tiempo de ambas operaciones para calcular el tiempo de inicialización de la instancia. Sigue estos pasos:

  1. Ve al Explorador de registros en la consola de Google Cloud.

    Ir al Explorador de registros

  2. Escribe la siguiente consulta en el compilador de consultas, a través del ID del proyecto y el nombre de la instancia.

    (resource.type="gce_instance" AND
    logName="projects/PROJECT_ID/logs/cloudaudit.googleapis.com%2Factivity" AND
    protoPayload.request.@type="type.googleapis.com/compute.instances.insert" AND
    operation.last="true" AND
    protoPayload.resourceName=~"/INSTANCE_NAME$") OR
    (resource.type="gce_instance_group_manager" AND
    logName="projects/PROJECT_ID/logs/compute.googleapis.com%2Finstance_group_manager_events" AND
    jsonPayload.instanceHealthStateChange:* AND
    labels."compute.googleapis.com/instance_name"="INSTANCE_NAME")
    

    En la primera parte de la consulta, se muestra la finalización de la operación de inserción de VM. En la segunda parte, se muestran todos los cambios de estado de la VM.

    En los resultados de la consulta, la marca de tiempo del evento de cambio de estado con detailedHealthState configurado como HEALTHY poco después de la operación de inserción revela el tiempo necesario para que esta VM se inicie por completo.

  3. Repite los pasos para algunas VM más para obtener un mejor valor aproximado del parámetro de retraso inicial.