Amazon Managed Service for Apache Flink (Amazon MSF) は、以前は Amazon Kinesis Data Analytics for Apache Flink と呼ばれていました。
CloudWatch Logs Insights でログを解析する
前のセクションで説明したようにCloudWatch ロギング オプションをアプリケーションに追加した後、CloudWatch Logs Insightsを使用して、特定のイベントまたはエラーについてログ ストリームをクエリできます。
CloudWatch Logs Insights を使用すると、Amazon CloudWatch Logs のログデータをインタラクティブに検索し分析することが可能になります。
CloudWatch Logs Insights の詳細については、「CloudWatch Logs Insights を使用したログデータの分析」を参照してください。
サンプルクエリを実行する
このセクションでは、CloudWatch Logs Insightsのサンプルクエリを実行する方法について説明します。
前提条件
-
CloudWatch Logs で設定されている既存のロググループとログストリーム
-
ログは CloudWatch Logs に保存されます。
また、AWS CloudTrail、Amazon Route 53、または Amazon VPC などのサービスを使用し、それらのサービスから CloudWatch Logs に移動するようにログを設定している場合は、既にログが存在する可能性があります。CloudWatch Logs の詳細については、[Getting Started with CloudWatch Logs] (CloudWatch Logs の開始方法) を参照してください。
CloudWatch Logs Insights のクエリは、ログイベントから一連のフィールドを返すか、ログイベントに対して実行された数学的な集約やその他のオペレーションの結果を返します。このチュートリアルでは、ログイベントのリストを返すクエリを示します。
CloudWatch Logs Insights サンプルクエリを実行するには
CloudWatch コンソール (https://console.aws.amazon.com/cloudwatch/
) を開きます。 -
ナビゲーションペインで、[Insights] を選択します。
-
[Logs Insights] (ログのインサイト) ページでは、クエリエディタにデフォルトクエリが表示されます。デフォルトでは、最新の 20 件のログイベントが返されます。クエリエディタの上で、クエリを実行する対象のロググループを選択します。
ロググループを選択すると、CloudWatch Logs Insights はロググループのデータのフィールドを自動的に検出し、右側のペインの [Discovered fields (検出済みフィールド)] に表示します。また、このロググループのログイベントを時間の経過に従って棒グラフで表示します。この棒グラフは、表に示されるイベントだけでなく、クエリと時間範囲に一致するロググループ内のイベントの分布を示します。
-
[Run query] (クエリの実行) を選択します。
クエリの結果が表示されます。この例では、タイプを問わず、最新の 20 件のログイベントが結果として表示されます。
-
返されたログイベントのいずれかについて、すべてのフィールドを表示するには、そのログイベントの左側にある矢印を選択します。
CloudWatch Logs Insights クエリを実行および変更する方法の詳細については、サンプルクエリの実行と変更を参照してください。
クエリの例を確認する
このセクションには、Managed Service for Apache Flinkのアプリケーションログを分析するための CloudWatch Logs Insights サンプルクエリが含まれています。これらのクエリは、いくつかのエラー状態の例を検索して、他のエラー状態を検索するクエリを作成するためのテンプレートとして機能します。
注記
次のクエリ例のリージョン (us-west-2)、アカウント ID (012345678901)、アプリケーション名 (YourApplication) を、アプリケーションのリージョンとアカウント ID に置き換えます。
このトピックには、次のセクションが含まれています。
オペレーションの分析: タスクの分散
次の CloudWatch Logs Insights クエリは、Apache Flink Job マネージャーがタスクマネージャー間で分散するタスクの数を返します。クエリが以前のジョブのタスクを返さないように、クエリの時間枠を 1 回のジョブ実行と一致するように設定する必要があります。並列ロードの詳細については、「アプリケーションスケーリングを実装する」をご参照ください。
fields @timestamp, message | filter message like /Deploying/ | parse message " to flink-taskmanager-*" as @tmid | stats count(*) by @tmid | sort @timestamp desc | limit 2000
次の CloudWatch Logs Insights クエリは、各タスクマネージャーに割り当てられたサブタスクを返します。サブタスクの総数は、各タスクの並列処理の合計です。タスク並列処理は演算子の並列処理から派生し、コード内でsetParallelismを指定して変更しない限り、デフォルトではアプリケーションの並列処理と同じです。演算子の並列処理の設定の詳細について、Apache Flink ドキュメント
fields @timestamp, @tmid, @subtask | filter message like /Deploying/ | parse message "Deploying * to flink-taskmanager-*" as @subtask, @tmid | sort @timestamp desc | limit 2000
タスクスケジューリングについて詳しくは、Apache Flink ドキュメント
オペレーションの分析: 並列度の変化
次の CloudWatch Logs Insights クエリは、アプリケーションの並列処理に対する変更 (たとえば、自動スケーリングによる) を返します。このクエリでは、アプリケーションの並列処理に対する手動による変更も返されます。 Auto Scaling の詳細については、「」を参照してくださいManaged Service for Apache Flink で自動スケーリングを使用する。
fields @timestamp, @parallelism | filter message like /property: parallelism.default, / | parse message "default, *" as @parallelism | sort @timestamp asc
エラーの分析: アクセスが拒否されました
次の CloudWatch Logsインサイトクエリは Access Denied ログを返します。
fields @timestamp, @message, @messageType | filter applicationARN like /arn:aws:kinesisanalyticsus-west-2:012345678901:application\/YourApplication/ | filter @message like /AccessDenied/ | sort @timestamp desc
エラーの分析: ソースまたはシンクが見つかりません
次のCloudWatch Logsインサイトクエリは ResourceNotFound ログを返します。 Kinesis ソースまたはシンクが見つからない場合、結果を ResourceNotFound ログに記録します。
fields @timestamp,@message | filter applicationARN like /arn:aws:kinesisanalyticsus-west-2:012345678901:application\/YourApplication/ | filter @message like /ResourceNotFoundException/ | sort @timestamp desc
エラーの分析: アプリケーションタスク関連の障害
次の CloudWatch Logs Insights クエリは、アプリケーションのタスク関連の障害ログを返します。これらのログは、アプリケーションのステータスがRUNNINGからRESTARTINGに切り替わった場合に生成されます。
fields @timestamp,@message | filter applicationARN like /arn:aws:kinesisanalyticsus-west-2:012345678901:application\/YourApplication/ | filter @message like /switched from RUNNING to RESTARTING/ | sort @timestamp desc
Apache Flink バージョン 1.8.2 以前を使用するアプリケーションでは、タスク関連の障害が発生すると、アプリケーションのステータスが代わりにRUNNINGからFAILEDに切り替わります。Apache Flink 1.8.2 以前のバージョンを使用している場合は、次のクエリを使用してアプリケーションタスク関連の障害を検索してください。
fields @timestamp,@message | filter applicationARN like /arn:aws:kinesisanalyticsus-west-2:012345678901:application\/YourApplication/ | filter @message like /switched from RUNNING to FAILED/ | sort @timestamp desc