En este documento, se describen las causas comunes de apagados y reinicios inesperados de las instancias de máquina virtual (VM) y cómo evitarlos.
Los apagados y reinicios de la VM pueden ser ocasionados por eventos del sistema o actividades de administrador. Los sistemas de Google o el sistema operativo de tu VM generan los apagados y reinicios de los eventos del sistema. Los apagados y reinicios de la actividad de administrador se generan mediante una llamada a la API generada por el usuario o la cuenta de servicio. Se registran todos los apagados y reinicios, excepto los reinicios que se inician desde la VM.
Antes de empezar
-
Configura la autenticación si aún no lo hiciste.
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.
Select the tab for how you plan to use the samples on this page:
Console
When you use the Google Cloud console to access Google Cloud services and APIs, you don't need to set up authentication.
gcloud
-
Install the Google Cloud CLI, then initialize it by running the following command:
gcloud init
- Set a default region and zone.
En la consola de Google Cloud, ve a la página Explorador de registros.
En el campo Consulta, escribe la siguiente consulta:
resource.type="gce_instance" "VM_NAME" logName:("logs/cloudaudit.googleapis.com%2Fsystem_event" OR "logs/cloudaudit.googleapis.com%2Factivity")
Reemplaza
VM_NAME
por el nombre de la VM que se cerró o reinició.Si el evento que buscas ocurrió hace más de una hora, establece un período personalizado haciendo clic en el símbolo del reloj y, luego, escribe un rango personalizado.
Haga clic en Run query. Los resultados se muestran en la sección Resultados de la búsqueda.
Haz clic en la flecha desplegable
junto a cada resultado para mostrar información detallada.Consulta Revisa los registros de auditoría de Cloud para obtener más información sobre los campos
method
yprincipalEmail
que están asociados con cierres y reinicios, y qué puedes hacer para evitarlos.Visualiza los Registros de auditoría de Cloud con el comando
gcloud logging read
:gcloud logging read --freshness=TIME 'resource.type="gce_instance" "VM_NAME" logName:("logs/cloudaudit.googleapis.com%2Fsystem_event" OR "logs/cloudaudit.googleapis.com%2Factivity")'
Reemplaza lo siguiente:
TIME
: es la cantidad de tiempo que deseas consultar. Por ejemplo,1h
consulta las entradas de registro en la última hora. Para obtener más información sobre los formatos de fecha y hora, consulta gcloud topic datetime.VM_NAME
: es el nombre de la VM que se cierra o reinicia.
Se muestran los resultados.
Consulta Revisa los registros de auditoría de Cloud para obtener más información sobre los campos
method
yprincipalEmail
que están asociados con cierres y reinicios, y qué puedes hacer para evitarlos.Revisa los campos
method
de los registros de auditoría de Cloud y compáralos con los métodos que se detallan en la siguiente tabla.Método Tipo de cierre Descripción compute.instances.repair.recreateInstance
Evento del sistema Si tu VM pertenece a un grupo de instancias administrado (MIG), el MIG vuelve a crear la VM si el estado de la VM cambia de
RUNNING
y el MIG no inició el cambio en el estado.Dentro de los cambios del estado de la instancia que el MIG no inicia, se incluyen los siguientes:
- Fallas de hardware
- Finalización de una instancia interrumpible.
- Eventos de mantenimiento de infraestructura cuando la instancia de VM no está configurada para migrar en vivo
- Borra una instancia de MIG con uno de los siguientes métodos:
- El método
instances.delete
de la API - El comando
gcloud compute instances delete
- El método
compute.instances.hostError
Evento del sistema Un error de host (
compute.instances.hostError
) significa que hubo un problema de hardware o software en la máquina física que aloja tu VM que causó la falla. Un error de host que implica una falla total de hardware o, también, otros problemas de hardware podría evitar la migración en vivo de la VM. Si la VM está configurada para reiniciarse de manera automática, que es la configuración predeterminada, Google reinicia la VM, por lo general, dentro de los tres minutos posteriores a la detección del error. Según el problema, el reinicio puede tardar hasta 5.5 minutos.VMs con discos SSD locales
Si se produce un error de host en una VM que tiene uno o más discos SSD locales conectados, Compute Engine vuelve a conectarse a la VM y preservar los datos del SSD local. Mientras Compute Engine recupera tu VM y el disco SSD local, el sistema host y el disco subyacente no responden.
Puedes especificar cuánto tiempo dedica Compute Engine a recuperar datos de SSD locales configurando el tiempo de espera de recuperación de SSD local.
Para obtener más información sobre cómo se comportan los discos SSD locales cuando se produce un error de host, consulta la persistencia de datos de SSD local.
VMs que no responden
En ocasiones, una VM puede dejar de responder antes de que se detecte un error de host. Puedes reducir el tiempo que Compute Engine espera para reiniciar o finalizar la VM si configuras el tiempo de espera de recuperación de errores del host (Vista previa). Para obtener más información, consulta Configura políticas de disponibilidad.
Las fallas físicas de hardware y software pueden ocurrir de forma ocasional, pero son casos poco frecuentes. Para proteger tus aplicaciones y servicios de estos eventos del sistema que pueden ser disruptivos, revisa los siguientes recursos:
- Diseña sistemas sólidos
- Patrones de apps escalables y resilientes
- Crea grupos de instancias administrados
Google también ofrece servicios administrados como App Engine y el entorno flexible de App Engine.
compute.instances.automaticRestart
Evento del sistema Este evento ocurre después de un evento
hostError
oterminateOnHostMaintenance
si la política de mantenimiento del hostautomaticRestart
de la VM se establece entrue
. En los registros, una entrada de registrohostError
oterminateOnHostMaintenance
precede a este registro.Si deseas cambiar la política de mantenimiento del host de tu VM, consulta Actualiza las opciones de una instancia.
compute.instances.guestTerminate
Evento del sistema El sistema operativo de la VM inició el cierre. compute.instances.terminateOnHostMaintenance
Evento del sistema Si configuras la política de mantenimiento del host
onHostMaintenance
de la VM comoTERMINATE
, Compute Engine detiene la VM cuando hay un evento de mantenimiento en el que Google debe transferir la VM a otro host.Si deseas cambiar la política
onHostMaintenance
de tu VM, consulta Actualiza opciones para una instancia.compute.instances.preempted
Evento del sistema Compute Engine interrumpió tu VM Spot o VM interrumpible heredada:
- Cuando Compute Engine interrumpe una VM Spot, Compute Engine detiene o borra la VM Spot según su acción de finalización. Las VM Spot no tienen un tiempo de ejecución máximo.
- Cuando Compute Engine interrumpe una VM interrumpible, Compute Engine detiene la VM después de un tiempo de ejecución máximo de 24 horas. Para evitar estas limitaciones, usa las VM Spot.
Las VM Spot y VM interrumpibles son una capacidad de exceso de Compute Engine, por lo que Compute Engine podría interrumpirlas cada vez que se necesite capacidad en otro lugar. Puedes ayudar a mitigar los efectos de la interrupción si sigues las prácticas recomendadas. Como alternativa, si necesitas VM con entornos de ejecución controlados por el usuario, crea VM estándar.
compute.instances.stop
Actividad del administrador Un usuario o una cuenta de servicio detuvo la VM.
Continúa con el paso siguiente para identificar al usuario o la cuenta de servicio que detuvo tu VM. Para obtener información sobre cómo reiniciar tu VM, consulta Reinicia una instancia detenida.
compute.instances.delete
Actividad del administrador Un usuario o una cuenta de servicio borró tu VM.
Continúa con el paso siguiente para identificar al usuario o la cuenta de servicio que borró tu VM. Para obtener más información sobre cómo crear una VM nueva, consulta Crea y, luego, inicia una VM.
compute.instances.insert
Actividad del administrador Un usuario o una cuenta de servicio creó tu VM.
Continúa con el paso siguiente para identificar al usuario o la cuenta de servicio que creó tu VM. Para obtener más información sobre cómo crear una VM nueva, consulta Crea y, luego, inicia una VM.
compute.instances.reset
Actividad del administrador Un usuario o una cuenta de servicio restablece tu VM.
Continúa con el paso siguiente para identificar al usuario o la cuenta de servicio que detuvo tu VM.
Revisa los campos
principalEmail
de los registros de auditoría de Cloud para identificar al usuario o servicio que inició el cierre o el reinicio. En la siguiente tabla, se incluyen servicios administrados por Google comunes que inician cierres o reinicios.Correo electrónico Descripción system@google.com
Un evento del sistema provocó el cierre o el reinicio. project-number@cloudservices.gserviceaccount.com
Un agente de servicio inició el cierre.
Para determinar desde qué proyecto inició el cierre del servicio, revisa el
project-number
del agente de servicio.Para determinar qué servicio de Google realizó la solicitud, revisa el campo
protoPayload.requestMetadata.callerSuppliedUserAgent
.Si un usuario activó el cierre o el reinicio, su dirección de correo electrónico aparecerá en el campo
principalEmail
. Por ejemplo,cloudysanfrancisco@gmail.com
Los administradores pueden impedir que los usuarios cambien el estado de las VM de los proyectos si cambian los permisos de Identity and Access Management en las cuentas de usuario. Para obtener más información, consulta Otorga, cambia y revoca el acceso a los recursos.
En la consola de Google Cloud, ve a la página Métricas basadas en registros.
Haga clic en Crear métrica.
- Selecciona
Counter
. - Deja la Distribución en el parámetro de configuración predeterminado sin elegir.
- Nombre de la métrica basada en registros:
vm-lifecycle-events
. Debes usar este nombre exacto para que el panel funcione correctamente. - Descripción: (Opcional) escribe una descripción para esta métrica.
- Unidades:
1
En la sección Selección de filtro, especifica lo siguiente:
- En el menú Seleccionar proyecto o bucket de registros, elige: Registros del proyecto
- En Crear filtro, escribe lo siguiente:
resource.type = "gce_instance" AND log_id("cloudaudit.googleapis.com/activity") OR log_id("cloudaudit.googleapis.com/system_event") operation.first="true"
En la sección Etiquetas, haz clic en Agregar etiqueta.
Especifica lo siguiente:
- Nombre de etiqueta:
method
- Tipo de etiqueta:
STRING
- Nombre del campo:
protoPayload.methodName
- Expresión regular:
(recreateInstance|hostError|automaticRestart|guestTerminate|terminateOnHostMaintenance|preempted|insert|stop|delete|reset|start)
- Nombre de etiqueta:
Haz clic en Listo.
Haga clic en Crear métrica.
- Realiza una operación
stop
ystart
en cualquier VM existente o crea una VM nueva para realizar pruebas. Abre Paneles en la consola de Google Cloud.
En la pestaña Lista de paneles, abre el panel
GCE VM Lifecycle Events Monitoring
.Elige la VM del menú desplegable Nombre.
Limita las series temporales a un período relevante.
Para ver más formas de filtrar el panel, consulta cómo Agregar un filtro temporal.
En el gráfico Cronograma del ciclo de vida de la VM, se muestra lo siguiente:
- La métrica
compute.googleapis.com/instance/uptime
indica si la VM se estaba ejecutando en un momento determinado, en el que 1 está activo y 0 está inactivo. Ten en cuenta que esta métrica refleja la disponibilidad como resultado de la actividad del usuario y los eventos del sistema, y no es un indicador del ANS de Compute Engine. - La métrica basada en registros
vm-lifecycle-events
para contar la cantidad de acciones del ciclo de vida, comostop
ostart
, que se realizaron en la VM en un momento determinado
- La métrica
En el gráfico de eventos, se muestra la misma métrica basada en registros
vm-lifecycle-events
, pero en una vista aumentada para facilitar la lectura. Ten en cuenta que, aunque los ejes X están alineados, los colores no están sincronizados entre los dos gráficos.Identifica la VPC compartida que usan las VM mediante el comando
gcloud compute instances describe
:gcloud compute instances describe VM_NAME \ --format="flattened(networkInterfaces[].network)"
El resultado es similar a este:
networkInterfaces[0].network: https://www.googleapis.com/compute/v1/projects/SHARED_VPC_PROJECT/global/networks/FROZEN_NETWORK
Verifica si el proyecto host de la VPC compartida está inhabilitado.
resource.type="project" protoPayload.request.@type="type.googleapis.com/google.internal.cloudbilling.billingaccount.v1.DisableResourceBillingRequest" protoPayload.response.resourceBillingInfo.billingAccountAssignmentType="DISABLED"
Si corresponde, habilita la facturación en el proyecto host.
Diagnóstico reinicios y apagados de VM
Para diagnosticar la causa del cierre o reinicio automático de una VM, debes consultar los registros de la VM. Para identificar con rapidez la causa de los cierres o reinicios futuros de la VM, crea un panel que contenga los registros. Después de consultar los registros, revisa los campos
method
yprincipalEmail
para determinar qué usuario o servicio inició el apagado o reinicio.Consulta registros de auditoría de Cloud
Consulta los registros de auditoría de Cloud para mostrar una lista de los eventos del sistema y las actividades de administrador que podrían haber causado el apagado o el reinicio.
Console
gcloud
Revisa los registros de auditoría de Cloud
Revisa los campos
method
yprincipalEmail
de los registros de auditoría de Cloud para determinar por qué se cerró o reinició tu VM.Supervisa eventos de ciclo de vida de la VM
Puedes crear un panel de Cloud Monitoring para supervisar los eventos del ciclo de vida de la VM (incluidos los cierres, reinicios y errores del host).
Este panel te permite visualizar eventos del sistema y actividades de administrador que se describen con más detalle en la sección Revisa los registros de auditoría de este documento.
Figura 1. Un panel de ejemplo que muestra la disponibilidad de una instancia y sus eventos de ciclo de vida, como una instancia detenida.
Crear métrica basada en registros
Para capturar eventos del ciclo de vida de la VM, crea una métrica basada en registros definida por el usuario. Esta métrica usa los registros de auditoría para mantener la cantidad de veces que se produjo un evento de ciclo de vida de la VM en particular.
Para obtener los permisos que necesitas para crear la métrica, pídele a tu administrador que te otorgue el rol de IAM Escritor de registros (
roles/logging.logWriter
) en el proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
Crea una métrica basada en registros definida por el usuario siguiendo estos pasos:
En la sección Tipo de métrica, haz lo siguiente:
En la sección Detalles, escribe lo siguiente:
Usa el panel
No aparecerán datos en el panel hasta que una VM experimente un evento del sistema o una actividad de administrador. Para probar que el panel funciona, realiza una actividad de administrador, como una operación
stop
ystart
:Para obtener los permisos que necesitas para usar el panel, pídele a tu administrador que te otorgue el rol de IAM Lector de configuración del panel de Monitoring (
roles/monitoring.dashboardViewer
) en el proyecto. Para obtener más información sobre cómo otorgar roles, consulta Administra el acceso.También puedes obtener los permisos necesarios mediante roles personalizados o cualquier otro rol predefinido.
El panel contiene dos gráficos que muestran un cronograma de eventos del sistema y actividades de administrador que ocurren en una VM:
Investiga el cierre masivo de VMs en los proyectos
Compute Engine podría cerrar varias VMs que están conectadas a un proyecto host de VPC compartida si la facturación del proyecto host de VPC compartida está inactiva o inhabilitada.
Para determinar si se cerraron las VMs mediante una solicitud de cierre masivo, busca las operaciones de detención que inició
cloud-cluster-manager@prod.google.com
.Iniciar una instancia afectada muestra un error similar al siguiente:
Starting instance(s) INSTANCE_NAME...failed. ERROR: (gcloud.compute.instances.start) The default network interface [nic0] is frozen.
Para solucionar este problema, haz lo siguiente:
Para evitar que persista este problema, lee Protege el vínculo entre un proyecto y su cuenta de facturación.
Salvo que se indique lo contrario, el contenido de esta página está sujeto a la licencia Atribución 4.0 de Creative Commons, y los ejemplos de código están sujetos a la licencia Apache 2.0. Para obtener más información, consulta las políticas del sitio de Google Developers. Java es una marca registrada de Oracle o sus afiliados.
Última actualización: 2024-11-21 (UTC)
-