Warum werden meine Amazon-ECS-Containerprotokolle nicht an Amazon CloudWatch Logs übermittelt?

Lesedauer: 3 Minute
0

Ich kann die Containerprotokolle meiner Aufgabe aus Amazon Elastic Container Service (Amazon ECS) nicht in Amazon CloudWatch Logs finden.

Kurzbeschreibung

Ihre Amazon-ECS-Containerprotokolle werden aus mindestens einem der folgenden Gründe nicht an CloudWatch Logs übermittelt:

  • Der awslogs-Protokolltreiber ist in Ihren Amazon-ECS-Aufgabendefinitionen nicht richtig konfiguriert.
  • Die AWS Identity and Access Management (IAM)-Rolle verfügt nicht über die erforderlichen Berechtigungen.
  • Es gibt Probleme mit Ihrer Netzwerkkonfiguration.
  • Die Protokollebene für den Container ist nicht richtig konfiguriert.

Lösung

Der awslogs-Protokolltreiber ist nicht richtig konfiguriert.

  • Damit Sie Protokollinformationen des Containers an CloudWatch Logs senden können, müssen Sie die Container in Ihren Aufgaben richtig konfigurieren. Achten Sie beim Definieren der Parameter unseres Containers darauf, dass Sie den Parameter logConfiguration richtig konfigurieren. Wenn die Definition Ihrer Amazon-ECS-Aufgabe mehrere Container umfasst, müssen Sie diesen Parameter für jeden Container einzeln konfigurieren.
  • Achten Sie darauf, dass Sie den awslogs-Protokolltreiber dem Parameter logConfiguration in Ihrer Aufgabendefinition hinzugefügt haben.
  • Führen Sie für den Starttyp von Amazon Elastic Compute Cloud (Amazon EC2) die folgenden zusätzlichen Prüfungen durch:
  • Achten Sie darauf, dass Ihre Container-Instance in Amazon ECS mindestens Version 1.9.0 des Container-Agenten enthält. Informationen zum Überprüfen der Agentenversion und zum Aktualisieren auf die neueste Version finden Sie unter Überprüfen des Amazon ECS-Container-Agenten.
  • Wenn Sie das für Amazon ECS optimierte AMI nicht für Ihre Container-Instances verwenden, müssen Sie sicherstellen, dass der awslogs-Protokolltreiber auf der Container-Instance angegeben ist, wenn Sie den Agenten mit der folgenden Umgebungsvariablen starten. Weitere Informationen finden Sie unter Installieren des Amazon ECS-Container-Agenten.
ECS_AVAILABLE_LOGGING_DRIVERS='["json-file","awslogs"]'

Die IAM-Rolle hat nicht die erforderlichen Berechtigungen.

  • Stellen Sie sicher, dass die IAM-Rolle für Ihre Amazon-ECS-Container-Instance über die Berechtigungen logs:CreateLogStream und logs:PutLogEvents verfügt.
  • Verwenden Sie für den Starttyp von Fargate die IAM-Rolle für die Amazon-ECS-Aufgabenausführung mit den Berechtigungen logs:CreateLogStream und logs:PutLogEvents. Weitere Informationen finden Sie unter IAM-Rolle für die Amazon ECS-Aufgabenausführung.
  • Prüfen Sie für den Starttyp in Amazon EC2 Folgendes:
  • Wenn Sie die IAM-Rolle für die Amazon-ECS-Aufgabenausführung nicht in Ihrer Aufgabendefinition verwenden, stellen Sie sicher, dass die Berechtigungen logs:CreateLogStream und logs:PutLogEvents für die von Ihrer Container-Instance verwendete IAM-Rolle erteilt werden.
  • Wenn Sie die IAM-Rolle für die Amazon-ECS-Aufgabenausführung verwenden, müssen Sie sicherstellen, dass der Wert des Container-Agent-Parameters ECS_ENABLE_AWSLOGS_EXECUTIONROLE_OVERRIDE auf true festgelegt ist.
    Hinweis: Wenn Sie das für Amazon ECS optimierte AMI des ecs-init-Pakets mit Version 1.16.0 -1 oder neuer verwenden, ist der Standardwert dieses Parameters true. Unter Windows ist der Standardwert dieses Parameters false. Weitere Informationen finden Sie unter Konfiguration des Amazon ECS-Container-Agenten.

Es gibt Probleme mit Ihrer Netzwerkkonfiguration.

Wenn Ihre Amazon Virtual Private Cloud (Amazon VPC) über kein Internet-Gateway verfügt und Sie den awslogs-Protokolltreiber für Ihre Aufgaben verwenden, um Protokollinformationen an CloudWatch Logs zu senden, stellen Sie sicher, dass Sie einen Amazon-VPC-Endpunkt für CloudWatch Logs erstellt haben. Weitere Informationen finden Sie unter Verwenden von CloudWatch Logs mit Schnittstellen-VPC-Endpunkten.

Die Protokollebene für den Container ist nicht richtig konfiguriert.

Der awslogs-Protokolltreiber übermittelt einfach die Containerprotokolle (STDOUT- und STDERR-I/O-Streams) von Docker an CloudWatch Logs. Stellen Sie daher sicher, dass Ihre Anwendung die Protokolle an STDOUT- und STDERR-I/O-Streams sendet. Stellen Sie während der Entwicklung des Containers unbedingt die richtige Protokollebene für Ihre Anwendung ein. Je nach Anwendung lässt sich die Protokollebene über eine Umgebungsvariable oder eine Konfigurationsdatei festlegen.


Zugehörige Informationen

Überwachen Ihrer Container-Instances

Wie behebe ich Probleme mit fehlenden Container-Protokollen für Amazon ECS oder Amazon EKS?

AWS OFFICIAL
AWS OFFICIALAktualisiert vor 2 Jahren