Afficher les journaux des EC2 instances Amazon 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.

Afficher les journaux des EC2 instances Amazon dans votre environnement Elastic Beanstalk

Cette rubrique décrit les types de journaux d'instance fournis par Elastic Beanstalk. Il fournit également des instructions détaillées pour les récupérer et les gérer.

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

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 groupés, une instance de votre environnement regroupe les fichiers journaux complets dans une ZIP archive 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, puis dans la liste des 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).

  5. Quand Elastic Beanstalk a fini de récupérer vos journaux, choisissez Download (Télécharger).

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

Avertissement

Toute personne en possession de l'Amazon S3 présigné URL peut accéder aux fichiers avant qu'ils ne soient supprimés. Rendez-les URL accessibles uniquement aux personnes de confiance.

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 le streaming des journaux en temps réel et le stockage à long terme, configurez votre environnement pour qu'il diffuse les journaux vers Amazon CloudWatch Logs.

Emplacement du journal sur les EC2 instances Amazon

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

Amazon Linux 2

  • /var/log/eb-engine.log

Amazon Linux AMI (AL1)

Note

Le 18 juillet 2022, Elastic Beanstalk a défini le statut de toutes les branches de la plateforme basées sur Amazon AMI Linux () comme étant retirées. AL1 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/

  • IISC:\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 elasticbeanstalk-region-account-id bucket nommé AWS pour chaque région 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'instancei-0a1fd158, dans l' AWS environnement Elastic e-mpcwnwheky Beanstalk de Region us-west-2 123456789012 in account, 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 situés dans des /opt/elasticbeanstalk/tasks sous-dossiers de (LinuxC:\Program Files\Amazon\ElasticBeanstalk\config) ou (Windows Server) sur l'instance EC2 Amazon pour configurer les tâches relatives aux journaux de suivi, aux 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'EB CLI. Pour cela, l'EB CLI crée un répertoire d'applications local qui contient un .ebextentions sous-répertoire 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 plus d'informations sur la création d'un exemple d'application avec l'EBCLI, consultez CLIles bases d'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.

Streaming de fichiers journaux vers Amazon CloudWatch Logs

Vous pouvez configurer votre environnement pour diffuser des journaux vers Amazon CloudWatch Logs dans la console Elastic Beanstalk ou à l'aide des options de configuration. Avec CloudWatch Logs, chaque instance de votre environnement diffuse des journaux vers des groupes de journaux que vous pouvez configurer pour qu'ils soient conservés pendant des semaines, voire des années, même après la fermeture 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. Vous pouvez définir les options suivantes depuis la console : activer/désactiver le streaming des CloudWatch journaux vers Logs, définir le nombre de jours de rétention et sélectionner l'une des options du cycle de vie. Dans l'exemple suivant, les journaux sont conservés jusqu'à sept jours, même lorsque l'environnement est résilié.

Image d'écran des paramètres CloudWatch des journaux dans la console Elastic Beanstalk.

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