Saltar al contenido

¿Cómo envío los mis registros de contenedor a varios destinos en Amazon ECS en AWS Fargate?

5 minutos de lectura
0

Quiero que el contenedor de aplicaciones que se ejecuta en AWS Fargate reenvíe los registros a varios destinos, como Amazon CloudWatch, Amazon Data Firehose o Splunk.

Descripción corta

Una definición de tarea de Amazon Elastic Container Service (Amazon ECS) le permite especificar solo un objeto de configuración de registro para un contenedor determinado. Este límite significa que puede reenviar los registros a un solo destino. Para reenviar registros a varios destinos en Amazon ECS en Fargate, puede usar FireLens.

Nota: FireLens funciona con los reenviadores de registro Fluent Bit y Fluentd. La siguiente resolución usa Fluent Bit, porque este consume menos recursos que Fluentd.

Resolución

Requisitos previos:

Revise la siguiente información:

  • FireLens usa los pares clave-valor especificados como opciones en el objeto LogConfiguration de la definición de tareas de ECS para generar la definición de salida de Fluent Bit. El destino al que se envían los registros se especifica en la sección de definición [OUTPUT] de un archivo de configuración de Fluent Bit. Para más información, consulte Output (Salida) en el sitio web de Fluent Bit.
  • FireLens crea un archivo de configuración en su nombre, pero también puede especificar un archivo de configuración personalizado. Puede hospedar este archivo de configuración en Amazon Simple Storage Service (Amazon S3). O bien, puede crear una imagen de Docker personalizada de Fluent Bit con el archivo personalizado de configuración de salida que haya agregado.
  • Si usa Amazon ECS en Fargate, no podrá extraer un archivo de configuración de Amazon S3. En su lugar, debe crear una imagen de Docker personalizada con el archivo de configuración.

Creación de permisos de IAM

Nota: Si se muestran errores al ejecutar comandos de la Interfaz de la línea de comandos de AWS (AWS CLI), consulte Troubleshoot AWS CLI errors (Solución de problemas con errores de AWS CLI). Además, asegúrese de utilizar la versión más reciente de la AWS CLI.

Cree permisos de AWS Identity and Access Management (IAM) para permitir que su rol de tarea envíe sus registros a diferentes destinos. Por ejemplo, si el destino es Data Firehose, debe dar permiso a la tarea para que llame a la API firehose:PutRecordBatch.

Nota: Fluent Bit admite varios complementos como destinos de registro. Los destinos como CloudWatch y Kinesis requieren permisos que incluyen logs:CreateLogGroup, logs:CreateLogStream, logs:DescribeLogStreams, logs:PutLogEvents y kinesis:PutRecords. Para más información, consulte Permisos para CloudWatch y Kinesis en el sitio web de GitHub.

Creación de una imagen de Docker de Fluent Bit con un archivo de configuración de salida personalizado

  1. Cree un archivo de configuración personalizado de Fluent Bit denominado LogDestinations.conf con las definiciones de [OUTPUT] que elija. Por ejemplo, el siguiente archivo de configuración incluye las configuraciones definidas para CloudWatch, Data Firehose y Splunk:

    [OUTPUT]    Name                firehose
        Match               YourContainerName*
        region              us-west-2
        delivery_stream     nginx-stream  
    [OUTPUT]
        Name                cloudwatch
        Match               YourContainerName*
        region              us-east-1
        log_group_name      firelens-nginx-container
        log_stream_prefix   from-fluent-bit
        auto_create_group   true   
    [OUTPUT]
        Name                splunk
        Match               <ContainerName>*
        Host                127.0.0.1
        Splunk_Token        xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxx
        Splunk_Send_Raw     On

    Nota: Los diferentes destinos requieren que se especifiquen diferentes campos en la definición de [OUTPUT]. Para ver ejemplos, consulte amazon-ecs-firelens-examples en el sitio web de GitHub.

  2. Utilice el siguiente ejemplo de Dockerfile para crear una imagen de Docker con un archivo personalizado de configuración de salida de Fluent Bit:

    FROM amazon/aws-for-fluent-bit:latestADD logDestinations.conf /logDestinations.conf

    Nota: Para más información, consulte la referencia de Dockerfile en el sitio web de Docker.

  3. Para usar el elemento Dockerfile que utilizó para crear la imagen de Docker personalizada de Fluent Bit, ejecute el siguiente comando:

    docker build -t custom-fluent-bit:latest .

    Importante: Ejecute el comando docker build en la misma ubicación que el elemento Dockerfile.

  4. Para confirmar que la imagen de Docker está disponible en Amazon ECS, incluya la imagen de Docker en Amazon Elastic Container Registry (Amazon ECR). O bien, suba su imagen de Docker a su propio registro de Docker. Por ejemplo, para enviar una imagen de Docker local a Amazon ECR, ejecute el siguiente comando:

    docker push aws_account_id.dkr.ecr.region.amazonaws.com/custom-fluent-bit:latest
  5. En la definición de la tarea, actualice las opciones de la configuración de FireLens:

    {
      "containerDefinitions": [
        {
          "essential": true,
          "image": "aws_account_id.dkr.ecr.region.amazonaws.com/custom-fluent-bit:latest",
          "name": "log_router",
          "firelensConfiguration": {
            "type": "fluentbit",
            "options": {
              "config-file-type": "file",
              "config-file-value": "/logDestinations.conf"
            }
          }
        }
      ]
    }

    Nota: Para especificar un archivo de configuración personalizado, debe incluir las opciones config-file-type y config-file-value en el archivo de configuración de FireLens. Para incluir estas opciones, utilice AWS CLI o la consola de Amazon ECS para crear una definición de tarea.

  6. Modifique la propiedad de imagen en la sección ContainerDefinition de su configuración para reflejar una ubicación de imagen de Amazon ECR válida. Si quiere especificar imágenes en los repositorios de Amazon ECR, utilice la convención de nomenclatura completa registry/repository:tag. Por ejemplo:

    aws_account_id.dkr.ecr.region.amazonaws.com/custom-fluent-bit:latest

    Para usar otros repositorios, consulte la propiedad de imagen de la definición de la tarea.

OFICIAL DE AWSActualizada hace 2 años