サブスクリプションフィルタ、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 アカウントでは、PENDING、PENDING_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 コンソールを使用する
次の手順を実行します。
- CloudWatch コンソールを開き、ロググループを選択します。
- ダウンロードするログイベントを含むログストリームを選択します。
- [アクション] を選択してから、[検索結果をダウンロード] を選択します。
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 を使用する
次の手順を実行します。
- クエリを実行してログデータを取得します。
- ログの数に応じて、次のいずれかの方法を使用してデータをエクスポートします。
ログが 10,000 件未満の場合は、[結果をエクスポート] を選択します。
ログが 10,000 件を超える場合は、Amazon S3 バケットにログをエクスポートします。その後、データを .csv ファイルにダウンロードします。