Logs von EC2 Amazon-Instances in Ihrer Elastic Beanstalk Beanstalk-Umgebung anzeigen - AWS Elastic Beanstalk

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Logs von EC2 Amazon-Instances in Ihrer Elastic Beanstalk Beanstalk-Umgebung anzeigen

In diesem Thema werden die Arten von Instance-Logs erklärt, die Elastic Beanstalk bereitstellt. Es enthält auch detaillierte Anweisungen zum Abrufen und Verwalten dieser Dateien.

Die EC2 Amazon-Instances in Ihrer Elastic Beanstalk Beanstalk-Umgebung generieren Protokolle, die Sie einsehen können, um Probleme mit Ihren Anwendungs- oder Konfigurationsdateien zu beheben. Protokolle, die vom Webserver, dem Anwendungsserver und den Skripten der Elastic Beanstalk-Plattform erstellt und lokal auf einzelnen Instances gespeichert AWS CloudFormation werden. Sie können sie einfach mithilfe der Environment Management Console oder der EB abrufen. CLI Sie können Ihre Umgebung auch so konfigurieren, dass Protokolle in Echtzeit an Amazon CloudWatch Logs gestreamt werden.

Als Protokollfragmente werden die letzten 100 Zeilen der am häufigsten verwendeten Protokolldateien bezeichnet, z. B. Elastic Beanstalk-Betriebsprotokolle sowie Protokolle vom Webserver oder Anwendungsserver. Wenn Sie Protokollfragmente in der Environment Management Console oder mit eb logs anfordern, verkettet eine Instance der Umgebung die letzten Protokolleinträge zu einer einzigen Textdatei und lädt diese in Amazon S3 hoch.

Bei Bundle-Protokollen handelt es sich um vollständige Protokolle für ein breiteres Spektrum an Protokolldateien, darunter Protokolle von "yum" und "cron" und verschiedene Protokolle von AWS CloudFormation. Wenn Sie Bundle-Protokolle anfordern, packt eine Instance in Ihrer Umgebung die vollständigen Protokolldateien in ein ZIP Archiv und lädt sie auf Amazon S3 hoch.

Anmerkung

Elastic Beanstalk Windows Server-Plattformen unterstützen keine Bundle-Protokolle.

Damit rotierte Protokolle in Amazon S3 hochgeladen werden können, müssen die Instances der Umgebung über ein Instance-Profil mit Schreibberechtigung für den Elastic Beanstalk Amazon S3-Bucket verfügen. Diese Berechtigungen sind im Instance-Standardprofil enthalten, zu dessen Erstellung Sie von Elastic Beanstalk aufgefordert werden, wenn Sie zum ersten Mal eine Umgebung in der Elastic Beanstalk-Konsole starten.

So rufen Sie Instance-Protokolle ab:
  1. Öffnen Sie die Elastic Beanstalk Beanstalk-Konsole und wählen Sie in der Liste Regionen Ihre aus. AWS-Region

  2. Wählen Sie im Navigationsbereich Environments (Umgebungen) aus und wählen Sie dann in der Liste den Namen Ihrer Umgebung aus.

    Anmerkung

    Wenn Sie viele Umgebungen haben, filtern Sie Umgebungsliste mit der Suchleiste.

  3. Wählen Sie im Navigationsbereich Protokolle aus.

  4. Wählen Sie Request Logs (Protokolle anfordern) und wählen Sie dann den Typ der Protokolle, die abgerufen werden sollen. Um Protokollfragmente abzurufen, wählen Sie Last 100 Lines aus. Für den Abruf von Bundle-Protokollen wählen Sie Full Logs aus.

  5. Wenn Elastic Beanstalk mit dem Abrufen Ihrer Protokolle fertig ist, wählen Sie Download (Herunterladen) aus.

Elastic Beanstalk speichert Tail- und Bundle-Logs in einem Amazon S3-Bucket und generiert ein vorsigniertes Amazon S3URL, mit dem Sie auf Ihre Logs zugreifen können. Elastic Beanstalk löscht die Dateien von Amazon S3 nach 15 Minuten.

Warnung

Jeder, der im Besitz des vorsignierten Amazon S3 ist, URL kann auf die Dateien zugreifen, bevor sie gelöscht werden. Stellen Sie sie nur vertrauenswürdigen Parteien zur URL Verfügung.

Anmerkung

Ihre Benutzerrichtlinie muss die Berechtigung s3:DeleteObject haben. Elastic Beanstalk verwendet Ihre Benutzerberechtigungen, um die Protokolle von Amazon S3 zu löschen.

Damit Protokolle erhalten bleiben, können Sie Ihre Umgebung so konfigurieren, dass Protokolle nach dem Rotieren automatisch in Amazon S3 veröffentlicht werden. Befolgen Sie zum Rotieren von Protokollen in Amazon S3 die Anleitung unter Konfigurieren der Anzeige von Instance-Protokollen. Instances in der Umgebung versuchen dann, Protokolle hochzuladen, die einmal pro Stunde rotiert wurden.

Wenn die Anwendung Protokolle an einem Speicherort generiert, der nicht zur Standardkonfiguration der Umgebungsplattform gehört, können Sie die Standardkonfiguration mithilfe von Konfigurationsdateien erweitern (.ebextensions). Die Protokolldateien der Anwendung können zu Protokollfragmenten, zu Bundle-Protokollen oder zur Protokollrotation hinzugefügt werden.

Für Echtzeit-Log-Streaming und Langzeitspeicherung konfigurieren Sie Ihre Umgebung so, dass Logs an Amazon CloudWatch Logs gestreamt werden.

Speicherort auf EC2 Amazon-Instances

Protokolle werden an Standardspeicherorten auf den EC2 Amazon-Instances in Ihrer Umgebung gespeichert. Elastic Beanstalk erzeugt die folgenden Protokolle.

Amazon Linux 2

  • /var/log/eb-engine.log

Amazon Linux AMI (AL1)

Anmerkung

Am 18. Juli 2022 hat Elastic Beanstalk den Status aller Plattformbranchen, die auf Amazon Linux AMI (AL1) basieren, auf eingestellt gesetzt. Weitere Informationen zur Migration zu einem aktuellen und vollständig unterstützten Plattformzweig für Amazon Linux 2023 finden Sie unter Migrieren der Elastic-Beanstalk-Linux-Anwendung zu Amazon Linux 2023 oder 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

Diese Protokolle enthalten Meldungen über Bereitstellungsaktivitäten, einschließlich solcher über Konfigurationsdateien (.ebextensions).

Jede Anwendung und jeder Webserver speichert Protokolle in einem eigenen Ordner:

  • 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/

Speicherort der Protokolle in Amazon S3

Wenn Sie Protokollfragmente oder Bundle-Protokolle aus Ihrer Umgebung anfordern oder wenn Instances rotierte Protokolle hochgeladen haben, werden diese in Ihrem Elastic Beanstalk-Bucket in Amazon S3 gespeichert. Elastic Beanstalk erstellt einen Bucket, der elasticbeanstalk-region-account-id nach jeder AWS Region benannt ist, in der Sie Umgebungen erstellen. In diesem Bucket werden Protokolle unter dem Pfad resources/environments/logs/logtype/environment-id/instance-id gespeichert.

Beispielsweise werden Logs von der Instanz i-0a1fd158 in der Elastic Beanstalk Beanstalk-Umgebung unter AWS Region e-mpcwnwheky us-west-2 im Account 123456789012 an den folgenden Orten gespeichert:

  • Tail Logs

    s3://elasticbeanstalk-us-west-2-123456789012/resources/environments/logs/tail/e-mpcwnwheky/i-0a1fd158

  • Bundle Logs

    s3://elasticbeanstalk-us-west-2-123456789012/resources/environments/logs/bundle/e-mpcwnwheky/i-0a1fd158

  • Rotated Logs

    s3://elasticbeanstalk-us-west-2-123456789012/resources/environments/logs/publish/e-mpcwnwheky/i-0a1fd158

Anmerkung

Die Umgebungs-ID finden Sie in der Environment Management Console.

Elastic Beanstalk löscht Tail- und Bundle-Protokolle von Amazon S3 automatisch 15 Minuten nach ihrer Erstellung. Rotierte Protokolle werden solange aufbewahrt, bis Sie diese löschen oder in S3 Glacier verschieben.

Protokollrotations-Einstellungen auf Linux

Auf Linux-Plattformen verwendet Elastic Beanstalk logrotate, um Protokolle periodisch zu rotieren. Nach der lokalen Rotation des Protokolls erfasst es die Protokollrotationsaufgabe und lädt es in Amazon S3 hoch (sofern dies konfiguriert ist). Lokal rotierte Protokolle werden standardmäßig nicht in Protokollfragmente oder Bundle-Protokolle aufgenommen.

Elastic Beanstalk-Konfigurationsdateien für logrotate finden Sie unter /etc/logrotate.elasticbeanstalk.hourly/. Diese Rotationseinstellungen sind plattformspezifisch und können sich in späteren Versionen der Plattform ändern. Führen Sie man logrotate aus, um weitere Informationen zu den verfügbaren Einstellungen sowie Beispielkonfigurationen zu erhalten.

Die Konfigurationsdateien werden von Cron-Aufträgen in /etc/cron.hourly/ aufgerufen. Führen Sie zum Erhalten weiterer Informationen zu cron man cron aus.

Erweitern der Standardkonfiguration für Protokollaufgaben

Elastic Beanstalk verwendet Dateien in Unterordnern von /opt/elasticbeanstalk/tasks (Linux) oder C:\Program Files\Amazon\ElasticBeanstalk\config (Windows Server) auf der EC2 Amazon-Instance, um Aufgaben für Tail Logs, Bundle-Logs und Log-Rotation zu konfigurieren.

Auf Amazon Linux:

  • Tail Logs

    /opt/elasticbeanstalk/tasks/taillogs.d/

  • Bundle Logs

    /opt/elasticbeanstalk/tasks/bundlelogs.d/

  • Rotated Logs

    /opt/elasticbeanstalk/tasks/publishlogs.d/

Auf Windows Server:

  • Tail Logs

    c:\Program Files\Amazon\ElasticBeanstalk\config\taillogs.d\

  • Rotated Logs

    c:\Program Files\Amazon\ElasticBeanstalk\config\publogs.d\

Beispielsweise werden mit der Datei eb-activity.conf auf Linux zwei Protokolldateien zur Protokollfragmentaufgabe hinzugefügt:

/opt/elasticbeanstalk/tasks/taillogs.d/eb-activity.conf

/var/log/eb-commandprocessor.log /var/log/eb-activity.log

Sie können Umgebungskonfigurationsdateien (.ebextensions) verwenden, um Ihre eigenen .conf-Dateien diesen Ordnern hinzuzufügen. Eine .conf-Datei listet für Ihre Anwendung spezifische Protokolldateien auf, die Elastic Beanstalk zu den Protokolldateiaufgaben hinzufügt.

Verwenden Sie den Abschnitt files, um Konfigurationsdateien zu den Aufgaben hinzuzufügen, die geändert werden sollen. Der folgende Konfigurationstext fügt beispielsweise eine Protokollkonfigurationsdatei zu den einzelnen Instances Ihrer Umgebung hinzu. Die Protokollkonfigurationsdatei cloud-init.conf fügt /var/log/cloud-init.log zu Protokollfragmenten hinzu.

files: "/opt/elasticbeanstalk/tasks/taillogs.d/cloud-init.conf" : mode: "000755" owner: root group: root content: | /var/log/cloud-init.log

Fügen Sie diesen Text zu einer Datei mit der Dateinamenerweiterung .config zu Ihrem Quell-Bundle in einen Ordner namens .ebextensions hinzu.

~/workspace/my-app |-- .ebextensions | `-- tail-logs.config |-- index.php `-- styles.css

Auf Linux-Plattformen können Sie bei der Konfiguration von Protokollaufgaben auch Platzhalterzeichen einsetzen. Mithilfe dieser Konfigurationsdatei werden alle Dateien mit der Erweiterung .log, die sich im Ordner log des Anwendungsstamms befinden, zu Bundle-Protokollen hinzugefügt.

files: "/opt/elasticbeanstalk/tasks/bundlelogs.d/applogs.conf" : mode: "000755" owner: root group: root content: | /var/app/current/log/*.log

Konfiguration von Protokollaufgaben unterstützen keine Platzhalterzeichen auf Windows-Plattformen.

Anmerkung

Um sich mit den Verfahren zur Protokollanpassung vertraut zu machen, können Sie mithilfe von EB eine Beispielanwendung bereitstellen. CLI Zu diesem Zweck CLI erstellt die EB ein lokales Anwendungsverzeichnis, das ein .ebextentions Unterverzeichnis mit einer Beispielkonfiguration enthält. Sie können die Protokolldateien der Beispielanwendung auch dazu verwenden, die in diesem Thema beschriebene Protokollabruffunktion zu untersuchen. Weitere Informationen zum Erstellen einer Beispielanwendung mit dem EB CLI finden Sie unter CLIEB-Grundlagen.

Weitere Informationen zur Verwendung von Konfigurationsdateien finden Sie unter Erweiterte Umgebungsanpassung mit Konfigurationsdateien (.ebextensions).

So wie Sie Protokollfragmente und Bundle-Protokolle erweitern können, so können Sie auch Protokollrotation mit einer Konfigurationsdatei erweitern. Jedes Mal, wenn Elastic Beanstalk seine eigenen Protokolle rotiert und auf Amazon S3 hochlädt, rotiert es auch Ihre zusätzlichen Protokolle und lädt sie hoch. Die Protokollrotation-Erweiterung verhält sich abhängig vom Betriebssystem der Plattform anders. In den folgenden Abschnitten werden diese beiden Fälle beschrieben.

Erweitern der Protokollrotation auf Linux

Wie in Protokollrotations-Einstellungen auf Linux erläutert, verwendet Elastic Beanstalk logrotate zum Rotieren von Protokollen auf Linux-Plattformen. Wenn Sie die Protokolldateien Ihrer Anwendung für Protokollrotation konfigurieren, muss die Anwendung keine Kopien von Protokolldateien erstellen. Elastic Beanstalk konfiguriert logrotate so, dass bei jeder Rotation eine Kopie der Protokolldateien Ihrer Anwendung erstellt wird. Aus diesem Grund muss die Anwendung die Protokolldateien entsperrt halten, wenn sie nicht aktiv in sie schreibt.

Ausdehnen der Protokollrotation auf Windows Server

Auf Windows Server muss die Anwendung die Protokolldateien regelmäßig rotieren, wenn Sie Ihre Anwendung für Protokollrotation konfigurieren. Elastic Beanstalk sucht nach Dateien mit Namen, die mit dem von Ihnen konfigurierten Muster beginnen, und markiert sie zum Hochladen in Amazon S3. Darüber hinaus werden Punkte im Dateinamen ignoriert und Elastic Beanstalk betrachtet den Namen bis zum Punkt als Basis-Protokolldateinamen.

Elastic Beanstalk lädt alle Versionen einer Basis-Protokolldatei hoch, mit Ausnahme der neuesten, da es diese als aktive Protokolldatei der Anwendung betrachtet, die möglicherweise gesperrt sein kann. Ihre Anwendung kann daher die aktive Protokolldatei zwischen Rotationen gesperrt halten.

Beispiel: Ihre Anwendung schreibt in eine Protokolldatei mit dem Namen my_log.log und Sie geben diesen Namen in der .conf-Datei an. Die Anwendung rotiert die Datei in regelmäßigen Abständen. Während des Elastic Beanstalk-Rotationszyklus findet die Anwendung die folgenden Dateien im Ordner der Protokolldatei: my_log.log, my_log.0800.log und my_log.0830.log. Elastic Beanstalk betrachtet sie alle als Versionen des gleichen Basisnamens my_log. Die Datei my_log.log hat die neueste Änderungszeit, daher lädt Elastic Beanstalk nur die beiden anderen Dateien, my_log.0800.log und my_log.0830.log, hoch.

Protokolldateien nach Amazon CloudWatch Logs streamen

Sie können Ihre Umgebung in der Elastic Beanstalk Beanstalk-Konsole oder mithilfe von Konfigurationsoptionen so konfigurieren, dass CloudWatch Logs zu Amazon Logs gestreamt werden. Mit CloudWatch Logs streamt jede Instance in Ihrer Umgebung Logs in Protokollgruppen, die Sie so konfigurieren können, dass sie für Wochen oder Jahre aufbewahrt werden, auch wenn Ihre Umgebung beendet wurde.

Die gestreamten Protokollsätze sind je nach Umgebung unterschiedlich, enthalten aber immer das Protokoll eb-engine.log sowie die Zugriffsprotokolle des nginx- oder Apache-Proxy-Servers, der vor der Anwendung ausgeführt wird.

Sie können das Protokoll-Streamen in der Elastic Beanstalk-Konsole entweder beim Erstellen der Umgebung oder für eine vorhandene Umgebung konfigurieren. Sie können die folgenden Optionen von der Konsole aus festlegen: Log-Streaming in CloudWatch Logs aktivieren/deaktivieren, die Anzahl der Aufbewahrungstage festlegen und aus Lifecyle-Optionen wählen. Im folgenden Beispiel werden Protokolle auch dann für sieben Tage gespeichert, wenn die Umgebung beendet wird.

Bildschirmbild der CloudWatch Logs-Einstellungen in der Elastic Beanstalk Beanstalk-Konsole.

Mit der folgenden Konfigurationsdatei wird das Protokoll-Streaming aktiviert und die Protokolle bleiben 180 Tage erhalten, auch bei beendeter Umgebung.

Beispiel .ebextensions/log-streaming.config
option_settings: aws:elasticbeanstalk:cloudwatch:logs: StreamLogs: true DeleteOnTerminate: false RetentionInDays: 180