Configuration des journaux Amazon ECS pour un débit élevé - Amazon Elastic Container Service

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

Configuration des journaux Amazon ECS pour un débit élevé

Lorsque vous créez une définition de tâche, vous pouvez spécifier le nombre de lignes de journal mises en mémoire tampon en indiquant la valeur dans la log-driver-buffer-limit. Pour plus d’informations, consultez la section Pilote de journalisation dans la documentation Docker.

Utilisez cette option lorsque le débit est élevé, car Docker risque de manquer de mémoire tampon et de rejeter les messages tampons afin d’en ajouter de nouveaux.

Tenez compte des points suivants lors de l'utilisation FireLens pour Amazon ECS avec l'option de limite de mémoire tampon :

  • Cette option est prise en charge sur EC2 les versions de type Fargate ou ultérieures de la plateforme1.4.0.

  • L'option n'est valide que lorsque logDriver est défini sur awsfirelens.

  • La limite par défaut du tampon est de 1048576 lignes de journal.

  • La limite de mémoire tampon doit être supérieure ou égale à 0 et inférieure à 536870912 lignes de journal.

  • La quantité maximale de mémoire utilisée pour cette mémoire tampon est le produit de la taille de chaque ligne de journal par la taille de la mémoire tampon. Par exemple, si les lignes de journal de l’application sont en moyenne en 2 KiB, une limite de mémoire tampon de 4 096 utiliserait au maximum 8 Mio. La quantité totale de mémoire allouée au niveau de la tâche doit être supérieure à la quantité de mémoire allouée à tous les conteneurs, en plus du tampon mémoire du pilote de journalisation.

Lorsque le pilote de journal awsfirelens est spécifié dans une définition de tâche, l'agent de conteneur Amazon ECS injecte les variables d'environnement suivantes dans le conteneur :

FLUENT_HOST

Adresse IP attribuée au FireLens conteneur.

Note

Si vous utilisez EC2 le mode bridge réseau, la variable d'FLUENT_HOSTenvironnement de votre conteneur d'applications peut devenir inexacte après le redémarrage du conteneur FireLens log router (le conteneur dont l'firelensConfigurationobjet figure dans sa définition de conteneur). Cela est dû au fait que FLUENT_HOST est une adresse IP dynamique qui peut changer après un redémarrage. La journalisation directe depuis le conteneur de l’application vers l’adresse IP FLUENT_HOST peut commencer à échouer après le changement d’adresse. Pour obtenir plus d’informations sur le redémarrage de conteneurs individuels, consultez la section Redémarrage de conteneurs individuels dans les tâches Amazon ECS à l’aide de politiques de redémarrage de conteneurs.

FLUENT_PORT

Port sur lequel le protocole Fluent Forward écoute.

Vous pouvez utiliser les variables d'environnement FLUENT_HOST et FLUENT_PORT pour vous connecter directement au routeur de journal à partir du code au lieu de passer par stdout. Pour plus d'informations, voir fluent-logger-golangci-dessous GitHub.

Voici la syntaxe à utiliser pour spécifier la log-driver-buffer-limit. Remplacez my_service_ par le nom de votre service :

{ "containerDefinitions": [ { "name": "my_service_log_router", "image": "public.ecr.aws/aws-observability/aws-for-fluent-bit:stable", "cpu": 0, "memoryReservation": 51, "portMappings": [], "essential": true, "environment": [], "mountPoints": [], "volumesFrom": [], "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": "public.ecr.aws/docker/library/httpd:latest", "name": "app", "logConfiguration": { "logDriver": "awsfirelens", "options": { "Name": "firehose", "region": "us-west-2", "delivery_stream": "my-stream", "log-driver-buffer-limit": "51200" } }, "dependsOn": [ { "containerName": "log_router", "condition": "START" } ], "memoryReservation": 100 } ] }