Un coredump es un archivo que contiene el estado de la memoria de una aplicación cuando esta falla o finaliza de manera inesperada. El sistema operativo genera este archivo para permitir su depuración y análisis posterior. Este tema describe cómo habilitar coredump en una instancia de Elastic Container Instance (ECI). Esto le permite analizar los archivos core generados tras finalizaciones inesperadas del contenedor, identificar la causa del problema y corregir la aplicación.
Contexto
En Linux, cuando una aplicación finaliza de forma inesperada o falla, el sistema operativo registra el estado de su memoria y lo guarda en un archivo. Este proceso se conoce como coredump. Posteriormente, puede analizar el archivo core para identificar la causa del problema.
La siguiente imagen muestra las señales de Linux que desencadenan un coredump. Para estas señales, la acción predeterminada es Core.
Para obtener más información, consulte archivo de coredump.
Descripción general
De forma predeterminada, coredump está deshabilitado en las instancias ECI para evitar un uso excesivo del disco, lo cual podría provocar interrupciones en el servicio. Puede habilitar coredump mediante uno de los siguientes métodos:
-
Método 1: Habilitar una tarea de O&M de coredump
Después de habilitar coredump manualmente, el sistema crea una tarea de O&M. Cuando un contenedor finaliza de manera anómala o se cierra, el archivo core generado se guarda automáticamente en OSS.
-
Método 2: Personalizar la ruta de guardado de los archivos core
Puede almacenar los archivos core en un almacenamiento externo si especifica una ruta de guardado personalizada. Una vez configurada la ruta, coredump se habilita automáticamente. Cuando un contenedor falla o finaliza inesperadamente, el archivo core resultante se guarda en la ruta especificada.
-
El método 1 es sencillo de usar, pero tiene limitaciones de tiempo y región. Es adecuado para depuración y diagnóstico temporal.
La tarea de O&M generada es de ejecución única. Una vez capturado correctamente el archivo core, coredump se deshabilita automáticamente. La tarea de O&M tiene una validez de 12 horas y caduca si no se activa dentro de ese periodo.
Este método no es compatible con las siguientes regiones: China (Ulanqab), China (Heyuan), China (Guangzhou), China (Nanjing), Filipinas (Manila), Corea del Sur (Seúl) y Tailandia (Bangkok).
El método 2 requiere configurar un almacenamiento externo. Si su aplicación es inestable, puede utilizar este método para garantizar la captura de los archivos core. No obstante, si una aplicación defectuosa se reinicia repetidamente, se puede generar una gran cantidad de archivos core.
Método 1: Habilitar una tarea de O&M de coredump
Consola
Inicie sesión en Elastic Container Instance console.
-
Habilite coredump para la instancia ECI.
Haga clic en el ID de la instancia objetivo para abrir la página de detalles de la instancia.
-
Haga clic en la pestaña O&M, seleccione la pestaña Coredump y luego haga clic en Enable.
Tras habilitar coredump, el sistema genera una tarea de O&M. Si coredump aún no se ha activado, el estado de la tarea será Pending.
-
Active un coredump.
Conéctese a la instancia ECI. Dentro del contenedor, ejecute el comando
sleep 100y presioneCtrl+\para activar un coredump. El archivo core generado se guardará automáticamente en OSS.# sleep 100 ^\Quit (core dumped) -
Descargue el archivo core.
Una vez activado el coredump y generado el archivo core, el estado de la tarea de O&M cambiará a Successful. Haga clic en Download en la columna Result para descargar el archivo core.
NotaSi la descarga no inicia, compruebe la configuración de permisos del sitio en su navegador.
API
-
Habilite coredump para la instancia ECI.
Llame a la operación CreateInstanceOpsTask para crear una tarea de O&M. Especifique la instancia ECI objetivo, establezca el parámetro OpsType en
coredumpy el parámetro OpsValue enenable. Para obtener más información, consulte CreateInstanceOpsTask.NotaAl especificar la instancia ECI, asegúrese de que el parámetro CorePattern no se haya establecido durante la creación de la instancia.
-
Active un coredump.
Conéctese a la instancia ECI. Dentro del contenedor, ejecute el comando
sleep 100y presioneCtrl+\para activar un coredump. El archivo core generado se guardará automáticamente en OSS. -
Descargue el archivo core.
Llame a la operación DescribeInstanceOpsRecords para consultar el resultado de la tarea de O&M. En la respuesta, el campo ResultContent contiene la URL del archivo core en OSS. Puede acceder a dicha URL para descargar el archivo core.
Método 2: Personalizar la ruta de guardado
Los archivos core suelen utilizarse para análisis sin conexión. Por ello, se recomienda guardarlos en un almacenamiento externo en lugar de una ruta local dentro del contenedor. Esto evita que los archivos core se pierdan cuando el contenedor finaliza. ECI permite especificar una ruta de guardado personalizada para los archivos core. Una vez configurada la ruta, coredump se habilita automáticamente.
Al llamar a la operación CreateContainerGroup para crear una instancia ECI, puede pasar el parámetro CorePattern para establecer la ruta de guardado de los archivos core. La siguiente tabla describe los parámetros relacionados. Para obtener más información, consulte CreateContainerGroup.
Configure los parámetros del volumen según su tipo de volumen.
|
Parámetro |
Tipo |
Ejemplo |
Descripción |
|
CorePattern |
String |
/data/dump-a/core |
Ruta de guardado para los archivos core. Esta ruta debe estar dentro de un volumen montado. Importante
La ruta no puede comenzar con el carácter de tubería ( |
|
Volume.N.Name |
String |
volume1 |
Nombre del volumen. |
|
Volume.N.Type |
String |
NFSVolume |
Tipo de volumen. En este ejemplo se utiliza NFSVolume. |
|
Volume.N.NFSVolume.Path |
String |
/dump |
Ruta del volumen NFS. |
|
Volume.N.NFSVolume.Server |
String |
143b24****-gfn3.cn-beijing.nas.aliyuncs.com |
Dirección del servidor NFS. Si utiliza Alibaba Cloud File Storage NAS, esta es la dirección del punto de montaje del sistema de archivos NAS. |
|
Container.N.VolumeMount.N.Name |
String |
volume1 |
Nombre del volumen que se va a montar. Debe coincidir con el valor de Volume.N.Name. |
|
Container.N.VolumeMount.N.MountPath |
String |
/data/dump-a/ |
Ruta de montaje. El contenido del volumen sobrescribe cualquier contenido existente en la ruta de montaje dentro del contenedor. Asegúrese de que la ruta sea correcta. |
El siguiente ejemplo muestra cómo utilizar un sistema de archivos de Alibaba Cloud File Storage NAS como almacenamiento externo:
-
Cree una instancia ECI llamada instancia A, monte el sistema de archivos NAS y establezca la ruta de guardado para los archivos core.
Llame a la operación CreateContainerGroup para crear la instancia A. Establezca los siguientes parámetros para montar el directorio
/dump/del sistema de archivos NAS en/data/dump-a/dentro del contenedor, y configure la ruta de guardado de archivos core en/data/dump-a/core.ContainerGroupName=test-a SecurityGroupId=sg-bp1daxpbz9lzpvvc**** VSwitchId=vsw-bp1gds63lmlm7ib05**** # Declare a volume Volume.1.Name=volume1 Volume.1.Type=NFSVolume Volume.1.NFSVolume.Path=/dump/ Volume.1.NFSVolume.Server=143b24****-gfn3.cn-beijing.nas.aliyuncs.com # Mount the volume to the container Container.1.Name=nginx Container.1.Image=registry-vpc.cn-beijing.aliyuncs.com/eci_open/nginx:1.14.2 Container.1.VolumeMount.1.Name=volume1 Container.1.VolumeMount.1.MountPath=/data/dump-a/ # Set the save path for core files CorePattern=/data/dump-a/core -
Active un coredump en cualquier directorio del contenedor de la instancia A.
Dentro del contenedor, ejecute el comando
sleep 100y presioneCtrl+\para activar un coredump. El archivo core se guardará en/data/dump-a/coredentro del contenedor.# ls bin boot data dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var # cd /data/dump-a/ # ls # sleep 100 ^\Quit (core dumped) # ls core.17 Libere la instancia A.
-
Monte el mismo sistema de archivos NAS en otra instancia ECI llamada instancia B.
Llame a la operación CreateContainerGroup para crear la instancia B. Pase los siguientes parámetros para montar el mismo directorio
/dump/del sistema de archivos NAS en el directorio/data/dump-b/dentro del contenedor.ContainerGroupName=test-nas-b SecurityGroupId=sg-bp1daxpbz9lzpvvc**** VSwitchId=vsw-bp1gds63lmlm7ib05**** # Declare a volume Volume.1.Name=volume1 Volume.1.Type=NFSVolume Volume.1.NFSVolume.Path=/dump/ Volume.1.NFSVolume.Server=143b24****-gfn3.cn-beijing.nas.aliyuncs.com # Mount the volume to the container Container.1.Name=nginx Container.1.Image=registry-vpc.cn-beijing.aliyuncs.com/eci_open/nginx:1.14.2 Container.1.VolumeMount.1.Name=volume1 Container.1.VolumeMount.1.MountPath=/data/dump-b/ -
Consulte el archivo core en el contenedor de la instancia B.
Puede consultar el archivo core en el directorio
/data/dump-bdel contenedor. Dado que el archivo core se guardó en un almacenamiento externo, no se pierde tras liberar la instancia A y permanece disponible para su análisis.# ls bin boot data dev etc home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var # cd /data/dump-b/ # ls core.17
Preguntas frecuentes
La descarga no inicia al hacer clic en Download en la consola. ¿Qué debo hacer?
Si la descarga no inicia, compruebe la configuración de permisos del sitio en su navegador. Por ejemplo, en Chrome, siga estos pasos para otorgar el permiso necesario:
Haga clic en el icono del candado a la izquierda de la barra de direcciones del navegador Chrome y, en el panel emergente, haga clic en Site settings.
En la lista de permisos del sitio, busque Insecure content y establezca su permiso en Allow.