Verwenden von Elastic Beanstalk mit Amazon CloudWatch Logs - 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.

Verwenden von Elastic Beanstalk mit Amazon CloudWatch Logs

Mit CloudWatch Logs können Sie Ihre Elastic Beanstalk-Anwendungs-, System- und benutzerdefinierten Protokolldateien von Amazon EC2-Instances Ihrer Umgebungen überwachen und archivieren. Sie können auch Alarme konfigurieren, durch die Sie einfacher auf bestimmte Protokollstreamereignisse reagieren können, die Ihre Metrikfilter extrahieren. Der auf jeder Amazon EC2-Instance in Ihrer Umgebung installierte CloudWatch Logs-Agent veröffentlicht Metrik-Datenpunkte im CloudWatch-Service für jede Protokollgruppe, die Sie konfigurieren. Jede Protokollgruppe wendet ihre eigenen Filtermuster an, um zu bestimmen, welche Protokollstreamereignisse als Datenpunkte an CloudWatch gesendet werden. Protokollstreams, die zur selben Protokollgruppe gehören, besitzen dieselben Einstellungen für die Aufbewahrung, Überwachung und Zugriffskontrolle. Sie können Elastic Beanstalk so konfigurieren, dass Protokolle automatisch an den CloudWatch-Service gestreamt werden, wie in Streaming von Instance-Protokollen an CloudWatch Logs beschrieben. Weitere Informationen zu CloudWatch Logs, einschließlich Terminologie und Konzepten, finden Sie im Amazon CloudWatch Logs-Benutzerhandbuch.

Zusätzlich zu den Instance-Protokollen können Sie bei Aktivierung der erweiterten Integrität für Ihre Umgebung die Umgebung für das Streamen von Integritätsinformationen an CloudWatch Logs konfigurieren. Siehe Streaming von Integritätsinformationen der Elastic Beanstalk-Umgebung an Amazon CloudWatch Logs.

Die folgende Abbildung zeigt die Seite Monitoring (Überwachung) und Graphen für eine Umgebung, die mit der CloudWatch Logs-Integration konfiguriert ist. Die Beispielmetriken in dieser Umgebung haben die Bezeichnungen CWLHttp4xx und CWLHttp5xx. Einer der Graphen zeigt, dass die CWLHttp4xx-Metrik einen Alarm gemäß den Bedingungen ausgelöst hat, die in den Konfigurationsdateien angegeben sind.

Die folgende Abbildung zeigt Diagramme auf der Seite Alarms (Alarme) und Graphen für die Beispielalarme mit der Bezeichnung AWSEBCWLHttp4xxPercentAlarm und AWSEBCWLHttp5xxCountAlarm, die den Metriken CWLHttp4xx bzw. CWLHttp5xx entsprechen.

Voraussetzungen für das Instance-Protokoll-Streaming an CloudWatch Logs

Um das Streaming von Protokollen von Amazon EC2-Instances Ihrer Umgebung nach CloudWatch Logs zu aktivieren, müssen Sie die folgenden Bedingungen erfüllen.

  • Platform (Plattform) – Da diese Funktion nur in Plattformversionen zur Verfügung steht, die mit oder nach diesem Release veröffentlicht wurden, müssen Sie Ihre Umgebung aktualisieren, falls Sie eine frühere Plattformversion verwenden.

  • Wenn Sie noch nicht über die von Elastic Beanstalk verwaltete Richtlinie AWSElasticBeanstalkWebTier oder AWSElasticBeanstalkWorkerTier in Ihrem Elastic Beanstalk-Instance-Profil verfügen, müssen Sie Folgendes zu Ihrem Profil hinzufügen, um diese Funktion zu aktivieren.

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

Wie Elastic Beanstalk CloudWatch Logs einrichtet

Elastic Beanstalk installiert einen CloudWatch-Protokollagenten mit den Standard-Konfigurationseinstellungen auf jeder Instance, die er erstellt. Weitere Informationen finden Sie in der Referenz für den CloudWatch Logs-Agenten.

Wenn Sie das Streaming von Instance-Protokollen an CloudWatch Logs aktivieren, sendet Elastic Beanstalk Protokolldateien von den Instances Ihrer Umgebung an CloudWatch Logs. Unterschiedliche Plattformen streamen unterschiedliche Protokolle. In der folgenden Tabelle finden Sie die Protokolle nach Plattform sortiert.

Plattform/Plattformzweig

Logs (Protokolle)

Docker/

Plattformzweig: Docker auf Amazon Linux 2 mit 64 Bit

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

Plattformzweig: ECS auf Amazon Linux 2 mit 64 Bit

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

Java/Plattformzweig: Corretto auf Amazon Linux 2 mit 64 Bit

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

Anmerkung

Am 18. Juli 2022 stellte Elastic Beanstalk den Status aller Plattformzweige auf Basis von Amazon-Linux-AMI (AL1) auf außer Betrieb genommen. 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.

In der folgenden Tabelle werden die Protokolldateien nach Plattform aufgelistet, die aus Instances in Plattformverzweigungen auf der Basis von Amazon Linux AMI (vor Amazon Linux 2) gestreamt werden.

Plattform/Plattformzweig

Logs (Protokolle)

Docker/

Plattformzweig: Docker auf Amazon Linux mit 64 Bit

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

Plattformzweig: Multi-Container-Docker auf Amazon Linux mit 64 Bit

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

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

Plattformzweig: Java 8 auf Amazon Linux mit 64 Bit

Plattformzweig: Java 7 auf Amazon Linux mit 64 Bit

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

Plattformzweig: Puma mit Ruby auf Amazon Linux mit 64 Bit

  • /var/log/eb-activity.log

  • /var/log/nginx/error.log

  • /var/log/puma/puma.log

  • /var/log/nginx/access.log

Ruby/

Plattformzweig: Passenger mit Ruby auf Amazon Linux mit 64 Bit

  • /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 konfiguriert Protokollgruppen in CloudWatch Logs für die verschiedenen Protokolldateien, die es streamt. Zum Abrufen bestimmter Protokolldateien aus CloudWatch Logs müssen Sie den Namen der entsprechenden Protokollgruppe kennen. Das Namensschema der Protokollgruppe hängt vom Betriebssystem der Plattform ab.

Für Linux-Plattformen stellen Sie der Protokolldatei auf der Instance das Präfix /aws/elasticbeanstalk/environment_name voraus, um den Protokollgruppennamen zu erhalten. Um beispielsweise die Datei /var/log/nginx/error.log abzurufen, geben Sie die Protokollgruppe /aws/elasticbeanstalk/environment_name/var/log/nginx/error.log an.

Für Windows-Plattformen finden Sie in der folgenden Tabelle die Protokollgruppen für alle Protokolldateien.

Protokolldatei auf der Instance

Protokollgruppe

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 (das gesamte Verzeichnis)

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

Streaming von Instance-Protokollen an CloudWatch Logs

Sie können das Streaming für Instance-Protokolle an CloudWatch Logs mithilfe der Elastic Beanstalk-Konsole, der EB CLI oder der Konfigurationsoptionen aktivieren.

Bevor Sie dies aktivieren, müssen Sie IAM-Berechtigungen zur Verwendung mit dem CloudWatch Logs-Agenten festlegen. Sie können die folgende benutzerdefinierte Richtlinien an das Instance-Profil anhängen, das Sie Ihrer Umgebung zuweisen.

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

Streaming von Instance-Protokollen mit der Elastic Beanstalk-Konsole

So streamen Sie Instance-Protokolle an CloudWatch Log
  1. Öffnen Sie die Elastic-Beanstalk-Konsole und wählen Sie in der Liste Regions (Regionen) Ihre AWS-Region aus.

  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, verwenden Sie die Suchleiste, um die Umgebungsliste zu filtern.

  3. Wählen Sie im Navigationsbereich Configuration (Konfiguration) aus.

  4. Wählen Sie in der Konfigurationskategorie Updates, monitoring and logging  (Updates, Überwachung und Protokolle) die Option Edit (Bearbeiten) aus.

  5. Unter Instance log streaming to CloudWatch Logs (Streaming von Instance-Protokollen an CloudWatch-Protokolle):

    • Aktivieren Sie Log streaming (Protokoll-Streaming).

    • Setzen Sie Retention (Aufbewahrungsdauer) auf die Anzahl an Tagen, wie lange die Protokolle aufbewahrt werden sollen.

    • Wählen Sie die Einstellung Lifecycle (Lebenszyklus), die bestimmt, ob die Protokolle gespeichert werden, nachdem die Umgebung beendet wurde.

  6. Wählen Sie unten auf der Seite die Option Apply (Anwenden) aus, um die Änderungen zu speichern.

Nachdem Sie das Protokoll-Streaming aktiviert haben, können Sie zur Konfigurationskategorie oder -seite Software zurückkehren und dort den Link Log Groups (Protokollgruppen) suchen. Klicken Sie auf diesen Link, um Ihre Protokolle in der CloudWatch-Konsole anzuzeigen.

Streaming von Instance-Protokollen mit der EB-CLI

Um das Streaming von Instance-Protokollen an CloudWatch Logs mit der EB CLI zu aktivieren, verwenden Sie den Befehl eb logs.

$ eb logs --cloudwatch-logs enable

Sie können auch eb logs verwenden, um Protokolle von CloudWatch Logs abzurufen. Sie können alle Instance-Protokolle der Umgebung abrufen, oder die vielen Optionen des Befehls verwenden, um Untergruppen abzurufender Protokolle anzugeben. Der folgende Befehl beispielsweise ruft den vollständigen Satz an Instance-Protokollen für Ihre Umgebung auf und speichert diese in ein Verzeichnis unter .elasticbeanstalk/logs.

$ eb logs --all

Mit der Option --log-group können Sie Instance-Protokolle einer bestimmten Protokollgruppe abrufen, die einer bestimmten Protokolldatei einer Instance entspricht. Dazu müssen Sie den Namen der Protokollgruppe kennen, die der abzurufenden Protokolldatei entspricht. Sie finden diese Informationen in Wie Elastic Beanstalk CloudWatch Logs einrichtet.

Streaming von Instance-Protokollen mit Konfigurationsdateien

Wenn Sie eine Umgebung erstellen oder aktualisieren, können Sie eine Konfigurationsdatei zum Einrichten und Konfigurieren des Streamings von Instance-Protokollen an CloudWatch Logs verwenden. Die folgende Beispiel-Konfigurationsdatei ermöglicht ein standardmäßiges Streaming der Instance-Protokolle. Elastic Beanstalk streamt den Standardsatz an Protokolldateien für die Plattform Ihrer Umgebung. Um das Beispiel zu verwenden, kopieren Sie den Text in eine Datei mit der Erweiterung .config im Verzeichnis .ebextensions auf der obersten Ebene Ihres Anwendungsquellpakets.

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

Benutzerdefiniertes Streaming von Protokolldateien

Die Elastic Beanstalk-Integration mit CloudWatch Logs unterstützt das Streaming von benutzerdefinierten Protokolldateien, die von Ihrer Anwendung generiert werden, nicht direkt. Um benutzerdefinierte Protokolle zu streamen, verwenden Sie eine Konfigurationsdatei, um den CloudWatch Logs-Agent direkt zu installieren und die Dateien, die gestreamt werden sollen, zu konfigurieren. Eine Beispielkonfigurationsdatei finden Sie unter logs-streamtocloudwatch-linux.config.

Anmerkung

Das Beispiel funktioniert nicht auf der Windows-Plattform.

Weitere Informationen zur Konfiguration von CloudWatch Logs finden Sie in der Referenz für den CloudWatch Logs-Agenten im Amazon CloudWatch Logs-Benutzerhandbuch.

Fehlerbehebung bei der CloudWatch Logs-Integration

Wenn Sie einige der Instance-Protokollen der Umgebung nicht finden, die Sie in CloudWatch Logs erwarten, können Sie die folgenden häufig vorkommenden Probleme untersuchen:

  • Ihre IAM-Rolle verfügt nicht über die erforderlichen IAM-Berechtigungen.

  • Sie haben Ihre Umgebung in einer AWS-Region gestartet, die CloudWatch Logs nicht unterstützt.

  • Eine Ihrer benutzerdefinierten Protokolldateien existiert nicht unter dem von Ihnen angegebenen Pfad.