Weiterleitung benutzerdefinierter Protokolle - Amazon Elastic Container Service

Weiterleitung benutzerdefinierter Protokolle

Mit FireLens für Amazon ECS können Sie Aufgabendefinitionsparameter verwenden, um Protokolle zur Protokollspeicherung und -analyse an einen AWS-Service oder ein AWS-Partnernetzwerk (APN)-Ziel weiterzuleiten. FireLens funktioniert mit Fluentd und Fluent Bit. Wir stellen AWS for Fluent Bit-Abbild bereit oder Sie können Ihr eigenes Fluentd- oder Fluent Bit-Image verwenden.

Das Erstellen von Amazon ECS-Aufgabendefinitionen mit einer FireLens-Konfiguration wird mithilfe der AWS-SDKs, AWS CLI und AWS Management Console unterstützt.

Considerations

Bei der Verwendung von FireLens für Amazon ECS sollte Folgendes berücksichtigt werden:

  • FireLens für Amazon ECS wird für Aufgaben unterstützt, die sowohl aufAWS Fargate und auf Amazon EC2 gehostet werden.

  • FireLens for Amazon ECS wird in AWS CloudFormation-Vorlagen unterstützt. Weitere Informationen finden Sie unter AWS::ECS::TaskDefinition FirelensConfiguration im AWS CloudFormation-Benutzerhandbuch

  • FireLens hört auf Port 24224. Um sicherzustellen, dass der FireLens-Protokollrouter außerhalb der Aufgabe nicht erreichbar ist, sollten Sie keinen Datenverkehr auf Port 24224 in der Sicherheitsgruppe zulassen, die Ihre Aufgabe verwendet. Für Aufgaben, die den awsvpc-Netzwerkmodus verwenden, ist dies die der Aufgabe zugeordnete Sicherheitsgruppe. Für Aufgaben, die den host-Netzwerkmodus verwenden, ist dies die Sicherheitsgruppe, die der Amazon-EC2-Instance zugeordnet ist, die den Task hostet. Für Aufgaben, die den bridge-Netzwerkmodus verwenden, erstellen Sie keine Portzuordnungen, die Port 24224 verwenden.

  • Bei Aufgaben, die den bridge-Netzwerkmodus verwenden, muss der Container mit der FireLens-Konfiguration gestartet werden, bevor alle Anwendungscontainer gestartet werden, die darauf angewiesen sind. Um die Startreihenfolge Ihrer Container zu steuern, verwenden Sie Abhängigkeitsbedingungen in der Aufgabendefinition. Weitere Informationen finden Sie unter Container-Abhängigkeit.

    Anmerkung

    Wenn Sie Abhängigkeitsbedingungsparameter in Containerdefinitionen mit einer FireLens-Konfiguration verwenden, stellen Sie sicher, dass jeder Container eine START- oder HEALTHY-Bedingungsanforderung hat.

  • Das Amazon ECS-optimierte Bottlerocket AMI unterstützt keine FireLens.

Erforderliche IAM-Berechtigungen

Um diese Funktion verwenden zu können, müssen Sie eine -Rolle für Ihre Aufgaben erstellen, die die erforderlichen Berechtigungen für die Verwendung von AWS-Services bereitstellt, die für die Aufgaben erforderlich sind. Wenn ein Container beispielsweise Protokolle an Kinesis Data Firehose weiterleitet, erfordert die Aufgabe die Berechtigung zum Aufrufen der firehose:PutRecordBatch-API. Informationen finden Sie im Abschnitt Hinzufügen und Entfernen von IAM-Identitätsberechtigungen im IAM-Benutzerhandbuch.

Die folgende IAM-Beispielrichtlinie fügt Kinesis Data Firehose die erforderlichen Berechtigungen für Routing-Protokolle hinzu.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "firehose:PutRecordBatch" ], "Resource": [ "*" ] } ] }

Für Ihre Aufgabe kann auch die Amazon ECS-Aufgabenausführungsrolle unter den folgenden Bedingungen erforderlich sein. Weitere Informationen finden Sie unter IAM-Rolle für die Amazon ECS-Aufgabenausführung.

  • Wenn Ihre Aufgabe den Fargate-Starttyp verwendet und Sie Container-Images aus Amazon ECR abrufen oder auf vertrauliche Daten aus AWS Secrets Manager in Ihrer Protokollkonfiguration verweisen, müssen Sie die IAM-Aufgabenausführungsrolle einschließen.

  • Wenn Sie eine benutzerdefinierte Konfigurationsdatei angeben, die in Amazon S3 gehostet wird, muss Ihre IAM-Aufgabenausführungsrolle die s3:GetObject-Berechtigung für die Konfigurationsdatei und die s3:GetBucketLocation-Berechtigung für den Amazon S3-Bucket enthalten, in dem sich die Datei befindet. Weitere Informationen finden Sie unter Festlegen von Berechtigungen in einer Richtlinie im Benutzerhandbuch der Amazon Simple Storage Service-Konsole.

    Die folgende IAM-Beispielrichtlinie fügt die erforderlichen Berechtigungen zum Abrufen einer Datei aus Amazon S3 hinzu. Geben Sie den Namen des Amazon S3-Buckets und den Namen der Konfigurationsdatei an.

    { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetObject" ], "Resource": [ "arn:aws:s3:::examplebucket/folder_name/config_file_name" ] }, { "Effect": "Allow", "Action": [ "s3:GetBucketLocation" ], "Resource": [ "arn:aws:s3:::examplebucket" ] } ] }

Verwenden von Fluent Logger-Bibliotheken oder Log4j über TCP

Wenn der awsfirelens-Protokolltreiber in einer Aufgabendefinition angegeben wird, injiziert der Amazon ECS Container-Agent die folgenden Umgebungsvariablen in den Container:

FLUENT_HOST

Die IP-Adresse, die dem FireLens-Container zugewiesen ist.

FLUENT_PORT

Der Port, über den das Fluent Forward-Protokoll kommuniziert.

Die Umgebungsvariablen FLUENT_HOST und FLUENT_PORT ermöglichen es Ihnen, Protokolle direkt vom Code aus in den Protokoll-Router zu schreiben, anstatt durch stdout zu gehen. Weitere Informationen finden Sie unter fluent-logger-golang auf GitHub.

Themen