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

Cette rubrique explique les fonctionnalités de surveillance que le service Amazon CloudWatch Logs peut fournir à Elastic Beanstalk. Il vous guide également tout au long de la configuration et répertorie les emplacements des journaux pour chaque plateforme Elastic Beanstalk.

La mise en œuvre de CloudWatch journaux peut vous permettre d'effectuer les activités de surveillance suivantes :

  • Surveillez et archivez votre application Elastic Beanstalk, votre système et vos fichiers journaux personnalisés à partir des instances EC2 Amazon de vos environnements.

  • Configurez des alarmes qui vous permettent de réagir plus facilement à des événements spécifiques du flux de journal extraits par vos filtres métriques.

L'agent CloudWatch Logs installé sur chaque EC2 instance Amazon de votre environnement publie des points de données métriques sur le CloudWatch service pour chaque groupe de journaux que vous configurez. Chaque groupe de journaux applique ses propres modèles de filtre pour déterminer les événements du flux de journaux auxquels envoyer CloudWatch des 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 qu'il diffuse automatiquement les journaux CloudWatch vers le service, comme décrit dans. Streaming des logs d'instance vers CloudWatch Logs Pour plus d'informations sur CloudWatch les journaux, y compris la terminologie et les concepts, consultez le guide de l'utilisateur Amazon CloudWatch Logs.

Outre les journaux d'instance, si vous activez l'amélioration de l'état de santé de votre environnement, vous pouvez configurer l'environnement pour qu'il diffuse les informations de santé vers CloudWatch les journaux. Consultez Diffusion d'informations sur l'état de l'environnement Elastic Beanstalk vers Amazon CloudWatch Logs.

Conditions préalables à la diffusion des journaux d'instance vers Logs CloudWatch

Pour activer le streaming des journaux depuis les EC2 instances Amazon 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 par AWSElasticBeanstalkWorkerTierElastic Beanstalk AWSElasticBeanstalkWebTierou d'Elastic Beanstalk dans votre profil d'instance Elastic Beanstalk, vous devez ajouter les éléments suivants à votre profil pour activer cette fonctionnalité.

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

Comment Elastic Beanstalk configure les journaux CloudWatch

Elastic Beanstalk CloudWatch installe un agent de journalisation avec les paramètres de configuration par défaut sur chaque instance créée. Pour en savoir plus, consultez le CloudWatch manuel Logs Agent Reference.

Lorsque vous activez le streaming des CloudWatch journaux d'instance vers Logs, Elastic Beanstalk envoie les fichiers journaux des instances de votre environnement vers Logs. CloudWatch 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/ /stdouterr.log eb-current-app

  • /var/log/nginx/access.log

  • /var/log/nginx/error.log

Docker /

Branche de plate-forme : ECS exécution sur Amazon Linux 2 64 bits

  • /var/log/docker-events.log

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

  • /var/log/eb-engine.log

  • /var/log/eb-hooks.log

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

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

Go

. NETCore 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

. NETsur Windows Server

  • C:\inetpub\logs \ \ W3 LogFiles SVC1 \ 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 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.

Le tableau suivant répertorie les fichiers journaux diffusés depuis des instances sur des branches de plate-forme basées sur Amazon Linux AMI (précédent Amazon Linux 2), par plate-forme.

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/ /stdouterr.log eb-current-app

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/ .log eb-ecs-mgr

  • /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 CloudWatch groupes de journaux dans Logs pour les différents fichiers journaux qu'il diffuse. Pour récupérer des fichiers CloudWatch journaux spécifiques à partir de 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 des logs d'instance vers CloudWatch Logs

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

Avant de l'activer, configurez IAM les autorisations à 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 les journaux d'instance vers CloudWatch Logs
  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, choisissez Configuration.

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

  5. Sous Transmission du journal 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 voir vos journaux dans la CloudWatch console.

Streaming du journal d'instance à l'aide de l'EB CLI

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

$ eb logs --cloudwatch-logs enable

Vous pouvez également l'utiliser eb logs pour récupérer 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 Comment Elastic Beanstalk configure les journaux CloudWatch .

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 configurer et configurer le streaming des CloudWatch journaux d'instance vers 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' CloudWatch intégration d'Elastic Beanstalk à Logs ne prend pas directement en charge le streaming de 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' CloudWatch agent et pour configurer les fichiers à transférer. 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 des CloudWatch journaux, consultez la référence du fichier de configuration de l'CloudWatch agent dans le guide de CloudWatch l'utilisateur Amazon.

Résolution des problèmes et intégration CloudWatch des journaux

Si vous ne trouvez pas certains des journaux d'instance de l'environnement que vous attendez dans CloudWatch Logs, vous pouvez étudier les problèmes courants suivants :

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

  • Vous avez lancé votre environnement dans un environnement Région AWS qui ne prend pas en charge CloudWatch les journaux.

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