Erstellen einer Aufgabendefinition, die eine FireLens-Konfiguration verwendet - Amazon ECS

Erstellen einer Aufgabendefinition, die eine FireLens-Konfiguration verwendet

Um ein benutzerdefiniertes Protokoll-Routing mit FireLens zu verwenden, müssen Sie Folgendes in der Aufgabendefinition angeben:

  • Ein Protokoll-Router-Container, der eine FireLens-Konfiguration enthält. Wir empfehlen, dass der Container als essential markiert wird.

  • Ein oder mehrere Anwendungscontainer, die eine Protokollkonfiguration enthalten, die den awsfirelens-Protokolltreiber angibt.

  • Ein Aufgaben-IAM-Rollen-ARN, der die Berechtigungen enthält, die für die Aufgabe zum Weiterleiten der Protokolle erforderlich sind.

Beim Erstellen einer neuen Aufgabendefinition mit der AWS Management Console gibt es einen FireLens-Integrationsabschnitt, der das Hinzufügen eines Protokollrouter-Containers vereinfacht. Weitere Informationen finden Sie unter Erstellen einer Aufgabendefinition mit der neuen Konsole.

Amazon ECS konvertiert die Protokollkonfiguration und generiert die Fluentd- oder Fluent Bit-Ausgabekonfiguration. Die Ausgabekonfiguration ist in dem Protokoll-Routing-Container unter /fluent-bit/etc/fluent-bit.conf für Fluent Bit und /fluentd/etc/fluent.conf für Fluentd eingebaut.

Wichtig

FireLens überwacht Port 24224. Um sicherzustellen, dass der FireLens-Protokollrouter außerhalb der Aufgabe nicht erreichbar ist, dürfen Sie daher keinen eingehenden 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 die Aufgabe hostet. Für Aufgaben, die den bridge-Netzwerkmodus verwenden, erstellen Sie keine Portzuordnungen, die Port 24224 verwenden.

Im folgenden Beispiel für die Aufgabendefinition wird ein Protokollrouter-Container definiert, der Fluent Bit verwendet, um seine Protokolle zu CloudWatch Logs zu leiten. Außerdem wird ein Anwendungscontainer definiert, der eine Protokollkonfiguration verwendet, um Protokolle an Amazon Kinesis Data Firehose weiterzuleiten, und legt den zum Puffern von Ereignissen verwendeten Arbeitsspeicher auf 2 MiB fest.

{ "family": "firelens-example-firehose", "taskRoleArn": "arn:aws:iam::123456789012:role/ecs_task_iam_role", "containerDefinitions": [ { "essential": true, "image": "906394416424.dkr.ecr.us-west-2.amazonaws.com/aws-for-fluent-bit:stable", "name": "log_router", "firelensConfiguration": { "type": "fluentbit" }, "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "firelens-container", "awslogs-region": "us-west-2", "awslogs-create-group": "true", "awslogs-stream-prefix": "firelens" } }, "memoryReservation": 50 }, { "essential": true, "image": "httpd", "name": "app", "logConfiguration": { "logDriver": "awsfirelens", "options": { "Name": "firehose", "region": "us-west-2", "delivery_stream": "my-stream", "log-driver-buffer-limit": "2097152" } }, "memoryReservation": 100 } ] }

Die Schlüsselwertpaare, die als Optionen im logConfiguration-Objekt angegeben werden, werden verwendet, um die Fluentd- oder Fluent Bit-Ausgabekonfiguration zu generieren. Im Folgenden finden Sie ein Codebeispiel aus einer Fluent Bit-Ausgabedefinition.

[OUTPUT] Name firehose Match app-firelens* region us-west-2 delivery_stream my-stream
Anmerkung

FireLens verwaltet die match-Konfiguration. Diese Konfiguration ist in der Aufgabendefinition nicht festgelegt.

Verwenden von Amazon ECS-Metadaten

Wenn Sie eine FireLens-Konfiguration in einer Aufgabendefinition angeben, können Sie den Wert für enable-ecs-log-metadata optional umschalten. In den Protokolleinträgen werden standardmäßig zusätzliche Felder von Amazon ECS hinzugefügt, mit denen die Quelle der Protokolle identifiziert werden kann. Sie können diese Aktion deaktivieren, indem Sie enable-ecs-log-metadata auf false setzen.

  • ecs_cluster – Der Name des Clusters, zu dem die Aufgabe gehört.

  • ecs_task_arn – Der vollständige Amazon-Ressourcenname (ARN) der Aufgabe, zu der der Container gehört.

  • ecs_task_definition – Der Name und die Revision der Aufgabendefinition, die die Aufgabe verwendet.

Im Folgenden wird die Syntax gezeigt, die erforderlich ist, wenn Sie einen Amazon ECS-Protokollmetadaten-Einstellungswert angeben.

{ "containerDefinitions":[ { "essential":true, "image":"906394416424.dkr.ecr.us-west-2.amazonaws.com/aws-for-fluent-bit:stable", "name":"log_router", "firelensConfiguration":{ "type":"fluentbit", "options":{ "enable-ecs-log-metadata":"true | false" } } } ] }

Angeben einer benutzerdefinierten Konfigurationsdatei

Zusätzlich zu der automatisch generierten Konfigurationsdatei, die FireLens in Ihrem Namen erstellt, können Sie auch eine benutzerdefinierte Konfigurationsdatei angeben. Das Konfigurationsdateiformat ist das native Format für den verwendeten Protokoll-Router. Weitere Informationen finden Sie unter Fluentd-Konfigurationsdateisyntax und Fluent-Bit-Konfigurationsdatei.

In Ihrer benutzerdefinierten Konfigurationsdatei sollten Sie für Aufgaben, die den bridge- oder awsvpc-Netzwerkmodus verwenden, keine Fluentd- oder Fluent-Bit-Weiterleitungseingabe über TCP festlegen, da FireLens diese zur Eingabekonfiguration hinzufügt.

Ihre FireLens-Konfiguration muss die folgenden Optionen enthalten, um eine benutzerdefinierte Konfigurationsdatei anzugeben:

config-file-type

Den Quellspeicherort der benutzerdefinierten Konfigurationsdatei. Die verfügbaren Optionen sind s3 oder file.

Anmerkung

Aufgaben, die auf AWS Fargate gehostet sind unterstützen nur den file-Konfigurationsdateityp.

config-file-value

Die Quelle für die benutzerdefinierte Konfigurationsdatei. Wenn der s3-Konfigurationsdateityp verwendet wird, ist der Wert der Konfigurationsdatei der vollständige ARN des Amazon S3-Buckets und der Datei. Wenn der file-Konfigurationsdateityp verwendet wird, ist der Wert der Konfigurationsdatei der vollständige Pfad der Konfigurationsdatei, die entweder im Container-Image oder auf einem Volume vorhanden ist, das im Container bereitgestellt wird.

Wichtig

Wenn Sie eine benutzerdefinierte Konfigurationsdatei verwenden, müssen Sie einen anderen Pfad als den von FireLens verwendeten angeben. Amazon ECS behält den /fluent-bit/etc/fluent-bit.conf-Dateipfad für Fluent Bit und /fluentd/etc/fluent.conf für Fluentd.

Das folgende Beispiel zeigt die Syntax, die erforderlich ist, wenn eine benutzerdefinierte Konfiguration angegeben wird.

Wichtig

Um eine benutzerdefinierte Konfigurationsdatei anzugeben, die in Amazon S3 gehostet wird, stellen Sie sicher, dass Sie eine IAM-Aufgabenausführungsrolle mit den entsprechenden Berechtigungen erstellt haben. Weitere Informationen finden Sie unter Erforderliche IAM-Berechtigungen.

Im Folgenden wird die Syntax gezeigt, die für die Angabe einer benutzerdefinierten Konfiguration erforderlich ist.

{ "containerDefinitions":[ { "essential":true, "image":"906394416424.dkr.ecr.us-west-2.amazonaws.com/aws-for-fluent-bit:stable", "name":"log_router", "firelensConfiguration":{ "type":"fluentbit", "options":{ "config-file-type":"s3 | file", "config-file-value":"arn:aws:s3:::mybucket/fluent.conf | filepath" } } } ] }
Anmerkung

Aufgaben, die auf AWS Fargate gehostet sind unterstützen nur den file-Konfigurationsdateityp.