AWS re:Postを使用することにより、以下に同意したことになります AWS re:Post 利用規約

CloudWatch Logs からログデータを取得するにはどうすればよいですか?

所要時間2分
0

サブスクリプションフィルタ、Logs Insights クエリ、S3 エクスポート、CloudWatch API などのさまざまな方法を使用して Amazon CloudWatch Logs からログデータを取得して、CSV ファイルとしてダウンロードするする方法を学びたいと考えています。

簡単な説明

CloudWatch Logs からログデータを取得するには、ユースケースに基づいて、次のいずれかのベストプラクティスを使用します。

  • サブスクリプションフィルターを使用してログデータをストリーミングします。
  • CloudWatch Logs Insights クエリを実行します。
  • ログデータを Amazon Simple Storage Service (Amazon S3) にエクスポートします。
  • CloudWatch API を使用します。
  • ログを .csv ファイルにダウンロードします。

解決策

サブスクリプションフィルターを使用してログデータをストリーミングする

CloudWatch Logs からログデータをリアルタイムで取得するには、サブスクリプションフィルターを使用します。ログデータのサブスクリプションフィルターは CloudWatch API のスロットリングを防止します。詳細については、「Real-time processing of log data with subscriptions」および「Log group-level subscription filters」を参照してください。Amazon Kinesis Data Streams の場合、スロットリングされたサービス API は自動的に再試行されます。

CloudWatch Logs Insights クエリを実行する

ログデータを検索して分析するには、CloudWatch Logs Insights でクエリを実行します。クエリは、問題への対応や原因の特定に役立ち、その他のトラブルシューティングにも役立ちます。詳細については、「Analyzing log data with CloudWatch Logs Insights」を参照してください。

ログデータを Amazon S3 にエクスポートする

バッチユースケースでは、CloudWatch ログデータを Amazon S3 にエクスポートできます。ログデータを CloudWatch ログからエクスポートできるようになるまでに最大 12 時間かかる可能性があります。リアルタイムの分析と処理には、サブスクリプションフィルターを使用してください。

注: AWS アカウントでは、PENDINGPENDING_CANCEL、またはRUNNING 状態のログデータに対して実行できるエクスポートタスクは 1 つのみです。

CloudWatch API を使用する

ログデータを手動で見つけるには、GetLogEvents または FilterLogEvents CloudWatch API を使用します。これらの API は、1 秒あたりのトランザクション数 (TPS) クォータがあるため、スケーラブルではありません。現在のクォータについては、「CloudWatch Logs quotas」を参照してください。API スロットリングが発生する場合は、サブスクリプションフィルターを使用してください。

ログを .csv ファイルにダウンロードする

**注:**AWS コマンドラインインターフェイス (AWS CLI) コマンドの実行中にエラーが発生した場合は、「AWS CLI エラーのトラブルシューティング」を参照してください。また、AWS CLI の最新バージョンを使用しているようにしてください。

ログデータを .csv ファイル形式で取得するには、次の方法を使用します。

  • CloudWatch コンソールを開きます。
  • AWS CLI を使用します。
  • CloudWatch Logs Insights を使用します。

CloudWatch コンソールを使用する

次の手順を実行します。

  1. CloudWatch コンソールを開き、ロググループを選択します。
  2. ダウンロードするログイベントを含むログストリームを選択します。
  3. [アクション] を選択してから、[検索結果をダウンロード] を選択します。

AWS CLI を使用する

.csv ファイル形式のログイベントを取得するには、get-log-events コマンドを実行します。

注: example-loggroup-name を実際のロググループ名に、example-logstream-name を実際のログストリーム名に置き換えてください。

aws logs get-log-events --log-group-name example-loggroup-name  --log-stream-name example-logstream-name  --start-time 1705147529 --end-time 1705233929 > log_events.csv

注: .csv ファイルは、コマンドの開始元と同じディレクトリに保存されます。また、AWS CLI は、ワークステーションに対して設定されたデフォルトの AWS リージョンとプロファイルを使用します。適切なリージョンを指定してください。GetLogEvents API は、トークンを介して利用できるログイベントが他にもある場合、空の結果を返すことがあります。

CloudWatch Logs Insights を使用する

次の手順を実行します。

  1. クエリを実行してログデータを取得します。
  2. ログの数に応じて、次のいずれかの方法を使用してデータをエクスポートします。
    ログが 10,000 件未満の場合は、[結果をエクスポート] を選択します。
    ログが 10,000 件を超える場合は、Amazon S3 バケットにログをエクスポートします。その後、データを .csv ファイルにダウンロードします。