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

Lesedauer: 3 Minute
0

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

Kurzbeschreibung

Die Amazon-ECS-Container-Protokolle werden möglicherweise aus einem der folgenden Gründe nicht an CloudWatch-Protokolle übermittelt:

  • Der awslogs-Protokolltreiber ist in den Amazon ECS-Aufgabendefinitionen nicht richtig konfiguriert.
  • Die Rolle AWS Identity and Access Management (IAM) verfügt nicht über die erforderlichen Berechtigungen für den Zugriff auf den Bucket.
  • Das Netzwerk ist nicht richtig konfiguriert.
  • Die Protokollebene für den Container ist nicht richtig konfiguriert.

Lösung

Der awslogs-Protokolltreiber ist nicht richtig konfiguriert

Um die Container-Protokollinformationen an CloudWatch-Protokolle zu senden, müssen Sie die Container in Ihren Aufgaben richtig konfigurieren. Wenn Sie die Parameter für Ihren Container definieren, stellen Sie sicher, dass Sie den logConfiguration-Parameter richtig konfigurieren. Wenn Ihre Amazon-ECS-Aufgabendefinition mehrere Container umfasst, müssen Sie diesen Parameter für jeden Container konfigurieren. Außerdem müssen Sie den awslogs-Protokolltreiber zum logConfiguration-Parameter in der Aufgabendefinition hinzufügen.

Führen Sie für die Starttypen von Amazon Elastic Compute Cloud (Amazon EC2) die folgenden zusätzlichen Aufgaben aus:

  • Aktualisieren Sie die Amazon ECS Container Instance auf Version 1.9.0 oder höher des Container-Agenten. Weitere Informationen finden Sie unter Den Amazon-ECS-Container-Agenten aktualisieren.
  • Für Container-Instances, die das Amazon-ECS-optimierte AMI nicht verwenden, geben Sie den awslogs-Protokolltreiber auf der Container-Instance an. Wenn Sie die folgende Umgebungsvariable verwenden, um den Agenten zu starten, geben Sie den awslogs-Protokolltreiber an:
    ECS_AVAILABLE_LOGGING_DRIVERS='["json-file","awslogs"]'

Weitere Informationen finden Sie unter Den Amazon-ECS-Container-Agenten installieren.

Die IAM-Rolle hat nicht die erforderlichen Berechtigungen

Führen Sie die folgenden Schritte aus:

  • Fügen Sie für Ihre IAM-Rolle für Ihre Amazon ECS Container Instance die Berechtigungen logs:CreateLogStream und logs:PutLogEvents hinzu.
  • Verwenden Sie für den Starttyp AWS 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 zur Ausführung von Amazon-ECS-Aufgaben.
  • Überprüfen Sie für den Starttyp von Amazon EC2 Folgendes:
    Für Aufgaben, die nicht die IAM-Rolle zur Amazon-ECS-Aufgabenausführung verwenden, gewähren Sie der Container-Instance-IAM-Rolle die Berechtigungen logs:CreateLogStream und logs:PutLogEvents.
    Aktualisieren Sie für Aufgaben, die die IAM-Rolle zur Amazon-ECS-Aufgabenausführung verwenden, den Wert des Container-Agent-Parameters ECS_ENABLE_AWSLOGS\ _EXECUTIONROLE_OVERRIDE auf wahr.
    **Hinweis:**Wenn Sie das Amazon-ECS-optimierte AMI mit Version 1.16.0 -1 oder höher des ecs-init-Pakets verwenden, ist der Standardwert dieses Parameters wahr. Unter Windows ist der Standardwert dieses Parameters falsch. Weitere Informationen finden Sie unter Konfiguration des Amazon-ECS-Container-Agenten.

Das Netzwerk ist nicht richtig konfiguriert

Aufgaben, die den awslogs-Protokolltreiber mit einer Amazon Virtual Private Cloud (Amazon VPC) ohne Internet-Gateway verwenden, müssen einen CloudWatch-Protokolle-Endpunkt erstellen. Weitere Informationen finden Sie unter Verwenden von CloudWatch-Protokollen mit Schnittstellen-VPC-Endpunkten.

Die Protokollebene für den Container ist nicht richtig konfiguriert

Der awslogs-Protokolltreiber übergibt die Container-Protokolle, bei denen es sich um die STDOUT- und STDERR-I/O-Streams handelt, von Docker an CloudWatch-Protokolle. Aktualisieren Sie Ihre Anwendung, um die Protokolle an STDOUT- und STDERR-I/O-Streams zu senden. Konfigurieren Sie während des Container-Builds die richtige Protokollebene für Ihre Anwendung. Abhängig von Ihrer Anwendung können Sie die Protokollebene über eine Umgebungsvariable oder eine Konfigurationsdatei festlegen.

Ähnliche Informationen

Überwachungstools für Amazon ECS

How do I troubleshoot missing container logs for Amazon ECS or Amazon Elastic Kubernetes Service (Amazon EKS)?

AWS OFFICIALAktualisiert vor einem Jahr