Comment puis-je résoudre des problèmes liés à la journalisation dans Elastic Beanstalk ?

Date de la dernière mise à jour : 29/10/2019

Mon fichier journal est vide ou mon flux de journal a brusquement arrêté la diffusion de messages journaux. Comment puis-je résoudre ce problème dans AWS Elastic Beanstalk ?

Résolution

Choisissez l'une des options suivantes selon le problème de journalisation que vous rencontrez :

Trouver vos fichiers journaux vides

Par défaut, Elastic Beanstalk conserve tous les journaux sur les instances Amazon Elastic Compute Cloud (Amazon EC2) de votre environnement. En outre, il effectue régulièrement une rotation de vos journaux afin de gérer la taille des fichiers et d’économiser de l'espace disque. Elastic Beanstalk exporte vos journaux vers Amazon Simple Storage Service (Amazon S3). Pour plus d'informations, consultez Paramètres de rotation des journaux sous Linux.

Vérifiez /var/log/rotated pour accéder aux messages de journaux ayant fait l'objet d'une rotation récente.

Découvrir pourquoi votre fichier journal et votre flux de journal ont cessé de produire de nouveaux messages de journal

Utilisez Amazon CloudWatch Logs pour diffuser vos fichiers journaux en continu à partir de vos instances EC2 Elastic Beanstalk.

Si la diffusion de journaux cesse de fonctionner après la première rotation de journaux sur votre instance EC2, il est possible que votre application ne journalise pas des lignes uniques. Votre journal d'application peut se présenter comme suit, par exemple :

Hello my application!
- at time 1:00 PM
Hello my application!
- at time 2:00 PM
...

Toutes les lignes de l’exemple précédent ne sont pas uniques. Une entrée unique couvre deux lignes. Un minimum de deux lignes est nécessaire pour identifier de façon unique ce fichier journal.

Remarque : l'agent CloudWatch Logs identifie votre fichier journal et utilise le nombre unique de lignes que contient votre fichier pour détecter le moment où la rotation des journaux a lieu.

Pour que la diffusion de journaux fonctionne à nouveau, essayez l'une des actions suivantes :

Modifiez le format de journal d'application pour inclure un identifiant unique (tel qu'un horodatage) au début de chaque ligne.

-ou-

Modifiez l'entrée file_fingerprint_lines pour compter les lignes de votre fichier jusqu'à ce qu'un nombre suffisant de lignes soit inclus pour identifier le fichier de façon unique.

Remarque : pour modifier ce paramètre, vous devez personnaliser la configuration de l'agent CloudWatch Logs. L'intégration d'Elastic Beanstalk à CloudWatch Logs ne prend pas directement en charge la diffusion de fichiers journaux personnalisés que votre application génère. Pour diffuser des journaux personnalisés, utilisez un fichier de configuration afin d'installer directement l'agent CloudWatch Logs et de configurer les fichiers à transmettre.

Par exemple, le fichier .ebextension suivant personnalise file_fingerprint_lines pour les fichiers journaux d'application Node.js :

files:
  "/etc/awslogs/config/beanstalklogs.conf":
    mode: "000644"
    user: root
    group: root
    content: |
      [/var/log/nodejs/nodejs.log]
      log_group_name=/aws/elasticbeanstalk/streamlogs/var/log/nodejs/nodejs.log
      log_stream_name={instance_id}
      file=/var/log/nodejs/nodejs.log*
      file_fingerprint_lines=2-5
 
      [/var/log/nginx/error.log]
      log_group_name=/aws/elasticbeanstalk/streamlogs/var/log/nginx/error.log
      log_stream_name={instance_id}
      file=/var/log/nginx/error.log*
 
      [/var/log/nginx/access.log]
      log_group_name=/aws/elasticbeanstalk/streamlogs/var/log/nginx/access.log
      log_stream_name={instance_id}
      file=/var/log/nginx/access.log*
 
      [/var/log/httpd/error.log]
      log_group_name=/aws/elasticbeanstalk/streamlogs/var/log/httpd/error.log
      log_stream_name={instance_id}
      file=/var/log/httpd/error.log*
 
      [/var/log/httpd/access.log]
      log_group_name=/aws/elasticbeanstalk/streamlogs/var/log/httpd/access.log
      log_stream_name={instance_id}
      file=/var/log/httpd/access.log*
 
      [/var/log/eb-activity.log]
      log_group_name=/aws/elasticbeanstalk/streamlogs/var/log/eb-activity.log
      log_stream_name={instance_id}
      file=/var/log/eb-activity.log*
 
commands:
  01_remove_eb_stream_config:
    command: 'rm -fr /etc/awslogs/config/beanstalklogs.conf.bak'
  02_restart_log_agent:
    command: 'service awslogs restart'

Résolution du problème d'échec de la création d'un flux de journaux

Si votre flux de journaux ne s'affiche toujours pas malgré l’activation de la diffusion de journaux, consultez Résolution des problèmes d'intégration CloudWatch Logs.