Uso de la configuración de supervisión para supervisar el operador de Flink Kubernetes y los trabajos de Flink - Amazon EMR

Uso de la configuración de supervisión para supervisar el operador de Flink Kubernetes y los trabajos de Flink

La configuración de supervisión le permite configurar fácilmente el archivado de registros de sus aplicaciones y registros de operadores de Flink en S3 o CloudWatch (puede elegir uno o ambos). Al hacerlo, se agrega un contenedor asociado de FluentD a los pods de JobManager y TaskManager y, posteriormente, se reenvían los registros de estos componentes a los receptores configurados.

nota

Debe configurar los roles de IAM para la cuenta de servicio de su operador de Flink y su trabajo de Flink (cuentas de servicio) para poder utilizar esta característica, ya que requiere interactuar con otros Servicios de AWS. Debe configurarlo con las IRSA en Configuración del operador de Kubernetes de Flink para Amazon EMR en EKS.

Puede definir la configuración de la siguiente manera:

apiVersion: flink.apache.org/v1beta1 kind: FlinkDeployment metadata: name: basic-example spec: image: FLINK IMAGE TAG imagePullPolicy: Always flinkVersion: v1_17 flinkConfiguration: taskmanager.numberOfTaskSlots: "2" executionRoleArn: JOB EXECUTION ROLE jobManager: resource: memory: "2048m" cpu: 1 taskManager: resource: memory: "2048m" cpu: 1 job: jarURI: local:///opt/flink/examples/streaming/StateMachineExample.jar monitoringConfiguration: s3MonitoringConfiguration: logUri: S3 BUCKET cloudWatchMonitoringConfiguration: logGroupName: LOG GROUP NAME logStreamNamePrefix: LOG GROUP STREAM PREFIX sideCarResources: limits: cpuLimit: 500m memoryLimit: 250Mi containerLogRotationConfiguration: rotationSize: 2GB maxFilesToKeep: 10

Las siguientes son opciones de configuración.

  • s3MonitoringConfiguration: clave de configuración para configurar el reenvío a S3

    • logUri (obligatorio): la ruta del bucket de S3 donde desea almacenar sus registros.

    • Una vez cargados los registros, la ruta en S3 tendrá el siguiente aspecto.

      • La rotación de los registros no está habilitada:

        s3://${logUri}/${POD NAME}/STDOUT or STDERR.gz
      • La rotación de los registros está habilitada. Puede utilizar tanto un archivo rotado como un archivo actual (uno sin la fecha).

        s3://${logUri}/${POD NAME}/STDOUT or STDERR.gz

        El siguiente formato es un número creciente.

        s3://${logUri}/${POD NAME}/stdout_YYYYMMDD_index.gz
    • Los siguientes permisos de IAM son necesarios para utilizar este reenviador.

      { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "S3_BUCKET_URI/*", "S3_BUCKET_URI" ] }
  • cloudWatchMonitoringConfiguration: clave de configuración para configurar el reenvío a CloudWatch.

    • logGroupName (obligatorio): nombre del grupo de registros de CloudWatch al que desea enviar los registros (el grupo se crea automáticamente si no existe).

    • logStreamNamePrefix (opcional): nombre del flujo de registro al que quiere enviar registros. El valor predeterminado es una cadena vacía. El formato es el siguiente:

      ${logStreamNamePrefix}/${POD NAME}/STDOUT or STDERR
    • Los siguientes permisos de IAM son necesarios para utilizar este reenviador.

      { "Effect": "Allow", "Action": [ "logs:CreateLogStream", "logs:CreateLogGroup", "logs:PutLogEvents" ], "Resource": [ "arn:aws:logs:REGION:ACCOUNT-ID:log-group:{YOUR_LOG_GROUP_NAME}:*", "arn:aws:logs:REGION:ACCOUNT-ID:log-group:{YOUR_LOG_GROUP_NAME}" ] }
  • sideCarResources (opcional): la clave de configuración para establecer los límites de recursos en el contenedor asociado de Fluentbit lanzado.

    • memoryLimit (opcional): el valor predeterminado es 512 Mi. Ajústelo según sus necesidades.

    • cpuLimit (opcional): esta opción no tiene un valor predeterminado. Ajústelo según sus necesidades.

  • containerLogRotationConfiguration (opcional): controla el comportamiento de la rotación del registro de contenedor. Está habilitada de forma predeterminada.

    • rotationSize (obligatorio): especifica el tamaño del archivo para la rotación del registro. El rango de valores posibles va de 2 KB a 2 GB. La parte de la unidad numérica del parámetro rotationSize se pasa como un número entero. Como no se admiten valores decimales, puede especificar un tamaño de rotación de 1,5 GB, por ejemplo, con el valor 1500 MB. El valor predeterminado es 2 GB.

    • maxFilesToKeep (obligatorio): especifica el número máximo de archivos que deben retenerse en el contenedor una vez hecha la rotación. El valor mínimo es 1 y el máximo, 50. El valor predeterminado es 10.

También podemos habilitar el archivado de registros para el operador al utilizar las siguientes opciones en el archivo values.yaml en la instalación del gráfico de Helm. Puede activar S3, CloudWatch o ambos.

monitoringConfiguration: s3MonitoringConfiguration: logUri: "S3-BUCKET" totalFileSize: "1G" uploadTimeout: "1m" cloudWatchMonitoringConfiguration: logGroupName: "flink-log-group" logStreamNamePrefix: "example-job-prefix-test-2" sideCarResources: limits: cpuLimit: 1 memoryLimit: 800Mi memoryBufferLimit: 700M

A continuación se describen las opciones de configuración disponibles de monitoringConfiguration.

  • s3MonitoringConfiguration: configure esta opción para archivar en S3.

  • logUri (obligatorio): la ruta del bucket de S3 donde desea almacenar sus registros.

  • Los siguientes son formatos de cómo se verían las rutas del bucket de S3 una vez cargados los registros.

    • La rotación de los registros no está habilitada.

      s3://${logUri}/${POD NAME}/OPERATOR or WEBHOOK/STDOUT or STDERR.gz
    • La rotación de los registros está habilitada. Puede utilizar tanto un archivo rotado como un archivo actual (uno sin la fecha).

      s3://${logUri}/${POD NAME}/OPERATOR or WEBHOOK/STDOUT or STDERR.gz

      El siguiente índice de formato es un número creciente.

      s3://${logUri}/${POD NAME}/OPERATOR or WEBHOOK/stdout_YYYYMMDD_index.gz
  • cloudWatchMonitoringConfiguration: la clave de configuración para configurar el reenvío a CloudWatch.

    • logGroupName (obligatorio): nombre del grupo de registros de CloudWatch al que quiere enviar registros. Si el grupo no existe, se crea automáticamente.

    • logStreamNamePrefix (opcional): nombre del flujo de registro al que quiere enviar registros. El valor predeterminado es una cadena vacía. El formato en CloudWatch es el siguiente:

      ${logStreamNamePrefix}/${POD NAME}/STDOUT or STDERR
  • sideCarResources (opcional): la clave de configuración para establecer los límites de recursos en el contenedor asociado de Fluentbit lanzado.

    • memoryLimit (opcional): el límite de memoria. Ajústelo según sus necesidades. El valor predeterminado es 512Mi.

    • cpuLimit: el límite de la CPU. Ajústelo según sus necesidades. Sin valor predeterminado.

  • containerLogRotationConfiguration (opcional): controla el comportamiento de la rotación de los registro de contenedor. Está habilitada de forma predeterminada.

    • rotationSize (obligatorio): especifica el tamaño del archivo para la rotación del registro. El rango de valores posibles va de 2 KB a 2 GB. La parte de la unidad numérica del parámetro rotationSize se pasa como un número entero. Como no se admiten valores decimales, puede especificar un tamaño de rotación de 1,5 GB, por ejemplo, con el valor 1500 MB. El valor predeterminado es 2 GB.

    • maxFilesToKeep (obligatorio): especifica el número máximo de archivos que deben retenerse en el contenedor una vez hecha la rotación. El valor mínimo es 1 y el máximo, 50. El valor predeterminado es 10.