Beispiel für eine Amazon ECS-Aufgabendefinition: Protokolle weiterleiten an FireLens - Amazon Elastic Container Service

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.

Beispiel für eine Amazon ECS-Aufgabendefinition: Protokolle weiterleiten an FireLens

Um benutzerdefiniertes Log-Routing zu verwenden mit FireLens, müssen Sie in Ihrer Aufgabendefinition Folgendes angeben:

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

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

  • Ein Amazon-Ressourcenname (ARN) der Aufgaben-IAM-Rolle, der die Berechtigungen enthält, die für die Aufgabe zum Weiterleiten der Protokolle erforderlich sind.

Beim Erstellen einer neuen Aufgabendefinition mit dem gibt es einen FireLens Integrationsbereich AWS Management Console, der das Hinzufügen eines Protokoll-Router-Containers erleichtert. Weitere Informationen finden Sie unter Erstellen einer Amazon ECS-Aufgabendefinition mithilfe der 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 hört den Port 24224 ab. Um sicherzustellen, dass der FireLens Protokollrouter außerhalb der Aufgabe nicht erreichbar ist, dürfen Sie daher keinen eingehenden Datenverkehr über den 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. Bei Aufgaben, die den host Netzwerkmodus verwenden, ist dies die Sicherheitsgruppe, die der EC2 Amazon-Instance zugeordnet ist, die die Aufgabe hostet. Für Aufgaben, die den bridge-Netzwerkmodus verwenden, erstellen Sie keine Portzuordnungen, die Port 24224 verwenden.

In den Protokolleinträgen werden standardmäßig zusätzliche Felder von Amazon ECS hinzugefügt, mit denen die Quelle der Protokolle identifiziert werden kann.

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

  • ec2_instance_id— Die EC2 Amazon-Instance-ID, auf der der Container gehostet wird. Dieses Feld ist nur für Aufgaben gültig, die den EC2 Starttyp verwenden.

Sie können das enable-ecs-log-metadata auf setzen, false wenn Sie die Metadaten nicht benötigen.

Das folgende Beispiel für eine Aufgabendefinition definiert einen Protokoll-Router-Container, der Fluent Bit verwendet, um seine Protokolle an Logs CloudWatch weiterzuleiten. Es definiert auch einen Anwendungscontainer, der eine Protokollkonfiguration verwendet, um Protokolle an Amazon Data Firehose weiterzuleiten, und legt den Speicher, der zum Puffern von Ereignissen verwendet wird, auf 2 MiB fest.

Anmerkung

Weitere Beispielaufgabendefinitionen finden Sie unter Amazon FireLens ECS-Beispiele unter GitHub.

{ "family": "firelens-example-firehose", "taskRoleArn": "arn:aws:iam::123456789012:role/ecs_task_iam_role", "containerDefinitions": [ { "name": "log_router", "image": "public.ecr.aws/aws-observability/aws-for-fluent-bit:stable", "cpu": 0, "memoryReservation": 51, "portMappings": [], "essential": true, "environment": [], "mountPoints": [], "volumesFrom": [], "user": "0", "logConfiguration": { "logDriver": "awslogs", "options": { "awslogs-group": "/ecs/ecs-aws-firelens-sidecar-container", "mode": "non-blocking", "awslogs-create-group": "true", "max-buffer-size": "25m", "awslogs-region": "us-east-1", "awslogs-stream-prefix": "firelens" }, "secretOptions": [] }, "systemControls": [], "firelensConfiguration": { "type": "fluentbit" } }, { "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 als Optionen im logConfiguration Objekt angegebenen Schlüssel-Wert-Paare werden verwendet, um das zu generieren Fluentd or Fluent Bit Ausgangskonfiguration. Das Folgende ist ein Codebeispiel aus einem Fluent Bit Ausgabedefinition.

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

FireLens verwaltet die match Konfiguration. Sie geben die match Konfiguration nicht in Ihrer Aufgabendefinition an.

Verwenden Sie eine benutzerdefinierte Konfigurationsdatei

Sie können eine benutzerdefinierte Konfigurationsdatei angeben. Das Konfigurationsdateiformat ist das native Format für den verwendeten Protokoll-Router. Weitere Informationen finden Sie unter Syntax der Fluentd-Konfigurationsdatei und YAML-Konfiguration.

Legen Sie in Ihrer benutzerdefinierten Konfigurationsdatei für Aufgaben, die den bridge oder awsvpc Netzwerkmodus verwenden, keinen Fluentd- oder Fluent-Bit-Forward-Eingang über TCP fest, weil FireLens fügt es der Eingabekonfiguration hinzu.

Ihre FireLens Die 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 gehostet werden, unterstützen AWS Fargate 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 angegebenen angeben FireLens verwendet. 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.

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:::amzn-s3-demo-bucket/fluent.conf | filepath" } } } ] }
Anmerkung

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