Exemple de définition de ECS tâche Amazon : acheminer les journaux vers FireLens - 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.

Exemple de définition de ECS tâche Amazon : acheminer les journaux vers FireLens

Pour utiliser le routage des journaux personnalisé avec FireLens, vous devez spécifier les éléments suivants dans votre définition de tâche :

  • Conteneur de routeur journal contenant une configuration FireLens. Nous recommandons que le conteneur soit marqué comme essential.

  • Un ou plusieurs conteneurs d'application contenant une configuration de journal spécifiant le pilote de journal awsfirelens.

  • Un IAM rôle de tâche Amazon Resource Name (ARN) qui contient les autorisations nécessaires pour que la tâche achemine les journaux.

Lorsque vous créez une nouvelle définition de tâche à l'aide de AWS Management Console, il existe une section FireLens d'intégration qui facilite l'ajout d'un conteneur de routeurs de journaux. Pour de plus amples informations, veuillez consulter Création d'une définition de ECS tâche Amazon à l'aide de la console.

Amazon ECS convertit la configuration du journal et génère la configuration de sortie Fluentd ou Fluent Bit. La configuration de sortie est montée dans le conteneur de routage des journaux à /fluent-bit/etc/fluent-bit.conf pour Fluent Bit et /fluentd/etc/fluent.conf pour Fluentd.

Important

FireLens écoute sur le port 24224. Par conséquent, pour garantir que le routeur de FireLens journaux n'est pas accessible en dehors de la tâche, vous ne devez pas autoriser le trafic entrant sur le port 24224 du groupe de sécurité utilisé par votre tâche. Pour les tâches utilisant le mode réseau awsvpc, il s'agit du groupe de sécurité associé à la tâche. Pour les tâches qui utilisent le mode host réseau, il s'agit du groupe de sécurité associé à l'EC2instance Amazon hébergeant la tâche. Pour les tâches utilisant le mode réseau bridge, ne créez pas de mappages de ports utilisant le port 24224.

Par défaut, Amazon ECS ajoute des champs supplémentaires dans vos entrées de journal afin d'identifier la source des journaux.

  • ecs_cluster : nom du cluster dont la tâche fait partie.

  • ecs_task_arn— Le nom complet de la ressource Amazon (ARN) de la tâche à laquelle le conteneur fait partie.

  • ecs_task_definition : nom et révision de la définition de tâche que la tâche utilise.

  • ec2_instance_id— L'ID d'EC2instance Amazon sur lequel le conteneur est hébergé. Ce champ n'est valide que pour les tâches utilisant le type de EC2 lancement.

Vous pouvez définir la valeur enable-ecs-log-metadata sur false si vous ne souhaitez pas obtenir les métadonnées.

L'exemple de définition de tâche suivant définit un conteneur de routeur de journaux qui utilise Fluent Bit pour acheminer ses CloudWatch journaux vers Logs. Il définit également un conteneur d'applications qui utilise une configuration de journal pour acheminer les journaux vers Amazon Data Firehose et définit la mémoire utilisée pour mettre en mémoire tampon les événements à 2 Mo.

Note

Pour plus d'exemples de définitions de tâches, consultez les ECS FireLensexemples d'Amazon sur 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 } ] }

Les paires clés/valeurs spécifiées en tant qu'options dans l'objet logConfiguration sont utilisées pour générer la configuration de sortie Fluentd ou Fluent Bit. Voici un exemple de code à partir d'une définition de sortie Fluent Bit.

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

FireLens gère la match configuration. Vous ne spécifiez pas la match configuration dans votre définition de tâche.

Utiliser un fichier de configuration personnalisé

Vous pouvez spécifier un fichier de configuration personnalisé. Le format du fichier de configuration est le format natif du routeur de journal que vous utilisez. Pour plus d'informations, consultez Syntaxe du fichier de configuration Fluentd et Fichier de configuration Fluent Bit.

Dans votre fichier de configuration personnalisé, pour les tâches utilisant le mode bridge ou le mode awsvpc réseau, ne définissez pas d'entrée directe Fluentd ou Fluentd Bit TCP car cela l'FireLensajoute à la configuration d'entrée.

Votre configuration FireLens doit contenir les options suivantes pour spécifier un fichier de configuration personnalisé :

config-file-type

Emplacement source du fichier de configuration personnalisé. Les options disponibles sont s3 ou file.

Note

Les tâches hébergées sur AWS Fargate ne prennent en charge que le type file de fichier de configuration.

config-file-value

Source du fichier de configuration personnalisé. Si le type de fichier de s3 configuration est utilisé, la valeur du fichier de configuration est la totalité ARN du compartiment et du fichier Amazon S3. Si le type de fichier de configuration file est utilisé, la valeur du fichier de configuration est le chemin d'accès complet du fichier de configuration qui existe soit dans l'image du conteneur, soit sur un volume monté dans le conteneur.

Important

Lorsque vous utilisez un fichier de configuration personnalisé, vous devez spécifier un chemin différent de celui utilisé par FireLens. Amazon ECS réserve le /fluent-bit/etc/fluent-bit.conf chemin de fichier pour Fluent Bit et /fluentd/etc/fluent.conf pour Fluentd.

L'exemple suivant montre la syntaxe requise lors de la spécification d'une configuration personnalisée.

Important

Pour spécifier un fichier de configuration personnalisé hébergé dans Amazon S3, assurez-vous d'avoir créé un IAM rôle d'exécution de tâche avec les autorisations appropriées.

Voici la syntaxe requise lors de la spécification d'une configuration personnalisée.

{ "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" } } } ] }
Note

Les tâches hébergées sur AWS Fargate ne prennent en charge que le type file de fichier de configuration.