Affichage des journaux des instances Amazon EC2 dans votre environnement Elastic Beanstalk - AWS Elastic Beanstalk

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Affichage des journaux des instances Amazon EC2 dans votre environnement Elastic Beanstalk

Les instances Amazon EC2 de votre environnement Elastic Beanstalk génèrent des journaux que vous pouvez afficher pour résoudre les problèmes avec vos fichiers de configuration ou d'application. Les journaux créés par le serveur web, le serveur d'applications, les scripts de plateforme Elastic Beanstalk et AWS CloudFormation sont stockés localement sur des instances individuelles. Vous pouvez les récupérer facilement avec la console de gestion d'environnement ou l'interface de ligne de commande EB. Vous pouvez également configurer votre environnement pour diffuser en temps réel les journaux dans Amazon CloudWatch Logs.

Les journaux des processus sont les 100 dernières lignes des fichiers journaux les plus couramment utilisés : les journaux opérationnels Elastic Beanstalk et les journaux provenant du serveur web ou du serveur d'applications. Lorsque vous demandez des journaux de queue dans la console de gestion d'environnement ou avec eb logs, une instance dans votre environnement concatène les entrées du journal les plus récentes dans un fichier texte unique et les télécharge sur Amazon S3.

Les journaux de groupe sont des journaux complets pour un plus large éventail de fichiers journaux, y compris des journaux yum et cron et plusieurs journaux AWS CloudFormation. Lorsque vous demandez des journaux de groupe, une instance de votre environnement rassemble les fichiers journaux complets dans une archive ZIP et les télécharge sur Amazon S3.

Note

Les plateformes Elastic Beanstalk Windows Server ne prennent pas en charge les journaux groupés.

Pour télécharger les journaux soumis à rotation sur Amazon S3, les instances de votre environnement doivent avoir un profil d'instance avec l'autorisation d'écrire sur votre compartiment Elastic Beanstalk Amazon S3. Ces autorisations sont incluses dans le profil d'instance par défaut qu'Elastic Beanstalk vous invite à créer lorsque vous lancez un environnement dans la console Elastic Beanstalk pour la première fois.

Pour récupérer des journaux d'instance
  1. Ouvrez la console Elastic Beanstalk et, dans la liste Regions (Régions), sélectionnez votre Région AWS.

  2. Dans le panneau de navigation, choisissez Environments (Environnements), puis choisissez le nom de votre environnement dans la liste.

    Note

    Si vous avez plusieurs environnements, utilisez la barre de recherche pour filtrer la liste des environnements.

  3. Dans le panneau de navigation, sélectionnez Logs (Journaux).

  4. Choisissez Request Logs (Journaux de demande), puis choisissez le type de journaux à récupérer. Pour obtenir des journaux de processus, choisissez Last 100 Lines (100 dernières lignes). Pour obtenir des journaux de bundle, choisissez Full Logs (Journaux complets).

    Page Journaux d'environnement de la console Elastic Beanstalk
  5. Quand Elastic Beanstalk a fini de récupérer vos journaux, choisissez Download (Télécharger).

Elastic Beanstalk stocke les journaux de queue et de bundle dans un compartiment Amazon S3 et génère une URL Amazon S3 présignée que vous pouvez utiliser pour accéder à vos journaux. Elastic Beanstalk supprime les fichiers d'Amazon S3 après une durée de 15 minutes.

Avertissement

Quiconque possédant l'URL Amazon S3 pré-signée peut consulter les fichiers avant qu'ils ne soient supprimés. Faites en sorte que seules les parties approuvées aient accès à l'URL.

Note

Votre stratégie utilisateur doit disposer de l'autorisation s3:DeleteObject. Elastic Beanstalk utilise vos autorisations utilisateur pour supprimer les journaux d'Amazon S3.

Pour conserver des journaux, vous pouvez configurer votre environnement afin de publier les journaux dans Amazon S3 automatiquement après leur rotation. Pour activer la rotation des journaux dans Amazon S3, suivez la procédure présentée dans Configuration de l'affichage des journaux d'instance. Les instances dans votre environnement essaient de télécharger des journaux qui ont fait l'objet d'une rotation une fois par heure.

Si votre application génère des journaux dans un emplacement qui ne fait pas partie de la configuration par défaut de la plateforme de votre environnement, vous pouvez étendre la configuration par défaut à l'aide des fichiers de configuration (.ebextensions). Vous pouvez ajouter les fichiers journaux de votre application aux journaux de processus, aux journaux de groupe ou à la rotation des journaux.

Pour la diffusion des journaux en temps réel et le stockage à long terme, configurez l'environnement pour diffuser les journaux vers Amazon CloudWatch Logs.

Emplacement des journaux sur les instances Amazon EC2

Les journaux sont stockés dans des emplacements standard des instances Amazon EC2 de votre environnement. Elastic Beanstalk génère les journaux suivants.

Amazon Linux 2

  • /var/log/eb-engine.log

AMI Amazon Linux (AL1)

Note

Le 18 juillet 2022, Elastic Beanstalk définira les statuts de toutes les branches de plateforme basées sur une AMI Amazon Linux (AL1) sur mise hors service. Pour plus d'informations sur la migration vers une branche de plateforme Amazon Linux 2023 actuelle et entièrement prise en charge, consultez Migration de votre application Elastic Beanstalk Linux vers Amazon Linux 2023 ou Amazon Linux 2.

  • /var/log/eb-activity.log

  • /var/log/eb-commandprocessor.log

Windows Server

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

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

Ces journaux contiennent des messages sur les activités de déploiement, y compris des messages liés aux fichiers de configuration (.ebextensions).

Chaque serveur d'applications et web stocke des journaux dans son propre dossier :

  • 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/tomcat/

Emplacement des journaux dans Amazon S3

Lorsque vous demandez les journaux de queue ou de bundle à partir de votre environnement, ou lorsque des instances téléchargent les journaux ayant fait l'objet d'une rotation, ils sont stockés dans votre compartiment Elastic Beanstalk d'Amazon S3. Elastic Beanstalk crée un compartiment nommé elasticbeanstalk-region-account-id pour chaque région AWS dans laquelle vous créez des environnements. Dans ce compartiment, les journaux sont stockés dans le chemin d'accès resources/environments/logs/logtype/environment-id/instance-id.

Par exemple, les journaux de l'instance i-0a1fd158, dans l'environnement Elastic Beanstalk e-mpcwnwheky dans la région AWS us-west-2 dans le compte 123456789012, sont stockés aux emplacements suivants :

  • Journaux de queue :

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

  • Journaux de groupe :

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

  • Journaux ayant fait l'objet d'une rotation :

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

Note

Vous trouverez l'ID de votre environnement dans la console de gestion d'environnement.

Elastic Beanstalk supprime automatiquement les journaux de queue et de bundle d'Amazon S3 15 minutes après leur création. Les journaux ayant fait l'objet d'une rotation sont conservés jusqu'à ce que vous les supprimiez ou les déplaciez vers S3 Glacier.

Paramètres de rotation des journaux sous Linux

Sur les plates-formes Linux, Elastic Beanstalk utilise logrotate pour soumettre les journaux à rotation régulièrement. Si la configuration a été effectuée, une fois qu'un journal a effectué sa rotation localement, la tâche de rotation le sélectionne et le télécharge sur Amazon S3. Les journaux qui ont fait l'objet d'une rotation localement ne s'affichent pas dans les journaux de processus ou de groupe par défaut.

Vous pouvez trouver les fichiers de configuration Elastic Beanstalk pour logrotate dans /etc/logrotate.elasticbeanstalk.hourly/. Ces paramètres de rotation sont propres à la plateforme et sont susceptibles de changer dans de futures versions de la plateforme. Pour plus d'informations concernant les paramètres disponibles et les exemples de configurations, exécutez man logrotate.

Les fichiers de configuration sont invoqués par des tâches cron dans /etc/cron.hourly/. Pour obtenir plus d'informations concernant cron, exécutez man cron.

Extension de la configuration de tâche de journal par défaut

Elastic Beanstalk utilise des fichiers des sous-répertoires de /opt/elasticbeanstalk/tasks (Linux) ou C:\Program Files\Amazon\ElasticBeanstalk\config (Windows Server) sur l'instance Amazon EC2 pour configurer les tâches pour les journaux de queue, les journaux de bundle et la rotation des journaux.

Sur Amazon Linux :

  • Journaux de queue :

    /opt/elasticbeanstalk/tasks/taillogs.d/

  • Journaux de groupe :

    /opt/elasticbeanstalk/tasks/bundlelogs.d/

  • Journaux ayant fait l'objet d'une rotation :

    /opt/elasticbeanstalk/tasks/publishlogs.d/

Sous Windows Server :

  • Journaux de queue :

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

  • Journaux ayant fait l'objet d'une rotation :

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

Par exemple, le fichier eb-activity.conf sous Linux ajoute deux fichiers journaux à la tâche de journaux de processus.

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

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

Vous pouvez utiliser les fichiers de configuration d'environnement (.ebextensions) pour ajouter vos propres fichiers .conf à ces dossiers. Un fichier .conf répertorie les fichiers journaux spécifiques à votre application, qu'Elastic Beanstalk ajoute aux tâches des fichiers journaux.

Utilisez la section files pour ajouter des fichiers de configuration aux tâches que vous voulez modifier. Par exemple, le texte de configuration suivant ajoute un fichier de configuration du journal à chaque instance dans votre environnement. Ce fichier de configuration du journal, cloud-init.conf, ajoute /var/log/cloud-init.log aux journaux de processus.

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

Ajoutez ce texte à un fichier avec l'extension de nom de fichier .config à votre bundle de fichiers source sous un dossier nommé .ebextensions.

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

Sur les plateforme Linux, vous pouvez également utiliser des caractères génériques dans les configurations de tâche de journal. Ce fichier de configuration ajoute tous les fichiers avec l'extension de nom de fichier .log provenant du dossier log situé à la racine de l'application aux journaux de bundle.

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

Les configurations de tâche de journal ne prennent pas en charge les caractères génériques sur les plateformes Windows.

Note

Pour vous familiariser avec les procédures de personnalisation des journaux, vous pouvez déployer un exemple d'application à l'aide de l'interface de ligne de commande EB. Pour cela, l'interface de ligne de commande EB crée un répertoire d'application local qui contient un sous-répertoire .ebextentions avec un exemple de configuration. Vous pouvez également utiliser les fichiers journaux de l’exemple d'application pour explorer la fonction d'extraction du journal décrite dans cette rubrique. Pour de plus amples informations sur la création d'un exemple d'application avec l'interface de ligne de commande EB, veuillez consulter Principes de base de l'interface de ligne de commande EB.

Pour de plus amples informations sur l'utilisation des fichiers de configuration, veuillez consulter Personnalisation d'environnement avancée avec fichiers de configuration (.ebextensions).

De la même manière que pour l'extension des journaux de processus et des journaux de groupe, vous pouvez étendre la rotation des journaux à l'aide d'un fichier de configuration. Chaque fois que Elastic Beanstalk fait pivoter ses propres journaux et les télécharge sur Amazon S3, il soumet également à rotation et télécharge vos journaux supplémentaires. L'extension de la rotation des journaux se comporte différemment en fonction du système d'exploitation utilisé par la plateforme. Les sections suivantes décrivent les deux cas possibles.

Extension de la rotation des journaux sous Linux

Comme expliqué dans Paramètres de rotation des journaux sous Linux, Elastic Beanstalk utilise logrotate pour soumettre les journaux à rotation sur les plateformes Linux. Lorsque vous configurez les fichiers journaux de votre application pour la rotation des fichiers, l'application n'a pas besoin de créer de copies des fichiers journaux. Elastic Beanstalk configure logrotate pour créer une copie des fichiers journaux de votre application pour chaque rotation. Par conséquent, l'application doit conserver les fichiers journaux déverrouillés lorsqu'elle n'écrit pas activement dans ces journaux.

Extension de la rotation des journaux sous Windows Server

Sur Windows Server, lorsque vous configurez les fichiers journaux de votre application pour la rotation, l'application doit effectuer une rotation régulière des fichiers journaux. Elastic Beanstalk recherche les fichiers dont le nom commence par le modèle que vous avez configuré et les sélectionne pour les charger vers Amazon S3. En outre, les points dans le nom du fichier sont ignorés et Elastic Beanstalk considère que le nom du fichier journal de base s'arrête au point.

Elastic Beanstalk charge toutes les versions d'un fichier journal de base, à l'exception de la plus récente qu'il considère comme le fichier journal actif de l'application, qui peut parfois être verrouillé. Votre application peut, par conséquent, garder le fichier journal actif verrouillé entre les rotations.

Par exemple, votre application écrit dans un fichier journal nommé my_log.log, et vous spécifiez ce nom dans votre fichier .conf. L'application effectue une rotation périodique du fichier. Pendant le cycle de rotation d'Elastic Beanstalk, les fichiers suivants se trouvent dans le dossier des fichiers journaux : my_log.log, my_log.0800.log, my_log.0830.log. Elastic Beanstalk considère tous ces fichiers comme des versions du nom de base my_log. Le fichier my_log.log comporte l'heure de modification la plus récente. Ainsi, Elastic Beanstalk charge uniquement les deux autres fichiers, my_log.0800.log et my_log.0830.log.

Diffusion de fichiers journaux vers les Amazon CloudWatch Logs

Vous pouvez configurer votre environnement pour diffuser les journaux sur Amazon CloudWatch Logs dans la console Elastic Beanstalk ou à l'aide des options de configuration. Avec CloudWatch Logs, chaque instance de votre environnement diffuse les journaux vers des groupes de journaux que vous pouvez configurer pour être conservés pendant des semaines ou des années, même après l'arrêt de votre environnement.

L'ensemble des journaux diffusés varie selon l'environnement, mais il inclut toujours eb-engine.log et les journaux d'accès provenant du serveur proxy nginx ou Apache qui s'exécute devant votre application.

Vous pouvez configurer la diffusion de journaux dans la console Elastic Beanstalk pendant la création de l'environnement ou pour un environnement existant. Dans l'exemple suivant, les journaux sont conservés jusqu'à sept jours, même lorsque l'environnement est résilié.

Paramètres CloudWatch Logs

Le fichier de configuration suivant active la diffusion de journaux avec une conservation de 180 jours, même si l'environnement a été résilié.

Exemple .ebextensions/log-streaming.config
option_settings: aws:elasticbeanstalk:cloudwatch:logs: StreamLogs: true DeleteOnTerminate: false RetentionInDays: 180