Comment résoudre les problèmes de journalisation dans Elastic Beanstalk ?

Lecture de 3 minute(s)
0

Mon fichier journal est vide ou mon flux de journal a soudainement cessé de diffuser des messages de journal. Je souhaite résoudre ce problème dans AWS Elastic Beanstalk.

Résolution

Choisissez l'une des options suivantes en fonction du problème de journalisation que vous rencontrez :

Trouvez vos fichiers journaux vides

Par défaut, Elastic Beanstalk conserve tous les journaux des instances Amazon Elastic Compute Cloud (Amazon EC2) de votre environnement. Elastic Beanstalk procède régulièrement à la rotation de vos journaux pour gérer la taille des fichiers et économiser de l'espace disque. Elastic Beanstalk exporte vos journaux vers Amazon Simple Storage Service (Amazon S3). Pour plus d'informations, consultez la section Paramètres de rotation des journaux sous Linux. Pour accéder aux messages du journal ayant fait l'objet d'une rotation récente, consultez /var/log/rotated.

Déterminez pourquoi votre fichier journal et votre flux de journaux ont cessé de générer de nouveaux messages de journal

Pour diffuser en continu vos fichiers journaux depuis vos instances Elastic Beanstalk EC2, utilisez Amazon CloudWatch Logs.

Si le flux de journaux ne fonctionne pas après la première rotation des journaux sur votre instance EC2, il est possible que votre application n'enregistre pas de lignes uniques. Le journal de votre application peut ressembler à l'exemple suivant :

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

Dans l'exemple précédent, chaque ligne n'est pas unique. Une entrée unique s'étend sur deux lignes. Il faut au moins deux lignes pour identifier de manière unique ce fichier journal.

**Remarque :**Pour détecter la rotation des journaux, l'agent CloudWatch Logs identifie votre fichier journal et utilise le nombre unique de lignes qu'il contient.

Pour que le flux de journaux fonctionne à nouveau, essayez l'une des solutions suivantes :

Modifiez le format du journal des applications pour inclure un identifiant unique, tel qu'un horodatage, au début de chaque ligne.

-ou-

Modifiez la valeur file \ _fingerprint \ _lines pour compter les lignes de votre fichier jusqu'à ce que suffisamment de lignes soient incluses pour identifier le fichier de manière unique.

**Remarque :**Pour modifier cette valeur, vous devez personnaliser la configuration de l'agent CloudWatch Logs. 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 l'agent CloudWatch Logs et configurez les fichiers à envoyer.

Par exemple, l'extension .ebextension suivante 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ésoudre les problèmes liés à l'échec de la création d'un flux de journal

Si vous avez activé le flux de journaux mais que celui-ci ne s'affiche toujours pas, consultez la section Résolution des problèmes liés à l'intégration de CloudWatch Logs.

Informations connexes

Utilisation d'Elastic Beanstalk avec Amazon CloudWatch Logs

Streaming de fichiers journaux personnalisé

logs-streamtocloudwatch-linux.config sur le site GitHub

AWS OFFICIEL
AWS OFFICIELA mis à jour il y a 8 mois