Utilisation d'Elastic Beanstalk avec Amazon CloudWatch Logs - 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.

Utilisation d'Elastic Beanstalk avec Amazon CloudWatch Logs

CloudWatch Logs vous permet de surveiller et d'archiver les fichiers journaux de votre application Elastic Beanstalk, de votre système, ainsi que les fichiers journaux personnalisés à partir des instances Amazon EC2 de vos environnements. Vous pouvez également configurer des alarmes qui vous permettent d'entreprendre plus facilement des actions en réponse à des événements de flux de journal spécifiques extraits par vos filtres de métriques. L'agent CloudWatch Logs installé sur chaque instance Amazon EC2 de votre environnement publie des points de données de métriques sur le service CloudWatch pour chaque groupe de journaux que vous configurez. Chaque groupe de journaux applique ses propres modèles de filtres afin de déterminer les événements de flux de journaux à envoyer à CloudWatch en tant que points de données. Les flux de journaux qui appartiennent au même groupe de journaux partagent les mêmes paramètres de contrôle d'accès, de surveillance et de rétention. Vous pouvez configurer Elastic Beanstalk pour diffuser automatiquement des journaux vers le service CloudWatch, comme décrit à la section Streaming de journaux d'instance vers CloudWatch Logs. Pour plus d'informations sur CloudWatch Logs, notamment la terminologie et les concepts, consultez le Guide de l'utilisateur Amazon CloudWatch Logs.

Outre les journaux d'instance, si vous activez les rapports améliorés sur l'état pour votre environnement, vous pouvez configurer ce dernier de sorte à diffuser les informations d'état vers CloudWatch Logs. Consultez Diffusion d'informations sur l'état de l'environnement Elastic Beanstalk vers Amazon CloudWatch Logs.

La figure suivante affiche la page Monitoring (Surveillance) et les graphiques d'un environnement configuré avec l'intégration CloudWatch Logs. Les exemples de métriques dans cet environnement sont nommés CWLHttp4xx et CWLHttp5xx. L'un des graphiques montre que la métrique CWLHttp4xx a déclenché une alarme en fonction des conditions spécifiées dans les fichiers de configuration.

La figure suivante présente la page Alarmes et des graphiques pour les exemples d'alarmes nommés AWSEBCWLHttp4xxPercentAlarm et AWSEBCWLHttp5xxCountAlarm qui correspondent aux métriques CWLHttp4xx et CWLHttp5xx, respectivement.

Conditions préalables pour le streaming des journaux d'instance vers CloudWatch Logs

Pour activer le streaming de journaux des instances Amazon EC2 de votre environnement vers CloudWatch Logs, vous devez remplir les conditions suivantes :

  • Plateforme – Étant donné que cette fonctionnalité est disponible uniquement dans les versions de plateforme publiées en même temps que cette version ou après, si vous utilisez une version de plateforme antérieure, mettez à jour votre environnement vers la configuration actuelle.

  • Si vous ne disposez pas de la politique gérée Elastic Beanstalk AWSElasticBeanstalkWebTier ou AWSElasticBeanstalkWorkerTier dans votre profil d'instance Elastic Beanstalk, vous devez ajouter le code suivant à votre profil pour activer cette fonction.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:PutLogEvents", "logs:CreateLogStream" ], "Resource": [ "*" ] } ] }

Méthode de configuration de CloudWatch Logs par Elastic Beanstalk

Elastic Beanstalk installe un agent CloudWatch Logs avec les paramètres de configuration par défaut sur chaque instance qu'il crée. Pour en savoir plus, consultez la Référence de l'agent CloudWatch Logs.

Lorsque vous activez le streaming de journaux d'instance vers CloudWatch Logs, Elastic Beanstalk envoie les fichiers journaux des instances de votre environnement à CloudWatch Logs. Les journaux diffusés varient d'une plateforme à une autre. Le tableau suivant répertorie les différents journaux par plateforme.

Plateforme / Branche de plateforme

Journaux

Docker /

Branche de plateforme : Docker s'exécutant sur Amazon Linux 2 64 bits

  • /var/log/eb-engine.log

  • /var/log/eb-hooks.log

  • /var/log/docker

  • /var/log/docker-events.log

  • /var/log/eb-docker/containers/eb-current-app/stdouterr.log

  • /var/log/nginx/access.log

  • /var/log/nginx/error.log

Docker /

Branche de plateforme : ECS s'exécutant sur Amazon Linux 2 64 bits

  • /var/log/docker-events.log

  • /var/log/eb-ecs-mgr.log

  • /var/log/eb-engine.log

  • /var/log/eb-hooks.log

  • /var/log/ecs/ecs-agent.log

  • /var/log/ecs/ecs-init.log

Go

.NET Core sous Linux

Java / Branche de plateforme : Corretto s'exécutant sur Amazon Linux 2 64 bits

  • /var/log/eb-engine.log

  • /var/log/eb-hooks.log

  • /var/log/web.stdout.log

  • /var/log/nginx/access.log

  • /var/log/nginx/error.log

Node.js

Python

  • /var/log/eb-engine.log

  • /var/log/eb-hooks.log

  • /var/log/web.stdout.log

  • /var/log/httpd/access_log

  • /var/log/httpd/error_log

  • /var/log/nginx/access.log

  • /var/log/nginx/error.log

Tomcat

PHP

  • /var/log/eb-engine.log

  • /var/log/eb-hooks.log

  • /var/log/httpd/access_log

  • /var/log/httpd/error_log

  • /var/log/nginx/access.log

  • /var/log/nginx/error.log

.NET sous Windows Server

  • C:\inetpub\logs\LogFiles\W3SVC1\u_ex*.log

  • C:\Program Files\Amazon\ElasticBeanstalk\logs\AWSDeployment.log

  • C:\Program Files\Amazon\ElasticBeanstalk\logs\Hooks.log

Ruby

  • /var/log/eb-engine.log

  • /var/log/eb-hooks.log

  • /var/log/puma/puma.log

  • /var/log/web.stdout.log

  • /var/log/nginx/access.log

  • /var/log/nginx/error.log

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.

Le tableau suivant répertorie les fichiers journaux diffusés à partir d'instances sur des branches de plateforme en fonction de l'AMI Amazon Linux (anciennement Amazon Linux 2), par plateforme.

Plateforme / Branche de plateforme

Journaux

Docker /

Branche de plateforme : Docker s'exécutant sur Amazon Linux 64 bits

  • /var/log/eb-activity.log

  • /var/log/nginx/error.log

  • /var/log/docker-events.log

  • /var/log/docker

  • /var/log/nginx/access.log

  • /var/log/eb-docker/containers/eb-current-app/stdouterr.log

Docker /

Branche de plateforme : Docker multiconteneur s'exécutant sur Amazon Linux 64 bits

  • /var/log/eb-activity.log

  • /var/log/ecs/ecs-init.log

  • /var/log/eb-ecs-mgr.log

  • /var/log/ecs/ecs-agent.log

  • /var/log/docker-events.log

Glassfish (Docker préconfiguré)

  • /var/log/eb-activity.log

  • /var/log/nginx/error.log

  • /var/log/docker-events.log

  • /var/log/docker

  • /var/log/nginx/access.log

Go

  • /var/log/eb-activity.log

  • /var/log/nginx/error.log

  • /var/log/nginx/access.log

Java /

Branche de plateforme : Java 8 s'exécutant sur Amazon Linux 64 bits

Branche de plateforme : Java 7 s'exécutant sur Amazon Linux 64 bits

  • /var/log/eb-activity.log

  • /var/log/nginx/access.log

  • /var/log/nginx/error.log

  • /var/log/web-1.error.log

  • /var/log/web-1.log

Tomcat

  • /var/log/eb-activity.log

  • /var/log/httpd/error_log

  • /var/log/httpd/access_log

  • /var/log/nginx/error_log

  • /var/log/nginx/access_log

Node.js

  • /var/log/eb-activity.log

  • /var/log/nodejs/nodejs.log

  • /var/log/nginx/error.log

  • /var/log/nginx/access.log

  • /var/log/httpd/error.log

  • /var/log/httpd/access.log

PHP

  • /var/log/eb-activity.log

  • /var/log/httpd/error_log

  • /var/log/httpd/access_log

Python

  • /var/log/eb-activity.log

  • /var/log/httpd/error_log

  • /var/log/httpd/access_log

  • /opt/python/log/supervisord.log

Ruby /

Branche de plateforme : Puma s'exécutant sur Amazon Linux 64 bits

  • /var/log/eb-activity.log

  • /var/log/nginx/error.log

  • /var/log/puma/puma.log

  • /var/log/nginx/access.log

Ruby /

Branche de plateforme : Passenger avec Ruby s'exécutant sur Amazon Linux 64 bits

  • /var/log/eb-activity.log

  • /var/app/support/logs/passenger.log

  • /var/app/support/logs/access.log

  • /var/app/support/logs/error.log

Elastic Beanstalk configure des groupes de journaux dans CloudWatch Logs pour les différents fichiers journaux qu'il diffuse. Pour extraire des fichiers journaux spécifiques de CloudWatch Logs, vous devez connaître le nom du groupe de journaux correspondant. Le schéma d'attribution de noms des groupes de journaux dépend du système d'exploitation utilisé par la plateforme.

Pour les plateformes Linux, préfixez l'emplacement du fichier journal de l'instance avec /aws/elasticbeanstalk/environment_name pour obtenir le nom du groupe de journaux. Par exemple, pour extraire le fichier /var/log/nginx/error.log, indiquez le nom du groupe de journaux /aws/elasticbeanstalk/environment_name/var/log/nginx/error.log.

Pour les plateformes Windows, consultez le tableau suivant pour connaître le groupe de journaux correspondant à chaque fichier journal.

Fichier journal d'instance

Groupe de journaux

C:\Program Files\Amazon\ElasticBeanstalk\logs\AWSDeployment.log

/aws/elasticbeanstalk/<environment-name>/EBDeploy-Log

C:\Program Files\Amazon\ElasticBeanstalk\logs\Hooks.log

/aws/elasticbeanstalk/<environment-name>/EBHooks-Log

C:\inetpub\logs\LogFiles (ensemble du répertoire)

/aws/elasticbeanstalk/<environment-name>/IIS-Log

Streaming de journaux d'instance vers CloudWatch Logs

Vous pouvez activer le streaming de journaux d'instance vers CloudWatch Logs à l'aide de la console Elastic Beanstalk, de l'interface de ligne de commande EB ou des options de configuration.

Avant de l'activer, configurez les autorisations IAM à utiliser avec l'agent CloudWatch Logs. Vous pouvez attacher la politique personnalisée ci-après au profil d'instance que vous attribuez à votre environnement.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:PutLogEvents", "logs:DescribeLogGroups", "logs:DescribeLogStreams" ], "Resource": [ "*" ] } ] }

Streaming de journaux d'instance à l'aide de la console Elastic Beanstalk

Pour diffuser des journaux d'instance vers CloudWatch Logs
  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, choisissez Configuration.

  4. Dans la catégorie de configuration Mises à jour, surveillance et journalisation, sélectionnez Modifier.

  5. Sous Streaming des journaux d'instance vers CloudWatch Logs :

    • Activez Streaming des journaux.

    • Définissez Conservation sur le nombre de jours de conservation des journaux.

    • Sélectionnez le paramètre de cycle de vie qui détermine si les journaux sont enregistrés une fois l'environnement résilié.

  6. Pour enregistrer les modifications, cliquez sur Appliquer en bas de la page.

Après avoir activé le streaming de journaux, vous pouvez revenir à la page ou à la catégorie de configuration Logiciels pour trouver le lien Groupes de journaux. Cliquez sur ce lien pour afficher vos journaux dans la console CloudWatch.

Streaming de journaux d'instance à l'aide de l'interface de ligne de commande EB

Pour activer le streaming des journaux d'instance vers CloudWatch Logs à l'aide de l'interface de ligne de commande EB, utilisez la commande eb logs.

$ eb logs --cloudwatch-logs enable

Vous pouvez également utiliser la commande eb logs pour extraire des journaux à partir de CloudWatch Logs. Vous pouvez récupérer tous les journaux d'instance de l'environnement ou utiliser les nombreuses options de la commande pour spécifier des sous-ensembles de journaux à extraire. Par exemple, la commande suivante extrait l'ensemble complet des journaux d'instance de votre environnement et les enregistre dans un répertoire sous .elasticbeanstalk/logs.

$ eb logs --all

En particulier, l'option --log-group vous permet d'extraire les journaux d'instance d'un groupe de journaux spécifique, correspondant à un fichier journal d'instance spécifique. Pour ce faire, vous devez connaître le nom du groupe de journaux correspondant au fichier journal que vous souhaitez récupérer. Vous pouvez trouver ces informations dans Méthode de configuration de CloudWatch Logs par Elastic Beanstalk.

Streaming des journaux d'instance à l'aide de fichiers de configuration

Lorsque vous créez ou mettez à jour un environnement, vous pouvez utiliser un fichier de configuration pour installer et configurer le streaming des journaux d'instance vers CloudWatch Logs. L'exemple de fichier de configuration suivant active le streaming des journaux d'instance par défaut. Elastic Beanstalk diffuse l'ensemble de fichiers journaux par défaut correspondant à la plateforme de votre environnement. Pour utiliser l'exemple, copiez le texte dans un fichier avec l'extension .config dans le répertoire .ebextensions au niveau supérieur du bundle de fichiers source de votre application.

option_settings: - namespace: aws:elasticbeanstalk:cloudwatch:logs option_name: StreamLogs value: true

Streaming de fichiers journaux personnalisés

L'intégration d'Elastic Beanstalk à CloudWatch Logs ne prend pas directement en charge le streaming des fichiers journaux personnalisés générés par votre application. Pour diffuser des journaux personnalisés, utilisez un fichier de configuration pour installer directement l'agent CloudWatch Logs et configurer les fichiers à transmettre. Pour obtenir un exemple de fichier de configuration, consultez logs-streamtocloudwatch-linux.config.

Note

L'exemple ne fonctionne pas sur la plateforme Windows.

Pour plus d'informations sur la configuration de CloudWatch Logs, consultez la Référence de l'agent CloudWatch Logs dans le Guide de l'utilisateur Amazon CloudWatch Logs.

Résolution des problèmes liés à l'intégration de CloudWatch Logs

Si vous ne trouvez pas certains des journaux d'instance de l'environnement que vous recherchez dans CloudWatch Logs, passez en revue les problèmes courants suivants :

  • Votre rôle IAM ne dispose pas des autorisations IAM requises.

  • Vous avez lancé votre environnement dans une Région AWS qui ne prend pas en charge CloudWatch Logs.

  • L'un de vos fichiers journaux personnalisés n'existe pas dans le chemin que vous avez spécifié.