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

Elastic Beanstalk mit Amazon Logs verwenden CloudWatch

In diesem Thema werden die Überwachungsfunktionen erklärt, die der Amazon CloudWatch Logs-Service Elastic Beanstalk zur Verfügung stellen kann. Es führt Sie auch durch die Konfiguration und listet die Speicherorte der Protokolle für jede Elastic Beanstalk-Plattform auf.

Durch die Implementierung von CloudWatch Logs können Sie die folgenden Monitoring-Aktivitäten durchführen:

  • Überwachen und archivieren Sie Ihre Elastic Beanstalk Beanstalk-Anwendungs-, System- und benutzerdefinierten Protokolldateien aus den EC2 Amazon-Instances Ihrer Umgebungen.

  • Konfigurieren Sie Alarme, die es Ihnen erleichtern, auf bestimmte Log-Stream-Ereignisse zu reagieren, die Ihre Metrikfilter extrahieren.

Der CloudWatch Logs-Agent, der auf jeder EC2 Amazon-Instance in Ihrer Umgebung installiert ist, veröffentlicht für jede von Ihnen konfigurierte Protokollgruppe metrische Datenpunkte an den CloudWatch Service. Jede Protokollgruppe wendet ihre eigenen Filtermuster an, um zu bestimmen, an welche Log-Stream-Ereignisse CloudWatch als Datenpunkte gesendet werden sollen. 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 Logs automatisch an den CloudWatch Service gestreamt werden, wie unter beschrieben. Die Streaming-Instanz protokolliert in CloudWatch Logs Weitere Informationen zu CloudWatch Logs, einschließlich Terminologie und Konzepten, finden Sie im Amazon CloudWatch Logs-Benutzerhandbuch.

Wenn Sie Enhanced Health für Ihre Umgebung aktivieren, können Sie zusätzlich zu Instance-Logs die Umgebung so konfigurieren, dass Integritätsinformationen in CloudWatch Logs gestreamt werden. Siehe Streaming von Integritätsinformationen der Elastic Beanstalk-Umgebung an Amazon CloudWatch Logs.

Voraussetzungen für das Streaming von CloudWatch Instanzprotokollen in Logs

Um das Streaming von Protokollen von den EC2 Amazon-Instances Ihrer Umgebung zu 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 die AWSElasticBeanstalkWebTieroder von AWSElasticBeanstalkWorkerTierElastic Beanstalk verwaltete Richtlinie nicht in Ihrem Elastic Beanstalk Beanstalk-Instance-Profil haben, 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": [ "*" ] } ] }

So richtet Elastic Beanstalk Logs ein CloudWatch

Elastic Beanstalk installiert auf jeder erstellten Instance einen CloudWatch Log-Agent mit den Standardkonfigurationseinstellungen. Weitere Informationen finden Sie in der CloudWatch Logs Agent Reference.

Wenn Sie das Streaming von CloudWatch Instance-Logs zu Logs aktivieren, sendet Elastic Beanstalk Logdateien 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

  • /-engine.log var/log/eb

  • /var/log/eb-hooks.log

  • /var/log/docker

  • /var/log/docker-events.log

  • /var/log/eb-docker/containers/eb-current-app/stdouterr.log

  • /.log var/log/nginx/access

  • /.log var/log/nginx/error

Docker/

Plattformzweig: ECS auf Amazon Linux 2 mit 64 Bit

  • /-events.log var/log/docker

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

  • /.log var/log/nginx/error

Node.js

Python

  • /-engine.log var/log/eb

  • /var/log/eb-hooks.log

  • /var/log/web.stdout.log

  • var/log/httpd/access/_Protokoll

  • /_Protokoll var/log/httpd/error

  • /.log var/log/nginx/access

  • /.log var/log/nginx/error

Tomcat

PHP

  • /-engine.log var/log/eb

  • /var/log/eb-hooks.log

  • /var/log/httpd/access_Protokoll

  • /_Protokoll var/log/httpd/error

  • /.log var/log/nginx/access

  • /.log var/log/nginx/error

.NET mit Windows Server

  • C:\inetpub\logs\\ W3LogFiles\ u_ex*.log SVC1

  • C:\Program Dateien\ Amazon\ElasticBeanstalk\ logs\ AWSDeployment .log

  • C:\Program Dateien\ Amazon\ElasticBeanstalk\ logs\ Hooks.log

Ruby

  • /var/log/eb-engine.log

  • /var/log/eb-hooks.log

  • /var/log/puma/puma.log

  • /.stdout.log var/log/web

  • /var/log/nginx/access.log

  • /.log var/log/nginx/error

Anmerkung

Am 18. Juli 2022 hat Elastic Beanstalk den Status aller Plattformbranches, 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.

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

  • /-activity.log var/log/eb

  • /var/log/nginx/error.log

  • /-events.log var/log/docker

  • /var/log/docker

  • /var/log/nginx/access.log

  • /.log var/log/eb-docker/containers/eb-current-app/stdouterr

Docker/

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

  • /-activity.log var/log/eb

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

  • /-events.log var/log/docker

  • /var/log/docker

  • /var/log/nginx/access.log

Go

  • /-activity.log var/log/eb

  • /var/log/nginx/error.log

  • /.log var/log/nginx/access

Java/

Plattformzweig: Java 8 auf Amazon Linux mit 64 Bit

Plattformzweig: Java 7 auf Amazon Linux mit 64 Bit

  • /-activity.log var/log/eb

  • /var/log/nginx/access.log

  • /.log var/log/nginx/error

  • /-1.fehler.log var/log/web

  • var/log/web/-1.log

Tomcat

  • /var/log/eb-activity.log

  • /var/log/httpd/error_Protokoll

  • /_Protokoll var/log/httpd/access

  • /_Protokoll var/log/nginx/error

  • /_Protokoll var/log/nginx/access

Node.js

  • /-activity.log var/log/eb

  • /var/log/nodejs/nodejs.log

  • /.log var/log/nginx/error

  • /.log var/log/nginx/access

  • /.log var/log/httpd/error

  • /.log var/log/httpd/access

PHP

  • /-activity.log var/log/eb

  • /var/log/httpd/error_Protokoll

  • /_Protokoll var/log/httpd/access

Python

  • /-activity.log var/log/eb

  • /var/log/httpd/error_Protokoll

  • /_Protokoll var/log/httpd/access

  • /.log opt/python/log/supervisord

Ruby/

Plattformzweig: Puma mit Ruby auf Amazon Linux mit 64 Bit

  • /-activity.log var/log/eb

  • /var/log/nginx/error.log

  • /.log var/log/puma/puma

  • /.log var/log/nginx/access

Ruby/

Plattformzweig: Passenger mit Ruby auf Amazon Linux mit 64 Bit

  • /-activity.log var/log/eb

  • /var/app/support/logs/passenger.log

  • /.log var/app/support/logs/access

  • /.log var/app/support/logs/error

Elastic Beanstalk konfiguriert Protokollgruppen in CloudWatch Logs für die verschiedenen Protokolldateien, die gestreamt werden. Um bestimmte Protokolldateien aus CloudWatch Logs abzurufen, 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

Die Streaming-Instanz protokolliert in CloudWatch Logs

Sie können das Streaming von CloudWatch Instance-Logs in Logs über die Elastic Beanstalk Beanstalk-Konsole, die EB-CLI oder über Konfigurationsoptionen aktivieren.

Bevor Sie es aktivieren, richten Sie IAM-Berechtigungen für die Verwendung mit dem CloudWatch Logs-Agenten ein. 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

Um Instanzprotokolle in Logs zu CloudWatch streamen
  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, 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. Gehen Sie unter Instance-Log-Streaming zu CloudWatch Logs wie folgt vor:

    • 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 Logs in der CloudWatch Konsole zu sehen.

Streaming von Instance-Protokollen mit der EB-CLI

Verwenden Sie den eb logs Befehl, um das Streaming von CloudWatch Instanzprotokollen zu Logs mithilfe der EB-CLI zu aktivieren.

$ eb logs --cloudwatch-logs enable

Sie können ihn auch verwendeneb logs, um Logs aus 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 So richtet Elastic Beanstalk Logs ein CloudWatch .

Streaming von Instance-Protokollen mit Konfigurationsdateien

Wenn Sie eine Umgebung erstellen oder aktualisieren, können Sie eine Konfigurationsdatei verwenden, um das Streaming von CloudWatch Instanzprotokollen in Logs einzurichten und zu konfigurieren. 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 Beanstalk-Integration mit CloudWatch Logs unterstützt nicht direkt das Streaming von benutzerdefinierten Protokolldateien, die Ihre Anwendung generiert. Um benutzerdefinierte Logs zu streamen, verwenden Sie eine Konfigurationsdatei, um den CloudWatch Agenten direkt zu installieren und die Dateien für die Übertragung 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 zur CloudWatch Agentenkonfigurationsdatei im CloudWatch Amazon-Benutzerhandbuch.

Fehlerbehebung bei der Integration CloudWatch von Logs

Wenn Sie einige der erwarteten Instanzprotokolle der Umgebung nicht unter Logs finden können, können Sie die folgenden häufigen Probleme untersuchen: CloudWatch

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

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

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

Wenn Ihre Elastic Beanstalk Beanstalk-Anwendungsprotokolle zu fehlen scheinen oder nur sporadisch (/var/log/web.stdout.log) erscheinen, kann dies an den Standardeinstellungen für die Ratenbegrenzung in rsyslog und journald liegen. Die vollständige Deaktivierung der Ratenbegrenzung kann dieses Problem zwar beheben, wird jedoch nicht empfohlen, da dies zu übermäßiger Festplattennutzung, potenziellem Denial-of-Service oder einer Verschlechterung der Systemleistung bei unerwarteten Log-Bursts führen kann. Stattdessen können Sie die Ratenbegrenzungen wie folgt anpassen. .ebextensions configuration Diese Konfiguration erhöht das Intervall für die Ratenbegrenzung bei höheren Burst-Grenzwerten auf 600 Sekunden und sorgt so für ein ausgewogenes Verhältnis zwischen ordnungsgemäßer Protokollierung und Systemschutz.