Visualización de registros de instancias de Amazon EC2 en su entorno de Elastic Beanstalk - AWS Elastic Beanstalk

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Visualización de registros de instancias de Amazon EC2 en su entorno de Elastic Beanstalk

Las instancias EC2 de Amazon en el entorno de Elastic Beanstalk generan registros que se pueden consultar para solucionar problemas relacionados con la aplicación o los archivos de configuración. Los registros creados por el servidor web, el servidor de aplicaciones, los scripts de la plataforma Elastic Beanstalk y AWS CloudFormation se almacenan localmente en instancias individuales. Puede recuperarlos de forma sencilla a través de la consola de administración del entorno o la CLI de EB. También puede configurar su entorno para transmitir registros a Amazon CloudWatch Logs en tiempo real.

Los registros de finalización son las últimas 100 líneas de los archivos de registro que se utilizan con más frecuencia: los registros operativos de Elastic Beanstalk y los registros del servidor web o del servidor de aplicaciones. Cuando se solicita un registro de finalización utilizando la consola de administración del entorno o eb logs, una instancia del entorno concatena las entradas del registro más frecuentes en un archivo de texto y lo carga a Amazon S3.

Los registros de paquete son registros completos para un mayor conjunto de archivos de registro, como los registros de yum y cron o diversos registros de AWS CloudFormation. Cuando solicita los registros de paquete, una instancia del entorno empaqueta todos los archivos de registro en un archivo ZIP y los carga a Amazon S3.

nota

Las plataformas de Elastic Beanstalk Windows Server no admiten registros de paquetes.

Para cargar los registros rotados en Amazon S3, las instancias del entorno deben tener un perfil de instancia con permiso para escribir en el bucket de Elastic Beanstalk de Amazon S3. Estos permisos están incluidos en el perfil de instancia predeterminado que Elastic Beanstalk le pide que cree cuando lanza un entorno en la consola de Elastic Beanstalk por primera vez.

Para recuperar los registros de instancias:

  1. Abra la consola de Elastic Beanstalk y, en la lista Regions (Regiones), seleccione su región de AWS.

  2. En el panel de navegación, elija Environments (Entornos) y, a continuación, elija el nombre del entorno en la lista.

    nota

    Si tiene muchos entornos, utilice la barra de búsqueda para filtrar la lista de entornos.

  3. En el panel de navegación, elija Logs.

  4. Seleccione Request logs (Solicitar registro), y, a continuación, elija el tipo de registros que desea recuperar. Para obtener los registros de finalización, seleccione Last 100 Lines. Para obtener los registros de paquete, seleccione Full Logs (Registros completos).

    
          Página de registros de entorno de la consola de Elastic Beanstalk
  5. Cuando Elastic Beanstalk termine de recuperar sus registros, elija Descargar.

Elastic Beanstalk almacena los registros de finalización y de paquetes en un bucket de Amazon S3 y genera una URL de Amazon S3 prefirmada que puede utilizar para acceder a sus registros. Elastic Beanstalk elimina los archivos de Amazon S3 después de una duración de 15 minutos.

aviso

Cualquier persona en posesión de la URL prefirmada de Amazon S3 puede acceder a los archivos antes de que se eliminen. Haga que la URL esté disponible únicamente para partes de confianza.

nota

La política de usuario debe tener el permiso s3:DeleteObject. Elastic Beanstalk utiliza sus permisos de usuario para eliminar los registros de Amazon S3.

Si desea conservar los registros, puede configurar el entorno para que los publique en Amazon S3 automáticamente después de rotarlos. Para habilitar la rotación de registros en Amazon S3, siga el procedimiento en Configuración de la visualización de registros de instancias. Las instancias del entorno intentarán cargar los logs que se han rotado una vez cada hora.

Si la aplicación genera registros en una ubicación que no forma parte de la configuración predeterminada de la plataforma del entorno, puede extender la configuración predeterminada con los archivos de configuración (.ebextensions). Puede agregar los archivos log de la aplicación a los logs de finalización, los logs de paquete o la rotación de logs.

Para transmitir los registros en tiempo real y almacenarlos a largo plazo, configure el entorno para que pueda transmitir registros a Amazon CloudWatch Logs.

Ubicación de registro en instancias de Amazon EC2

Los registros se almacenan en ubicaciones estándar de las instancias Amazon EC2 de su entorno. Elastic Beanstalk genera los siguientes registros.

Linux

  • /var/log/eb-activity.log

  • /var/log/eb-commandprocessor.log

Windows Server

  • C:\Program Files\Amazon\ElasticBeanstalk\logs\

  • C:\cfn\logs\cfn-init.log

Estos registros contienen mensajes sobre las actividades de implementación, como mensajes relacionados con los archivos de configuración (.ebextensions).

Cada aplicación y cada servidor web guarda los logs en su propia carpeta:

  • Apache: /var/log/httpd/

  • IIS: C:\inetpub\wwwroot\

  • Node.js: /var/log/nodejs/

  • nginx: /var/log/nginx/

  • Passenger: /var/app/support/logs/

  • Puma: /var/log/puma/

  • Python: /opt/python/log/

  • Tomcat: /var/log/tomcat8/

Ubicación de registro en Amazon S3

Cuando solicita los registros de finalización o de paquete del entorno o cuando las instancias cargan registros rotados, se guardan en el bucket de Elastic Beanstalk de Amazon S3. Elastic Beanstalk crea un bucket denominado elasticbeanstalk-region-account-id para cada región de AWS en la que se crean entornos. En este bucket, los logs se guardan en la ruta resources/environments/logs/logtype/environment-id/instance-id.

Por ejemplo, los registros de una instancia i-0a1fd158 situada en el entorno de Elastic Beanstalk e-mpcwnwhekyde la región de AWS us-west-2 de la cuenta 123456789012 se almacenan en las siguientes ubicaciones:

  • Registros de finalización:

    s3://elasticbeanstalk-us-west-2-123456789012/resources/environments/logs/tail/e-mpcwnwheky/i-0a1fd158

  • Registros de paquete:

    s3://elasticbeanstalk-us-west-2-123456789012/resources/environments/logs/bundle/e-mpcwnwheky/i-0a1fd158

  • Registros rotados:

    s3://elasticbeanstalk-us-west-2-123456789012/resources/environments/logs/publish/e-mpcwnwheky/i-0a1fd158

nota

Encontrará el ID del entorno en la consola de administración del entorno.

Elastic Beanstalk elimina automáticamente los registros de finalización y de paquetes de Amazon S3 15 minutos después de su creación. Los registros rotados se mantienen hasta que se eliminan o se transfieren a S3 Glacier.

Configuración de rotación de registros en Linux

En plataformas Linux, Elastic Beanstalk utiliza logrotate para rotar registros periódicamente. Si se ha configurado de este modo, cuando un registro ha rotado localmente, la tarea de rotación de registros lo selecciona y lo carga en Amazon S3. Los registros que han rotado localmente no aparecen de forma predeterminada en los registros de finalización o de paquete.

Puede encontrar los archivos de configuración de Elastic Beanstalk para logrotate en /etc/logrotate.elasticbeanstalk.hourly/. Esta configuración de rotación es específica de la plataforma y puede cambiar en futuras versiones de la plataforma. Para obtener más información sobre los ajustes disponibles y configuraciones de ejemplo, ejecute man logrotate.

Los archivos de configuración se invocan mediante trabajos cron en /etc/cron.hourly/. Para obtener más información acerca de cron, ejecute man cron.

Ampliación de la configuración predeterminada de la tarea de registro

Elastic Beanstalk utiliza archivos que se encuentran en las subcarpetas de /opt/elasticbeanstalk/tasks (Linux) o de C:\Program Files\Amazon\ElasticBeanstalk\config (Windows Server) de la instancia de Amazon EC2 para configurar tareas en los registros de finalización, los registros de paquete y la rotación de registros.

En Linux:

  • Registros de finalización:

    /opt/elasticbeanstalk/tasks/taillogs.d/

  • Registros de paquete:

    /opt/elasticbeanstalk/tasks/bundlelogs.d/

  • Registros rotados:

    /opt/elasticbeanstalk/tasks/publishlogs.d/

En Windows Server:

  • Registros de finalización:

    c:\Program Files\Amazon\ElasticBeanstalk\config\taillogs.d\

  • Registros rotados:

    c:\Program Files\Amazon\ElasticBeanstalk\config\publogs.d\

Por ejemplo, el archivo eb-activity.conf en Linux agrega dos archivos de registro a la tarea de registros de finalización.

/opt/elasticbeanstalk/tasks/taillogs.d/eb-activity.conf

/var/log/eb-commandprocessor.log /var/log/eb-activity.log

Puede utilizar archivos de configuración del entorno (.ebextensions) para agregar sus propios archivos .conf a estas carpetas. Un archivo .conf muestra los archivos de registro específicos de su aplicación que Elastic Beanstalk agrega a las tareas de archivo de registro.

Utilice la sección files para agregar archivos de configuración a las tareas que desea modificar. Por ejemplo, el siguiente texto de configuración inserta un archivo de configuración de log en cada instancia del entorno. Este archivo de configuración de log, cloud-init.conf, añade /var/log/cloud-init.log a los registros de cola.

files: "/opt/elasticbeanstalk/tasks/taillogs.d/cloud-init.conf" : mode: "000755" owner: root group: root content: | /var/log/cloud-init.log

Agregue este texto a un archivo que tenga la extensión de nombre de archivo .config en el paquete de código fuente dentro de una carpeta llamada .ebextensions.

~/workspace/my-app |-- .ebextensions | `-- tail-logs.config |-- index.php `-- styles.css

En las plataformas Linux también puede utilizar caracteres comodín en las configuraciones de tareas de registro. Este archivo de configuración agrega todos los archivos con la extensión de nombre de archivo .log de la carpeta log de la raíz de la aplicación a los logs de paquete.

files: "/opt/elasticbeanstalk/tasks/bundlelogs.d/applogs.conf" : mode: "000755" owner: root group: root content: | /var/app/current/log/*.log

Las configuraciones de tarea de registro no admiten comodines en las plataformas de Windows.

nota

Para familiarizarse con los procedimientos de personalización de registros, puede implementar una aplicación de ejemplo mediante la CLI de EB. Para ello, la CLI de EB crea un directorio de aplicación local que contiene un subdirectorio de .ebextentions con una configuración de ejemplo. También puede utilizar los archivos de registro de la aplicación de ejemplo para explorar la función de recuperación de registros descrita en este tema. Para obtener más información acerca de cómo crear una aplicación de ejemplo con la CLI de EB, consulte los conceptos básicos de la CLI de EB.

Para obtener más información sobre cómo usar archivos de configuración, consulte Personalización avanzada de entornos con archivos de configuración (.ebextensions).

De forma parecida a la ampliación de registros de finalización y los registros de paquete, puede ampliar lo rotación de registros con un archivo de configuración. Siempre que Elastic Beanstalk rota sus propios registros y los carga a Amazon S3, también rota y carga los registros adicionales. La extensión de rotación de registros se comporta de forma distinta en función del sistema operativo de la plataforma. En las siguientes secciones se describen los dos casos.

Ampliación de la rotación de registros en Linux

Como se explica en Configuración de rotación de registros en Linux, Elastic Beanstalk utiliza logrotate para rotar registros en plataformas Linux. Al configurar los archivos de registro de su aplicación para la rotación de registros, la aplicación no necesita crear copias de los archivos de registro. Elastic Beanstalk configura logrotate para crear una copia de los archivos de registro de la aplicación para cada rotación. Por lo tanto, la aplicación debe mantener archivos de registro desbloqueados cuando no escriba en ellos de forma activa.

Ampliación de la rotación de registros en Windows Server

En Windows Server, al configurar los archivos de registro de su aplicación para la rotación de registros, la aplicación debe rotarlos periódicamente. Elastic Beanstalk busca los archivos con los nombres que comiencen por el patrón que ha configurado y los elige para cargarlos a Amazon S3. Además, se ignoran los puntos en el nombre de archivo y Elastic Beanstalk considera que el nombre hasta el punto será el nombre de archivo de registro base.

Elastic Beanstalk carga todas las versiones de un archivo de registro base excepto la más reciente, puesto que considera que es le archivo de registro de aplicación activo, que podría estar bloqueado. Por lo tanto, la aplicación puede mantener el archivo de registro bloqueado entre las rotaciones.

Ejemplo: su aplicación escribe en un archivo de registro denominado my_log.log y especifica este nombre en su archivo .conf. La aplicación rota de forma periódica el archivo. Durante el ciclo de rotación de Elastic Beanstalk, encuentra los siguientes archivos en la carpeta del archivo de registro: my_log.log, my_log.0800.log, my_log.0830.log. Elastic Beanstalk los considera a todos como versiones del nombre base my_log. El archivo my_log.log tiene la hora de modificación más reciente, por lo que Elastic Beanstalk carga solo los otros dos archivos, my_log.0800.log y my_log.0830.log.

Transmisión de archivos de registro a Amazon CloudWatch Logs

Puede configurar su entorno para transmitir registros a Amazon CloudWatch Logs en la consola de Elastic Beanstalk o mediante las opciones de configuración. Con Amazon CloudWatch Logs, cada instancia del entorno transmite los registros a grupos de registros que se pueden configurar para que se mantengan durante semanas o años, incluso después de que el entorno haya finalizado.

El conjunto de registros transmitidos varía en función del entorno, pero siempre incluye los registros eb-activity.log y de acceso del servidor proxy de nginx o Apache que se ejecuta delante de la aplicación.

Puede configurar la transmisión de registros en la consola de Elastic Beanstalk durante la creación de entorno o para un entorno existente. En el siguiente ejemplo, los registros se guardan durante un máximo de siete días, incluso cuando el entorno ha terminado.


        Configuración de CloudWatch Logs

El siguiente archivo de configuración habilita la transmisión de registros con 180 días de retención, incluso si el entorno ha terminado.

ejemplo .ebextensions/log-streaming.config

option_settings: aws:elasticbeanstalk:cloudwatch:logs: StreamLogs: true DeleteOnTerminate: false RetentionInDays: 180