Uso da configuração de monitoramento para o monitoramento do operador do Kubernetes para Flink e dos trabalhos do Flink - Amazon EMR

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á.

Uso da configuração de monitoramento para o monitoramento do operador do Kubernetes para Flink e dos trabalhos do Flink

A configuração de monitoramento permite que você configure facilmente o arquivamento de registros do seu aplicativo Flink e dos registros do operador no S3 e/ou CloudWatch (você pode escolher um ou ambos). Isso adiciona um sidecar FluentD aos JobManager seus pods TaskManager e, posteriormente, encaminha os registros desses componentes para os coletores configurados.

nota

Você deve configurar perfis do IAM para a conta de serviço do seu operador do Flink e seu trabalho do Flink (contas de serviço) para poder usar esse recurso, pois ele requer interação com outros Serviços da AWS. Você deve configurar isso usando IRSA em Configuração do operador do Kubernetes para Flink para o Amazon EMR no EKS.

Você pode definir essa configuração da maneira apresentada a seguir.

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

A seguir, são apresentadas as opções de configuração.

  • s3MonitoringConfiguration: a chave de configuração para configurar o encaminhamento para o S3.

    • logUri (obrigatório): o caminho do bucket do S3 em que você deseja armazenar seus logs.

    • O caminho no S3 depois que os logs forem carregados será semelhante ao apresentado a seguir.

      • Nenhuma alternância de log habilitada:

        s3://${logUri}/${POD NAME}/STDOUT or STDERR.gz
      • A alternância de log está habilitada. Você pode usar um arquivo rotacionado e um arquivo atual (um que não tenha carimbo de data).

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

        O formato a seguir é um número incremental.

        s3://${logUri}/${POD NAME}/stdout_YYYYMMDD_index.gz
    • As permissões do IAM apresentadas a seguir são obrigatórias para usar este encaminhador.

      { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "S3_BUCKET_URI/*", "S3_BUCKET_URI" ] }
  • cloudWatchMonitoringConfiguration— chave de configuração para a qual configurar o encaminhamento. CloudWatch

    • logGroupName(obrigatório) — nome do grupo de CloudWatch registros para o qual você deseja enviar registros (cria automaticamente o grupo se ele não existir).

    • logStreamNamePrefix (opcional): o nome do fluxo de logs para o qual você deseja enviar os logs. O valor padrão é uma string vazia. O formato é o seguinte:

      ${logStreamNamePrefix}/${POD NAME}/STDOUT or STDERR
    • As permissões do IAM apresentadas a seguir são obrigatórias para usar este encaminhador.

      { "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): a chave de configuração para definir limites de recursos no contêiner sidecar do Fluent Bit iniciado.

    • memoryLimit (opcional): o valor padrão é 512 Mi. Ajuste de acordo com suas necessidades.

    • cpuLimit (opcional): esta opção não tem um padrão. Ajuste de acordo com suas necessidades.

  • containerLogRotationConfiguration (opcional): controla o comportamento de alternância de log do contêiner. Ele é habilitado por padrão.

    • rotationSize (obrigatório): especifica o tamanho do arquivo para a alternância de log. O intervalo de valores possíveis é de 2 KB a 2 GB. A parcela numérica da unidade do parâmetro rotationSize é transferida como um número inteiro. Como não há suporte para valores decimais, você pode especificar um tamanho de rotação de 1,5 GB, por exemplo, com o valor 1.500 MB. O padrão é 2 GB.

    • maxFilesToKeep (obrigatório): especifica o número máximo de arquivos a serem retidos no contêiner após a alternância ter ocorrido. O valor mínimo é de 1 e o valor máximo é de 50. O padrão é 10.

Também podemos habilitar o arquivamento de logs para o operador ao usar as opções apresentadas a seguir no arquivo values.yaml da instalação do chart do Helm. Você pode ativar o S3 ou ambos. CloudWatch

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 seguir, estão apresentadas as opções de configuração disponíveis em monitoringConfiguration.

  • s3MonitoringConfiguration: defina esta opção para realizar o arquivamento no S3.

  • logUri (obrigatório): o caminho do bucket do S3 em que você deseja armazenar seus logs.

  • A seguir, estão apresentados os formatos de como os caminhos do bucket do S3 podem parecer depois que os logs são carregados.

    • Nenhuma alternância de log habilitada.

      s3://${logUri}/${POD NAME}/OPERATOR or WEBHOOK/STDOUT or STDERR.gz
    • A alternância de log está habilitada. Você pode usar um arquivo rotacionado e um arquivo atual (um que não tenha carimbo de data).

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

      O índice de formato a seguir é um número incremental.

      s3://${logUri}/${POD NAME}/OPERATOR or WEBHOOK/stdout_YYYYMMDD_index.gz
  • cloudWatchMonitoringConfiguration— a chave de configuração para a qual configurar o encaminhamento. CloudWatch

    • logGroupName(obrigatório) — nome do grupo de CloudWatch registros para o qual você deseja enviar registros. O grupo é criado automaticamente, se não existir.

    • logStreamNamePrefix (opcional): o nome do fluxo de logs para o qual você deseja enviar os logs. O valor padrão é uma string vazia. O formato em CloudWatch é o seguinte:

      ${logStreamNamePrefix}/${POD NAME}/STDOUT or STDERR
  • sideCarResources (opcional): a chave de configuração para definir limites de recursos no contêiner sidecar do Fluent Bit iniciado.

    • memoryLimit (opcional): o limite de memória. Ajuste de acordo com suas necessidades. O padrão é de 512Mi.

    • cpuLimit: o limite de CPU. Ajuste de acordo com suas necessidades. Nenhum valor padrão.

  • containerLogRotationConfiguration (opcional): controla o comportamento de alternância de log do contêiner. Ele é habilitado por padrão.

    • rotationSize (obrigatório): especifica o tamanho do arquivo para a alternância de log. O intervalo de valores possíveis é de 2 KB a 2 GB. A parcela numérica da unidade do parâmetro rotationSize é transferida como um número inteiro. Como não há suporte para valores decimais, você pode especificar um tamanho de rotação de 1,5 GB, por exemplo, com o valor 1.500 MB. O padrão é 2 GB.

    • maxFilesToKeep (obrigatório): especifica o número máximo de arquivos a serem retidos no contêiner após a alternância ter ocorrido. O valor mínimo é de 1 e o valor máximo é de 50. O padrão é 10.