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 comenzar
-
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 seleccionando una de las siguientes opciones:
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 o la infraestructura del centro de datos que aloja tu instancia de procesamiento, lo 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 tu instancia. Si la instancia está configurada para reiniciarse automáticamente, que es la configuración predeterminada, Compute Engine reinicia la instancia, 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.En ocasiones, una instancia de procesamiento puede dejar de responder antes de que se indique un error de host. Puedes reducir el tiempo que Compute Engine espera para reiniciar o finalizar la instancia si configuras el tiempo de espera de recuperación de errores del host (Versión preliminar). 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.
- Apagados y reinicios activados por eventos del sistema: Identifica las terminaciones que inician los sistemas internos de Google Cloud debido a eventos de manutención del sistema, fallas normales de hardware y limitaciones de recursos.
- Apagones o reinicios activados por actividades del administrador del sistema: Investiga las terminaciones causadas por acciones directas, como las llamadas a la API que realizan los usuarios o las cuentas de servicio. Estas acciones pueden incluir cierres manuales, reinicios o procesos automatizados que afectan los estados de las VM.
- Generación de texto no oficial de RCA: Proporciona un texto detallado del análisis de la causa raíz, en el que se describe la causa identificada de la rescisión, los sistemas o las actividades involucrados, y las recomendaciones para evitar que ocurra en el futuro, cuando corresponda.
- Completa y, luego, copia el siguiente comando.
- Abre la consola de Google Cloud y activa Cloud Shell. Abre la consola de Cloud
- Pega el comando copiado.
- Ejecuta el comando
gcpdiag
, que descarga la imagen de Dockergcpdiag
y, luego, realiza verificaciones de diagnóstico. Si corresponde, sigue las instrucciones de salida para corregir las verificaciones que fallaron. - Copia y ejecuta el siguiente comando en tu estación de trabajo local.
curl https://gcpdiag.dev/gcpdiag.sh >gcpdiag && chmod +x gcpdiag
- Ejecuta el comando
gcpdiag
../gcpdiag runbook gce/vm-termination \ --parameter project_id=PROJECT_ID \ --parameter name=VM_NAME \ --parameter zone=ZONE
- PROJECT_ID: Es el ID del proyecto que contiene el recurso.
- VM_NAME: Es el nombre de la VM de destino dentro de tu proyecto.
- ZONE: Es la zona en la que se encuentra la VM de destino.
--universe-domain
: Si corresponde, el dominio de Trusted Partner Sovereign Cloud que aloja el recurso--parameter
o-p
: Parámetros del runbook
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 a proyectos, carpetas y organizaciones.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 a proyectos, carpetas y organizaciones.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.
Cómo investigar problemas de finalización de VMs con gcpdiag
gcpdiag
es una herramienta de código abierto. No es un producto de Google Cloud compatible oficialmente. Puedes usar la herramientagcpdiag
para identificar y corregir problemas del proyecto de Google Cloud. Para obtener más información, consulta el proyecto en GitHub.En este runbook de gcpdiag, se investigan los problemas de terminación de VM. Para ello, se examinan las siguientes áreas:Consola de Google Cloud
gcpdiag runbook gce/vm-termination \ --parameter project_id=PROJECT_ID \ --parameter name=VM_NAME \ --parameter zone=ZONE
Docker
Puedes ejecutar
gcpdiag
con un wrapper que iniciegcpdiag
en un contenedor de Docker. Se debe instalar Docker o Podman.Consulta los parámetros disponibles para este runbook.
Reemplaza lo siguiente:
Marcas útiles:
Para obtener una lista y una descripción de todas las marcas de la herramienta
gcpdiag
, consulta las instrucciones de uso degcpdiag
.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-12-22 (UTC)
-