Criação de uma definição de tarefa que use uma configuração do FireLens - Amazon ECS

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Criação de uma definição de tarefa que use uma configuração do FireLens

Para usar o roteamento de log personalizado com o FireLens, é necessário especificar o seguinte em sua definição de tarefa:

  • Um contêiner de roteador de log com uma configuração do FireLens. Recomendamos que o contêiner seja marcado como essential.

  • Um ou mais contêineres de aplicativo que contêm uma configuração de log especificando o driver de log awsfirelens.

  • Um nome do recurso da Amazon (ARN) de perfil do IAM que contém as permissões necessárias para que a tarefa roteie os logs. Para obter mais informações sobre permissões para uma função de tarefa do IAM, consultePermissões obrigatórias do IAM.

Ao criar uma nova definição de tarefa usando oAWS Management Console, há uma seção de FireLens integração que facilita a adição de um contêiner de roteador de log. Para obter mais informações, consulte Criação de uma definição de tarefa usando o console.

O Amazon ECS converte a configuração de log e gera a configuração de saída do Fluentd ou Fluent Bit. A configuração de saída é montada no contêiner de roteamento de log em /fluent-bit/etc/fluent-bit.conf para o Fluent Bit e /fluentd/etc/fluent.conf para o Fluentd.

Importante

O FireLens escuta na porta 24224. Portanto, para garantir que o roteador de FireLens log não seja acessível fora da tarefa, você não deve permitir o tráfego de entrada 24224 na porta do grupo de segurança que sua tarefa usa. Para tarefas que usam o modo de rede awsvpc, esse é o grupo de segurança associado à tarefa. Para as tarefas que usam o modo de rede host esse é o grupo de segurança associado à instância do Amazon EC2 que hospeda a tarefa. Para as tarefas que usam o modo de rede bridge, não crie qualquer mapeamento de porta que use porta 24224.

O exemplo de definição de tarefa a seguir define um contêiner de roteador de log que usa o Fluent Bit para rotear seus CloudWatch registros para o Logs. Ele também define um contêiner de aplicação que usa uma configuração de log para encaminhar logs para o Amazon Kinesis Data Firehose e definir a memória usada para eventos de buffer como 2 MiB.

nota

Para obter mais exemplos de definições de tarefas, consulte FireLens exemplos do Amazon ECS em GitHub.

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

Os pares de chave/valor especificados como opções no objeto logConfiguration são usados para gerar a configuração de saída do Fluentd ou do Fluent Bit. Veja a seguir um exemplo de código de uma definição de saída do Fluent Bit.

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

FireLens gerencia a match configuração. Essa configuração não é especificada na sua definição de tarefa.

Usar metadados do Amazon ECS

Ao especificar uma configuração do FireLens em uma definição de tarefa, é possível alternar o valor para enable-ecs-log-metadata. Por padrão, o Amazon ECS adiciona campos às entradas de log que ajudam a identificar a fonte dos logs. É possível desativar essa ação definindo enable-ecs-log-metadata como false.

  • ecs_cluster: o nome do cluster do qual a tarefa faz parte.

  • ecs_task_arn: o nome do recurso da Amazon (ARN) da tarefa da qual o contêiner faz parte.

  • ecs_task_definition: o nome da definição de tarefa e a revisão que a tarefa está usando.

Veja a seguir a sintaxe necessária quando for especificado um valor de configuração de metadados de log do Amazon ECS.

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

Especificar um arquivo de configuração personalizado

Além do arquivo de configuração gerado automaticamente que o FireLens cria em seu nome, também é possível especificar um arquivo de configuração personalizado. O formato do arquivo de configuração é o formato nativo do roteador de log que você está usando. Para obter mais informações, consulte Sintaxe do arquivo de configuração do Fluentd e Arquivo de configuração do Fluent Bit.

Em seu arquivo de configuração personalizado, para tarefas que usam o modo de rede bridge ou awsvpc, não defina uma entrada de encaminhamento do Fluentd ou Fluent Bit por TCP porque o FireLens a adiciona à configuração de entrada.

Sua configuração do FireLens deve conter as seguintes opções para especificar um arquivo de configuração personalizado:

config-file-type

O local de origem do arquivo de configuração personalizado. As opções disponíveis são s3 ou file.

nota

Tarefas hospedadas no AWS Fargate só são compatíveis com o tipo de arquivo de configuração file.

config-file-value

A origem do arquivo de configuração personalizado. Se for usado o tipo de arquivo de configuração s3, o valor do arquivo de configuração será o ARN completo do arquivo e do bucket do Amazon S3. Se o tipo de arquivo de configuração file for usado, o valor do arquivo de configuração será o caminho completo do arquivo de configuração que existe na imagem do contêiner ou em um volume montado no contêiner.

Importante

Quando você usa um arquivo de configuração personalizado, precisa especificar um caminho diferente do que o FireLens usa. O Amazon ECS reserva o caminho de arquivo /fluent-bit/etc/fluent-bit.conf para o Fluent Bit e /fluentd/etc/fluent.conf para o Fluentd.

O exemplo a seguir mostra a sintaxe necessária ao especificar uma configuração personalizada.

Importante

Para especificar um arquivo de configuração personalizado hospedado no Amazon S3, verifique se criou uma função do IAM de execução de tarefas com as permissões apropriadas. Para obter mais informações, consulte Permissões obrigatórias do IAM.

Veja a seguir a sintaxe necessária ao especificar uma configuração personalizada.

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

Tarefas hospedadas no AWS Fargate só são compatíveis com o tipo de arquivo de configuração file.