

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

# Managed Service for Apache Flink でアプリケーションロギングを設定する
<a name="cloudwatch-logs"></a>

Managed Service for Apache FlinkアプリケーションにAmazon CloudWatchロギングオプションを追加することで、アプリケーションのイベントや設定の問題を監視することができます。

このトピックでは、アプリケーションイベントをCloudWatch Logsストリームに書き込むようにアプリケーションを設定する方法について説明します。CloudWatch ロギングオプションは、アプリケーションイベントをCloudWatch Logsに書き込む方法を設定するためにアプリケーションが使用するアプリケーション設定と権限のコレクションです。 AWS マネジメントコンソール または AWS Command Line Interface () を使用して CloudWatch ログ記録オプションを追加および設定できますAWS CLI。

アプリケーションに CloudWatch ロギングオプションを追加する場合は、次の点に注意してください。
+ コンソールを使用して CloudWatch ロギングオプションを追加すると、Managed Service for Apache Flink は CloudWatch ロググループとログストリームを作成して、アプリケーションがログストリームに書き込むために必要な権限を追加します。
+ API を使用してCloudWatch ロギングオプションを追加する場合、アプリケーションのロググループとログストリームも作成し、アプリケーションがログストリームに書き込むために必要な権限を追加する必要があります。

## コンソールで CloudWatch ロギングを設定する
<a name="cloudwatch-logs-console"></a>

コンソールでアプリケーションのCloudWatch ロギングを有効にすると、CloudWatch ロググループとログストリームが作成されます。また、アプリケーションのアクセス許可ポリシーは、ストリームへの書き込みアクセス許可で更新されます。

Managed Service for Apache Flinkは、次の規則に従って名前の付いたロググループを作成します。ここで、*ApplicationName*はアプリケーションの名前です。

```
/aws/kinesis-analytics/ApplicationName
```

。Managed Service for Apache Flinkは、新しいロググループに以下の名前でログストリームを作成します。

```
kinesis-analytics-log-stream
```

**アプリケーションの設定**ページの**監視ログレベル**セクションを使用して、アプリケーション監視メトリックレベルと監視ログレベルを設定します。アプリケーションログレベルの詳細については、　[アプリケーションのモニタリングレベルを制御する](#cloudwatch_levels)　を参照してください。

## CLI を使用して CloudWatch ロギングを設定する
<a name="cloudwatch-logs-api"></a>

を使用して CloudWatch ログ記録オプションを追加するには AWS CLI、次の手順を実行します。
+  ロググループとログストリームの作成
+ [CreateApplication](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html)アクションを使用してアプリケーションを作成するときにログ オプションを追加するか、[AddApplicationCloudWatchLoggingOption](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_AddApplicationCloudWatchLoggingOption.html)アクションを使用して既存のアプリケーションにログ オプションを追加します。
+ ログに書き込むための権限をアプリケーションのポリシーに追加する

### CloudWatch のロググループとログストリームを作成する
<a name="cloudwatch-logs-api-create"></a>

ログストリーミングとロググループは、CloudWatch Logs コンソール、 または CloudWatch Logs API を使用して削除できます。CloudWatch Logs ロググループの設定については、「[ロググループとログストリームの操作](https://docs.aws.amazon.com/AmazonCloudWatch/latest/logs/Working-with-log-groups-and-streams.html)」を参照してください。

### アプリケーション CloudWatch ロギングオプションを使用する
<a name="adding_cloudwatch"></a>

 ログオプションを新しいアプリケーションまたは既存アプリケーションに追加するか、既存アプリケーションのログオプションを変更するには、以下の API アクションを使用します。JSON ファイルを API アクションの入力に使用する方法の詳細については、[Managed Service for Apache Flink API コードの例](api-examples.md)　を参照してください。

#### アプリケーション作成時の CloudWatch ログオプションを追加する
<a name="add_cloudwatch_create"></a>

以下のコード例では、`CreateApplication` アクションを使用して、アプリケーション作成時に ログオプションを使用する方法について説明します。この例では、*CloudWatchログストリームの Amazon リソースネーム (ARN)新しいアプリケーションに追加する*を独自の情報に置き換えます。これらのアクションの詳細については、「[https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html)」を参照してください。

```
{
    "ApplicationName": "test",
    "ApplicationDescription": "test-application-description",
    "RuntimeEnvironment": "FLINK-1_15",
    "ServiceExecutionRole": "arn:aws:iam::123456789123:role/myrole",
    "ApplicationConfiguration": {
        "ApplicationCodeConfiguration": {
            "CodeContent": {
                "S3ContentLocation":{
                              "BucketARN": "arn:aws:s3:::amzn-s3-demo-bucket",
                              "FileKey": "myflink.jar"
                }
            },
            "CodeContentType": "ZIPFILE"
        }
    },
    "CloudWatchLoggingOptions": [{
      "LogStreamARN": "<Amazon Resource Name (ARN) of the CloudWatch log stream to add to the new application>"
	}]
}
```

#### 既存のアプリケーションに CloudWatch ログオプションを追加する
<a name="add_to_existing_app"></a>

以下のコード例では、`AddApplicationCloudWatchLoggingOption` アクションを使用して、既存アプリケーションにログオプションを追加する方法について説明します。例では、各 *ユーザー入力プレースホルダー* を独自の情報に置き換えます。これらのアクションの詳細については、「[https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_AddApplicationCloudWatchLoggingOption.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_AddApplicationCloudWatchLoggingOption.html)」を参照してください。

```
{
   "ApplicationName": "<Name of the application to add the log option to>",
   "CloudWatchLoggingOption": { 
      "LogStreamARN": "<ARN of the log stream to add to the application>"
   },
   "CurrentApplicationVersionId": <Version of the application to add the log to>
}
```

#### 既存の CloudWatch ログオプションを更新する
<a name="update_existing"></a>

以下のコード例では、`UpdateApplication` アクションを使用して、既存のログオプションを変更する方法について説明します。例では、各 *ユーザー入力プレースホルダー* を独自の情報に置き換えます。これらのアクションの詳細については、「[https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html)」を参照してください。

```
{
   "ApplicationName": "<Name of the application to update the log option for>",
   "CloudWatchLoggingOptionUpdates": [ 
         { 
            "CloudWatchLoggingOptionId": "<ID of the logging option to modify>",
            "LogStreamARNUpdate": "<ARN of the new log stream to use>"
         }
      ],
   "CurrentApplicationVersionId": <ID of the application version to modify>
}
```

#### アプリケーションから CloudWatch ログオプションを削除する
<a name="delete-log"></a>

以下のコード例では、`DeleteApplicationCloudWatchLoggingOption` アクションを使用して、既存のログオプションを削除する方法について説明します。例では、各 *ユーザー入力プレースホルダー* を独自の情報に置き換えます。これらのアクションの詳細については、「[https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_DeleteApplicationCloudWatchLoggingOption.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_DeleteApplicationCloudWatchLoggingOption.html)」を参照してください。

```
{
   "ApplicationName": "<Name of application to delete log option from>",
   "CloudWatchLoggingOptionId": "<ID of the application log option to delete>",
   "CurrentApplicationVersionId": <Version of the application to delete the log option from>
}
```

#### アプリケーションロギングレベルを設定する
<a name="cloudwatch-level"></a>

アプリケーションロギングのレベルを設定するには、[https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html) アクションの [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_MonitoringConfiguration.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_MonitoringConfiguration.html) パラメータまたは [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html) アクションの [https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_MonitoringConfigurationUpdate.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_MonitoringConfigurationUpdate.html) パラメータを使用します。

アプリケーションログレベルの詳細については、　[アプリケーションのモニタリングレベルを制御する](#cloudwatch_levels)　を参照してください。

##### アプリケーション作成時にアプリケーションロギングレベルを設定する
<a name="cloudwatch-level-create"></a>

以下の[https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_CreateApplication.html)アクションリクエスト例では、アプリケーションログレベルを　`INFO`　に設定しています。

```
{
   "ApplicationName": "MyApplication",                    
   "ApplicationDescription": "My Application Description",
   "ApplicationConfiguration": {
      "ApplicationCodeConfiguration":{
      "CodeContent":{
        "S3ContentLocation":{
          "BucketARN":"arn:aws:s3:::amzn-s3-demo-bucket",
          "FileKey":"myflink.jar",
          "ObjectVersion":"AbCdEfGhIjKlMnOpQrStUvWxYz12345"
        }
      },
      "CodeContentType":"ZIPFILE"
      },
      "FlinkApplicationConfiguration": 
         "MonitoringConfiguration": { 
            "ConfigurationType": "CUSTOM",
            "LogLevel": "INFO"
         }
      },
   "RuntimeEnvironment": "FLINK-1_15",
   "ServiceExecutionRole": "arn:aws:iam::123456789123:role/myrole"
}
```

##### アプリケーションロギングレベルを更新する
<a name="cloudwatch-level-update"></a>

以下の[https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html](https://docs.aws.amazon.com/managed-service-for-apache-flink/latest/apiv2/API_UpdateApplication.html)アクションリクエスト例では、アプリケーションログレベルを　`INFO`　に設定しています。

```
{
   "ApplicationConfigurationUpdate": {
      "FlinkApplicationConfigurationUpdate": { 
         "MonitoringConfigurationUpdate": { 
            "ConfigurationTypeUpdate": "CUSTOM",
            "LogLevelUpdate": "INFO"
         }
      }
   }
}
```

### CloudWatch ログストリームに書き込むためのアクセス許可を追加する
<a name="enable_putlogevents"></a>

Managed Service for Apache Flinkには設定ミスのエラーをCloudWatchに書き込む権限が必要です。Managed Service for Apache Flink が引き受ける AWS Identity and Access Management (IAM) ロールにこれらのアクセス許可を追加できます。

AManaged Service for Apache Flinkに IAM ロールを使用する方法の詳細については、　[Amazon Managed Service for Apache Flink のIDとアクセスマネジメント](security-iam.md)　を参照してください。

#### 信頼ポリシー
<a name="enable_putlogevents_trust_policy"></a>

IAM ロールを引き受けるためのアクセス権限を Managed Service for Apache Flinkに付与するには、以下の信頼ポリシーをそのロールにアタッチします。

------
#### [ JSON ]

****  

```
{
  "Version":"2012-10-17",		 	 	 
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "Service": "kinesisanalytics.amazonaws.com"
      },
      "Action": "sts:AssumeRole"
    }
  ]
}
```

------

#### アクセス許可ポリシー
<a name="enable_putlogevents_permissions_policy"></a>

Managed Service for Apache Flink リソースから CloudWatch にログイベントを書き込むアクセス権限をアプリケーションに付与するには、以下の IAM 権限ポリシーを使用します。ロググループとストリームに正しい Amazon リソースネーム (ARN) を指定する

------
#### [ JSON ]

****  

```
{
    "Version":"2012-10-17",		 	 	 
    "Statement": [
        {
            "Sid": "Stmt0123456789000",
            "Effect": "Allow",
            "Action": [
                "logs:PutLogEvents",
                "logs:DescribeLogGroups",
                "logs:DescribeLogStreams"
            ],
            "Resource": [
                "arn:aws:logs:us-east-1:123456789012:log-group:my-log-group:log-stream:my-log-stream*",
                "arn:aws:logs:us-east-1:123456789012:log-group:my-log-group:*",
                "arn:aws:logs:us-east-1:123456789012:log-group:*"
            ]
        }
    ]
}
```

------

## アプリケーションのモニタリングレベルを制御する
<a name="cloudwatch_levels"></a>

アプリケーションの*モニタリングメトリックスレベル*と*モニタリングログレベル*を使用してアプリケーションログメッセージの生成を制御します。

アプリケーションのモニタリンググメトリックレベルは、ログメッセージの細分性を制御します。モニタリングメトリクスのレベルは次のように定義されます。
+ **アプリケーション**：：メトリックの範囲はアプリケーション全体です。
+ **タスク**：メトリックの範囲は各タスクに限定されます。タスクの詳細については、「[Managed Service for Apache Flink でアプリケーションスケーリングを実装する](how-scaling.md)」をご参照ください。
+ **オペレータ**：メトリックの範囲は各オペレータに限定されます。演算子についての詳細は、「[DataStream API と Managed Service for Apache Flink のオペレーターを使用してデータを変換する](how-operators.md)」を参照してください。
+ **並列処理**：メトリックの範囲はアプリケーションの並列処理に限定されます。このメトリクスレベルは、[UpdateApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_UpdateApplication.html)APIの[MonitoringConfigurationUpdate](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_MonitoringConfigurationUpdate.html)パラメータを使用してのみ設定できます。コンソールを使用してこのメトリクスレベルを設定することはできません。並列クエリについては、「[Managed Service for Apache Flink でアプリケーションスケーリングを実装する](how-scaling.md)」を参照してください。

アプリケーションのモニタリンググログレベルは、アプリケーションのログ詳細度を制御します。モニタリングログレベルは次のように定義されます。
+ **エラー**:アプリケーションで発生可能の壊滅的なイベント
+ **警告**:アプリケーションの潜在的で有害な状況。
+ **情報**:アプリケーションの情報提供および一時的な障害イベント。。このログレベルを使用することをお勧めします。
+ **デバッグ**:アプリケーションのデバッグに最も役立つ、きめ細かい情報イベント。*注*：このレベルは一時的なデバッグ目的でのみ使用してください。

## ロギングのベストプラクティスを適用する
<a name="cloudwatch_bestpractices"></a>

アプリケーションには **Info** ロギングレベルを使用することをおすすめします。Apache Flink エラーを確実に表示するために、このレベルをお勧めします。エラーレベルは **Error** レベルではなく **Info** レベルで記録されます。

**Debug** レベルはアプリケーションの問題を調査する間は一時的にのみ使用することをおすすめします。問題が解決したら、**Info** レベルに戻してください。**Debug** ログレベルを使用すると、アプリケーションのパフォーマンスに大きく影響します。

ロギングが多すぎると、アプリケーションのパフォーマンスにも大きな影響を与える可能性があります。例のように処理されたレコードごとにログエントリを書き込まないことをお勧めします。ロギングが多すぎると、データ処理に重大なボトルネックが生じ、ソースからデータを読み取る際にバックプレッシャが発生する可能性があります。

## ログ記録のトラブルシューティングを実施する
<a name="cloudwatch_troubleshooting"></a>

アプリケーションログがログストリームに書き込まれていない場合は、次のことを確認してください。
+ アプリケーションのIAM ロールとポリシーが正しいことを確認してください。ログストリームにアクセスするには、アプリケーションのポリシーに以下の権限が必要です。
  + `logs:PutLogEvents`
  + `logs:DescribeLogGroups`
  + `logs:DescribeLogStreams`

  詳細については、「[CloudWatch ログストリームに書き込むためのアクセス許可を追加する](#enable_putlogevents)」を参照してください。
+ ステップ 5: アプリケーションが実行されていることを検証する アプリケーションのステータスを確認するには、コンソールでアプリケーションのページを表示するか、[DescribeApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_DescribeApplication.html)アクションまたは[ListApplications](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_ListApplications.html)アクションを使用します。
+ CloudWatchメトリクスを監視して、`downtime`のように他のアプリケーションの問題の診断などを行います。CloudWatch のメトリクスの詳細については、「[Managed Service for Apache Flink でのメトリクスおよびディメンション](metrics-dimensions.md)」を参照してください。

## CloudWatch Logs Insights を使用する
<a name="cloudwatch_next"></a>

アプリケーションで CloudWatch ロギングを有効にすると、CloudWatch Logs インサイトを使用してアプリケーションログを分析できます。詳細については、「[CloudWatch Logs Insights でログを解析する](cloudwatch-logs-reading.md)」を参照してください。