Beispiel für Aufgabendefinitionen - Amazon Elastic Container Service

Beispiel für Aufgabendefinitionen

Im Folgenden finden Sie einige Beispiele für Aufgabendefinitionen, die allgemeine benutzerdefinierte Optionen für das Protokoll-Routing veranschaulichen. Weitere Beispiele finden Sie unter Amazon ECS FireLens-Beispiele auf GitHub.

Weiterleiten von Protokollen an CloudWatch Logs

Anmerkung

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

Das folgende Aufgabendefinitionsbeispiel veranschaulicht, wie eine Protokollkonfiguration angegeben wird, die Protokolle an eine CloudWatch Logs-Protokollgruppe weiterleitet. Weitere Informationen finden Sie unter Was ist Amazon CloudWatch Logs? im Amazon CloudWatch Logs-Benutzerhandbuch.

Geben Sie in den Protokollkonfigurationsoptionen den Namen der Protokollgruppe und die AWS-Region an, in der sie vorhanden ist. Damit Fluent Bit die Protokollgruppe in Ihrem Namen erstellt, geben Sie "auto_create_group":"true" an, um das fluentd-buffer-limit festzulegen, verwenden Sie log-driver-buffer-limit. Sie können auch die Aufgaben-ID als ein Protokoll-Stream-Präfix angeben, das beim Filtern unterstützt. Weitere Informationen finden Sie unter Fluent Bit-Plugin für CloudWatch Logs.

{ "family": "firelens-example-cloudwatch", "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:latest", "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": "cloudwatch", "region": "us-west-2", "log_group_name": "firelens-blog", "auto_create_group": "true", "log_stream_prefix": "from-fluent-bit", "log-driver-buffer-limit": "2097152" } }, "memoryReservation": 100 } ] }

Weiterleiten von Protokollen an einen Amazon Kinesis Data Firehose Delivery-Stream

Anmerkung

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

Das folgende Aufgabendefinitionsbeispiel veranschaulicht, wie eine Protokollkonfiguration angegeben wird, die Protokolle an einen Amazon Kinesis Data Firehose-Bereitstellungs-Stream weiterleitet. Der Name Ihres Kinesis Data Firehose-Bereitstellungs-Streams muss bereits bestehen. Weitere Informationen finden Sie unter Erstellen eines Amazon Kinesis Data Firehose-Bereitstellungs-Streams im Amazon Kinesis Data Firehose-Entwicklerhandbuch.

Geben Sie in den Protokollkonfigurationsoptionen den Namen des Bereitstellungs-Streams und die Region an, in der er vorhanden ist. Weitere Informationen finden Sie unter Fluent Bit-Plugin für Amazon Kinesis Firehose.

{ "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" } }, "memoryReservation": 100 } ] }

Weiterleiten von Protokollen an eine Domäne von Amazon OpenSearch Service

Anmerkung

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

Das folgende Bespiel einer Aufgabendefinition veranschaulicht, wie eine Protokollkonfiguration angegeben wird, die Protokolle an eine Domäne von Amazon OpenSearch Service weiterleitet. Die Domäne von Amazon OpenSearch Service muss bereits vorhanden sein. Weitere Informationen finden Sie unter Was ist Amazon OpenSearch Service? im Entwicklerhandbuch zu Amazon OpenSearch Service.

Geben Sie in den Protokoll-Konfigurationsoptionen die Protokolloptionen an, die für die OpenSearch-Service-Integration benötigt werden. Weitere Informationen finden Sie unter Fluent Bit für Amazon OpenSearch Service..

{ "family": "firelens-example-opensearch", "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": "es", "Host": "vpc-fake-domain-ke7thhzo07jawrhmz6mb7ite7y.us-west-2.es.amazonaws.com", "Port": "443", "Index": "my_index", "Type": "my_type", "AWS_Auth": "On", "AWS_Region": "us-west-2", "tls": "On" } }, "memoryReservation": 100 } ] }

Parsing von Container-Protokollen, die serialisiert JSON sind

Anmerkung

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

Beginnend mit AWS für Fluent Bit Version 1.3 gibt es einen JSON-Parser, der im AWS für Fluent Bit-Image eingeschlossen ist. Das folgende Beispiel zeigt, wie Sie den JSON-Parser in der FireLens-Konfiguration Ihrer Aufgabendefinition referenzieren.

"firelensConfiguration": { "type": "fluentbit", "options": { "config-file-type": "file", "config-file-value": "/fluent-bit/configs/parse-json.conf" } },

Die Fluent Bit-Konfigurationsdatei analysiert alle Protokolle, die im JSON-Format vorliegen (wenn die Protokolle an Ihrem Ziel beispielsweise ohne JSON-Parsing wie folgt ausgesehen haben).

{ "source": "stdout", "log": "{\"requestID\": \"b5d716fca19a4252ad90e7b8ec7cc8d2\", \"requestInfo\": {\"ipAddress\": \"204.16.5.19\", \"path\": \"/activate\", \"user\": \"TheDoctor\"}}", "container_id": "e54cccfac2b87417f71877907f67879068420042828067ae0867e60a63529d35", "container_name": "/ecs-demo-6-container2-a4eafbb3d4c7f1e16e00" "ecs_cluster": "mycluster", "ecs_task_arn": "arn:aws:ecs:us-east-2:01234567891011:task/mycluster/3de392df-6bfa-470b-97ed-aa6f482cd7a6", "ecs_task_definition": "demo:7" "ec2_instance_id": "i-06bc83dbc2ac2fdf8" }

Bei der JSON-Parsing sieht das Protokoll wie folgt aus:

{ "source": "stdout", "container_id": "e54cccfac2b87417f71877907f67879068420042828067ae0867e60a63529d35", "container_name": "/ecs-demo-6-container2-a4eafbb3d4c7f1e16e00" "ecs_cluster": "mycluster", "ecs_task_arn": "arn:aws:ecs:us-east-2:01234567891011:task/mycluster/3de392df-6bfa-470b-97ed-aa6f482cd7a6", "ecs_task_definition": "demo:7" "ec2_instance_id": "i-06bc83dbc2ac2fdf8" "requestID": "b5d716fca19a4252ad90e7b8ec7cc8d2", "requestInfo": { "ipAddress": "204.16.5.19", "path": "/activate", "user": "TheDoctor" } }

Der serialisierte JSON wird in der endgültigen JSON-Ausgabe in oberste Felder erweitert. Weitere Informationen zum JSON-Parsing finden Sie unter Parser in der Fluent Bit-Dokumentation.

Weiterleitung an ein externes Fluentd oder Fluent Bit

Anmerkung

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

Das folgende Aufgabendefinitionsbeispiel veranschaulicht, wie eine Protokollkonfiguration angegeben wird, die Protokolle an einen externen Fluentd- oder Fluent Bit-Host weiterleitet. Geben Sie den host und port für Ihre Umgebung an.

{ "family": "firelens-example-forward", "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": "forward", "Host": "fluentdhost", "Port": "24224" } }, "memoryReservation": 100 } ] }