

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# モニタリング設定を使用した、Flink Kubernetes オペレータと Flink ジョブのモニタリング
<a name="jobruns-flink-monitoring-configuration"></a>

モニタリング設定を使用すると、Flink アプリケーションログとオペレータログを S3 や CloudWatch (どちらか一方または両方を選択可能) にアーカイブするように簡単にセットアップできます。このようにすると、FluentD サイドカーが JobManager ポッドと TaskManager ポッドに追加され、その後、設定しておいたシンクにこれらのコンポーネントのログが転送されます。

**注記**  
この機能は他の AWS のサービスとやり取りする必要があるため、この機能を使用できるようにするには、Flink オペレータと Flink ジョブ (サービスアカウント) のサービスアカウントに IAM ロールをセットアップする必要があります。このセットアップを行うには、「[Amazon EMR on EKS での Flink Kubernetes オペレータのセットアップ](jobruns-flink-kubernetes-operator-setup.md)」で IRSA を使用必要があります。

## Flink アプリケーションログ
<a name="jobruns-flink-monitoring-configuration-application-logs"></a>

この設定は、次の方法で定義できます。

```
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` (必須) - ログローテーションのファイルサイズを指定します。指定できる値の範囲は 2 KB～2 GB です。rotationSize パラメータの数値単位部分は整数として渡されます。小数値はサポートされていないため、値 1500 MB などに 1.5 GB のローテーションサイズを指定できます。デフォルトは 2 GB です。
  + `maxFilesToKeep` (必須) — ローテーションが行われた後にコンテナに保持するファイルの最大数を指定します。最小値は 1 で、最大値は 50 です。デフォルトは 10 です。

## Flink オペレータログ
<a name="jobruns-flink-monitoring-configuration-operator-logs"></a>

また、オペレータのログアーカイブを有効にすることもできます。そのためには、Helm チャートのインストール先にある `values.yaml` ファイルで次のオプションを使用します。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` (必須) - ログローテーションのファイルサイズを指定します。指定できる値の範囲は 2 KB～2 GB です。rotationSize パラメータの数値単位部分は整数として渡されます。小数値はサポートされていないため、値 1500 MB などに 1.5 GB のローテーションサイズを指定できます。デフォルトは 2 GB です。
  + `maxFilesToKeep` (必須) — ローテーションが行われた後にコンテナに保持するファイルの最大数を指定します。最小値は 1 で、最大値は 50 です。デフォルトは 10 です。