使用監控組態來監控 Flink Kubernetes Operator 和 Flink 作業 - Amazon EMR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

使用監控組態來監控 Flink Kubernetes Operator 和 Flink 作業

監控配置可讓您輕鬆地將 Flink 應用程式和操作員日誌的日誌存檔設置到 S3 和/或 CloudWatch (您可以選擇一個或兩個)。這樣做會將 FluentD 附屬程式新增至您的 JobManager 和 TaskManager Pod,然後將這些元件的記錄檔轉送至已設定的接收器。

注意

必須為 Flink Oerator 和 Flink 作業 (服務帳戶) 的服務帳戶設定 IAM 角色,才能使用此功能,因為它需要與其他 AWS 服務互動。必須在 針對 Amazon EMR on EKS 設定 Flink Kubernetes Operator 中使用 IRSA 進行設定。

可採用以下方法定義此設定。

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

以下是組態選項。

  • s3MonitoringConfiguration - 用於設定轉送至 S3 的組態金鑰

    • logUri (必要) - 想要在其中儲存日誌的 S3 儲存貯體路徑。

    • 上傳日誌後 S3 上的路徑將如下所示。

      • 未啟用日誌輪換:

        s3://${logUri}/${POD NAME}/STDOUT or STDERR.gz
      • 日誌輪換已啟用。可以同時使用輪換的檔案和目前檔案 (沒有日期戳記的檔案)。

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

        下面格式是遞增的數字。

        s3://${logUri}/${POD NAME}/stdout_YYYYMMDD_index.gz
    • 使用此轉寄站需要以下 IAM 許可。

      { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "S3_BUCKET_URI/*", "S3_BUCKET_URI" ] }
  • cloudWatchMonitoringConfiguration— 設置轉發到的配置密鑰 CloudWatch。

    • logGroupName(必要) — 您要傳送記錄檔的 CloudWatch 目標記錄群組名稱 (如果群組不存在,則會自動建立群組)。

    • logStreamNamePrefix (選用) - 您想要向其傳送日誌的日誌串流名稱。預設值為空字串。格式如下所示:

      ${logStreamNamePrefix}/${POD NAME}/STDOUT or STDERR
    • 使用此轉寄站需要以下 IAM 許可。

      { "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 (選用) - 用於在已啟動的 Fluentbit 附屬容器上設定資源限制的組態金鑰。

    • memoryLimit (選用) - 預設值為 512Mi。根據需要進行調整。

    • cpuLimit (選用) - 此選項沒有預設值。根據需要進行調整。

  • containerLogRotationConfiguration (選用) - 控制容器日誌輪換行為。依預設會啟用此功能。

    • rotationSize (必要) - 指定日誌輪換的檔案大小。可能的值範圍為 2KB 至 2GB。rotationSize 參數的數值單位部分會以整數形式傳遞。由於不支援小數值,因此可以使用值 1500MB 來指定 1.5GB 的輪換大小。預設值為 2GB。

    • maxFilesToKeep (必要) — 指定輪換發生後,要在容器中保留的檔案數上限。下限值是 1,上限值是 50。預設為 10。

也可以使用 Helm Chart 安裝中 values.yaml 檔案的下列選項,為 Operator 啟用日誌封存。您可以啟用 S3 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

以下是 monitoringConfiguration 下的可用組態選項。

  • s3MonitoringConfiguration - 將此選項設定為存檔至 S3。

  • logUri (必要) - 想要在其中儲存日誌的 S3 儲存貯體路徑。

  • 以下是上傳日誌後 S3 儲存貯體路徑的可能格式。

    • 未啟用日誌輪換。

      s3://${logUri}/${POD NAME}/OPERATOR or WEBHOOK/STDOUT or STDERR.gz
    • 日誌輪換已啟用。可以同時使用輪換的檔案和目前檔案 (沒有日期戳記的檔案)。

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

      下面的格式索引是遞增的數字。

      s3://${logUri}/${POD NAME}/OPERATOR or WEBHOOK/stdout_YYYYMMDD_index.gz
  • cloudWatchMonitoringConfiguration— 設置轉發到的配置密鑰 CloudWatch。

    • logGroupName(必要) — 您要傳送防護記錄檔的記錄群組名稱。 CloudWatch 如果群組不存在,則會自動建立群組。

    • logStreamNamePrefix (選用) — 您想要向其傳送日誌的日誌串流名稱。預設值為空字串。中的格 CloudWatch 式如下:

      ${logStreamNamePrefix}/${POD NAME}/STDOUT or STDERR
  • sideCarResources (選用) — 用於在已啟動的 Fluentbit 附屬容器上設定資源限制的組態金鑰。

    • memoryLimit (選用) - 記憶體限制。根據需要進行調整。預設值為 512Mi。

    • cpuLimit - CPU 限制。根據需要進行調整。無預設值。

  • containerLogRotationConfiguration (選用) - 控制容器日誌輪換行為。依預設會啟用此功能。

    • rotationSize (必要) - 指定日誌輪換的檔案大小。可能的值範圍為 2KB 至 2GB。rotationSize 參數的數值單位部分會以整數形式傳遞。由於不支援小數值,因此可以使用值 1500MB 來指定 1.5GB 的輪換大小。預設值為 2GB。

    • maxFilesToKeep (必要) — 指定輪換發生後,要在容器中保留的檔案數上限。下限值是 1,上限值是 50。預設為 10。