Managed Service for Apache Flink でアプリケーションロギングを設定する - Managed Service for Apache Flink

Amazon Managed Service for Apache Flink (Amazon MSF) は、以前は Amazon Kinesis Data Analytics for Apache Flink と呼ばれていました。

Managed Service for Apache Flink でアプリケーションロギングを設定する

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

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

アプリケーションに CloudWatch ロギングオプションを追加する場合は、次の点に注意してください。

  • コンソールを使用して CloudWatch ロギングオプションを追加すると、Managed Service for Apache Flink は CloudWatch ロググループとログストリームを作成して、アプリケーションがログストリームに書き込むために必要な権限を追加します。

  • API を使用してCloudWatch ロギングオプションを追加する場合、アプリケーションのロググループとログストリームも作成し、アプリケーションがログストリームに書き込むために必要な権限を追加する必要があります。

コンソールで CloudWatch ロギングを設定する

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

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

/aws/kinesis-analytics/ApplicationName

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

kinesis-analytics-log-stream

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

CLI を使用して CloudWatch ロギングを設定する

AWS CLI を使用して CloudWatch ロギングオプションを追加するには、次の操作を実行します。

  • ロググループとログストリームの作成

  • CreateApplicationアクションを使用してアプリケーションを作成するときにログ オプションを追加するか、AddApplicationCloudWatchLoggingOptionアクションを使用して既存のアプリケーションにログ オプションを追加します。

  • ログに書き込むための権限をアプリケーションのポリシーに追加する

CloudWatch のロググループとログストリームを作成する

ログストリーミングとロググループは、CloudWatch Logs コンソール、 または CloudWatch Logs API を使用して削除できます。CloudWatch Logs ロググループの設定については、「ロググループとログストリームの操作」を参照してください。

アプリケーション CloudWatch ロギングオプションを使用する

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

アプリケーション作成時の CloudWatch ログオプションを追加する

以下のコード例では、CreateApplication アクションを使用して、アプリケーション作成時に ログオプションを使用する方法について説明します。この例では、CloudWatchログストリームの Amazon リソースネーム (ARN)新しいアプリケーションに追加するを独自の情報に置き換えます。これらのアクションの詳細については、「CreateApplication」を参照してください。

{ "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 ログオプションを追加する

以下のコード例では、AddApplicationCloudWatchLoggingOption アクションを使用して、既存アプリケーションにログオプションを追加する方法について説明します。例では、各 ユーザー入力プレースホルダー を独自の情報に置き換えます。これらのアクションの詳細については、「AddApplicationCloudWatchLoggingOption」を参照してください。

{ "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 ログオプションを更新する

以下のコード例では、UpdateApplication アクションを使用して、既存のログオプションを変更する方法について説明します。例では、各 ユーザー入力プレースホルダー を独自の情報に置き換えます。これらのアクションの詳細については、「UpdateApplication」を参照してください。

{ "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 ログオプションを削除する

以下のコード例では、DeleteApplicationCloudWatchLoggingOption アクションを使用して、既存のログオプションを削除する方法について説明します。例では、各 ユーザー入力プレースホルダー を独自の情報に置き換えます。これらのアクションの詳細については、「DeleteApplicationCloudWatchLoggingOption」を参照してください。

{ "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> }

アプリケーションロギングレベルを設定する

アプリケーションロギングのレベルを設定するには、CreateApplication アクションの MonitoringConfiguration パラメータまたは UpdateApplication アクションの MonitoringConfigurationUpdate パラメータを使用します。

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

アプリケーション作成時にアプリケーションロギングレベルを設定する

以下のCreateApplicationアクションリクエスト例では、アプリケーションログレベルを 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" }
アプリケーションロギングレベルを更新する

以下のUpdateApplicationアクションリクエスト例では、アプリケーションログレベルを INFO に設定しています。

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

CloudWatch ログストリームに書き込むためのアクセス許可を追加する

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

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

信頼ポリシー

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

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

アクセス許可ポリシー

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:*" ] } ] }

アプリケーションのモニタリングレベルを制御する

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

アプリケーションのモニタリンググメトリックレベルは、ログメッセージの細分性を制御します。モニタリングメトリクスのレベルは次のように定義されます。

アプリケーションのモニタリンググログレベルは、アプリケーションのログ詳細度を制御します。モニタリングログレベルは次のように定義されます。

  • エラー:アプリケーションで発生可能の壊滅的なイベント

  • 警告:アプリケーションの潜在的で有害な状況。

  • 情報:アプリケーションの情報提供および一時的な障害イベント。。このログレベルを使用することをお勧めします。

  • デバッグ:アプリケーションのデバッグに最も役立つ、きめ細かい情報イベント。:このレベルは一時的なデバッグ目的でのみ使用してください。

ロギングのベストプラクティスを適用する

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

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

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

ログ記録のトラブルシューティングを実施する

アプリケーションログがログストリームに書き込まれていない場合は、次のことを確認してください。

  • アプリケーションのIAM ロールとポリシーが正しいことを確認してください。ログストリームにアクセスするには、アプリケーションのポリシーに以下の権限が必要です。

    • logs:PutLogEvents

    • logs:DescribeLogGroups

    • logs:DescribeLogStreams

    詳細については、「CloudWatch ログストリームに書き込むためのアクセス許可を追加する」を参照してください。

  • ステップ 5: アプリケーションが実行されていることを検証する アプリケーションのステータスを確認するには、コンソールでアプリケーションのページを表示するか、DescribeApplicationアクションまたはListApplicationsアクションを使用します。

  • CloudWatchメトリクスを監視して、downtimeのように他のアプリケーションの問題の診断などを行います。CloudWatch のメトリクスの詳細については、「Managed Service for Apache Flink でのメトリクスおよびディメンション」を参照してください。

CloudWatch Logs Insights を使用する

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