CloudWatch ログを使用した Amazon Data Firehose への書き込み - Amazon Data Firehose

Amazon Data Firehose は、以前は Amazon Kinesis Data Firehose と呼ばれていました。

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

CloudWatch ログを使用した Amazon Data Firehose への書き込み

CloudWatch ログイベントは、 CloudWatch サブスクリプションフィルターを使用して Firehose に送信できます。詳細については、「Amazon Data Firehose を使用したサブスクリプションフィルター」を参照してください。

CloudWatch ログイベントは圧縮された gzip 形式で Firehose に送信されます。解凍されたログイベントを Firehose の送信先に配信する場合は、Firehose の解凍機能を使用して自動的に CloudWatch ログを解凍できます。

重要

現在、Amazon は CloudWatch 複数の CloudWatch ログイベントを 1 つの Firehose レコードに結合し、Amazon OpenSearch Service は 1 つのレコードで複数のログイベントを受け入れることができないため、Firehose は Amazon OpenSearch Service の送信先へのログの配信をサポートしていません。別の方法として、 CloudWatch ログで Amazon OpenSearch Service のサブスクリプションフィルターを使用することを検討することもできます。

CloudWatch ログの解凍

Firehose を使用して CloudWatch ログを配信し、解凍したデータを Firehose ストリームの送信先に配信する場合は、Firehose データ形式変換 (Parquet、ORC) または動的パーティショニング を使用します。Firehose ストリームの解凍を有効にする必要があります。

、 AWS Management Console、 AWS Command Line Interface または AWS SDKs を使用して解凍を有効にできます。

注記

ストリームで解凍機能を有効にする場合は、そのストリームを CloudWatch ログサブスクリプションフィルターにのみ使用し、提供されたログには使用しません。 CloudWatch ログと提供されたログの両方を取り込むために使用されるストリームで解凍機能を有効にすると、Firehose への提供されたログの取り込みは失敗します。この解凍機能は CloudWatch ログ専用です。

CloudWatch ログの解凍後のメッセージ抽出

解凍を有効にすると、メッセージ抽出を有効にすることもできます。メッセージ抽出を使用する場合、Firehose は、所有者、ロググループ、ログストリームなどのすべてのメタデータを解凍された CloudWatch ログレコードから除外し、メッセージフィールド内のコンテンツのみを配信します。Splunk の送信先にデータを配信する場合は、Splunk がデータを解析するためのメッセージ抽出を有効にする必要があります。メッセージ抽出の有無にかかわらず、解凍後の出力例を次に示します。

図 1: メッセージ抽出なしで解凍後の出力例:

{ "owner": "111111111111", "logGroup": "CloudTrail/logs", "logStream": "111111111111_CloudTrail/logs_us-east-1", "subscriptionFilters": [ "Destination" ], "messageType": "DATA_MESSAGE", "logEvents": [ { "id": "31953106606966983378809025079804211143289615424298221568", "timestamp": 1432826855000, "message": "{\"eventVersion\":\"1.03\",\"userIdentity\":{\"type\":\"Root1\"}" }, { "id": "31953106606966983378809025079804211143289615424298221569", "timestamp": 1432826855000, "message": "{\"eventVersion\":\"1.03\",\"userIdentity\":{\"type\":\"Root2\"}" }, { "id": "31953106606966983378809025079804211143289615424298221570", "timestamp": 1432826855000, "message": "{\"eventVersion\":\"1.03\",\"userIdentity\":{\"type\":\"Root3\"}" } ] }

図 2: メッセージ抽出による解凍後の出力例:

{"eventVersion":"1.03","userIdentity":{"type":"Root1"} {"eventVersion":"1.03","userIdentity":{"type":"Root2"} {"eventVersion":"1.03","userIdentity":{"type":"Root3"}

解凍の有効化と無効化

、、 AWS Command Line Interface または AWS SDKs を使用して AWS Management Console、解凍を有効または無効にできます。

を使用して新しいデータストリームで解凍を有効にする AWS Management Console

を使用して新しいデータストリームで解凍を有効にするには AWS Management Console
  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/kinesis で Kinesis コンソールを開きます。

  2. ナビゲーションペインで Amazon Data Firehose を選択します。

  3. Firehose ストリームの作成 を選択します

  4. 「送信元と送信先の選択

    ソース

    Firehose ストリームのソース。次のいずれかのソースを選択します。

    • 直接 PUT – プロデューサーアプリケーションが直接 に書き込む Firehose ストリームを作成するには、このオプションを選択します。Firehose の AWS Direct PUT と統合されている のサービス、エージェント、オープンソースサービスのリストについては、このセクションを参照してください。

    • Kinesis ストリーム: Kinesis データストリームをデータソースとして使用する Firehose ストリームを設定するには、このオプションを選択します。その後、Firehose を使用して既存の Kinesis データストリームからデータを簡単に読み取り、送信先にロードできます。詳細については、「Kinesis Data Streams を使用した Firehose への書き込み」を参照してください。

    送信先

    Firehose ストリームの送信先。以下のうちのひとつを選択します。

    • Amazon S3

    • Splunk

  5. Firehose ストリーム名 に、ストリームの名前を入力します。

  6. (オプション) 「レコードの変換」:

    • 「Amazon CloudWatch Logs からソースレコードを解凍する」セクションで、「解凍を有効にする」を選択します。

    • 解凍後にメッセージ抽出を使用する場合は、「メッセージ抽出を有効にする」を選択します。

を使用して既存のデータストリームで解凍を有効にする AWS Management Console

解凍を実行する Lambda 関数を持つ Firehose ストリームがある場合は、Firehose 解凍機能に置き換えることができます。続行する前に、Lambda 関数コードを確認して、解凍またはメッセージ抽出のみを実行することを確認します。Lambda 関数の出力は、前のセクションの図 1 または図 2 に示す例のようになります。出力が似ている場合は、次のステップを使用して Lambda 関数を置き換えることができます。

  1. 現在の Lambda 関数をこの設計図 に置き換えます。新しい設計図の Lambda 関数は、受信データが圧縮されているか解凍されているかを自動的に検出します。入力データが圧縮されている場合にのみ解凍を実行します。

  2. 解凍用の組み込み Firehose オプションを使用して解凍を有効にします。

  3. Firehose ストリームの CloudWatch メトリクスがまだ有効になっていない場合は、有効にします。メトリクス CloudWatchProcessorLambda_ をモニタリングIncomingCompressedData し、このメトリクスがゼロに変わるまで待ちます。これにより、Lambda 関数に送信されるすべての入力データが解凍され、Lambda 関数が不要になります。

  4. ストリームを解凍する必要がなくなったため、Lambda データ変換を削除します。

を使用した解凍の無効化 AWS Management Console

を使用してデータストリームの解凍を無効にするには AWS Management Console

  1. にサインイン AWS Management Console し、https://console.aws.amazon.com/kinesis で Kinesis コンソールを開きます。

  2. ナビゲーションペインで Amazon Data Firehose を選択します。

  3. 編集する Firehose ストリームを選択します。

  4. Firehose ストリームの詳細ページで、設定タブを選択します。

  5. 「レコードの変換と変換」セクションで、「編集」を選択します。

  6. 「Amazon CloudWatch Logs からソースレコードを解凍する」で、「解凍を有効にする」を選択し、「変更を保存」を選択します。

よくある質問

解凍中にエラーが発生した場合、ソースデータはどうなりますか?

Amazon Data Firehose がレコードを解凍できない場合、レコードはそのまま (圧縮形式で)、Firehose ストリームの作成時に指定したエラー S3 バケットに配信されます。レコードに加えて、配信されたオブジェクトにはエラーコードとエラーメッセージも含まれ、これらのオブジェクトは という S3 バケットプレフィックスに配信されますdecompression-failed。Firehose は、レコードの解凍に失敗した後も他のレコードを処理し続けます。

解凍が成功した後に処理パイプラインでエラーが発生した場合、ソースデータはどうなりますか?

動的パーティショニングやデータ形式変換などの解凍後に Amazon Data Firehose が処理ステップでエラーが発生した場合、レコードは圧縮形式で Firehose ストリームの作成時に指定したエラー S3 バケットに配信されます。レコードに加えて、配信されたオブジェクトにはエラーコードとエラーメッセージも含まれます。

エラーや例外が発生した場合にどのように通知されますか?

解凍中にエラーまたは例外が発生した場合、 CloudWatch ログを設定すると、Firehose はエラーメッセージを CloudWatch ログに記録します。さらに、Firehose はモニタリングできるメトリクスに CloudWatch メトリクスを送信します。オプションで、Firehose によって発行されたメトリクスに基づいてアラームを作成することもできます。

put オペレーションが CloudWatch Logs から行われない場合はどうなりますか?

顧客が CloudWatch Logs から来putsない場合、次のエラーメッセージが返されます。

Put to Firehose failed for AccountId: <accountID>, FirehoseName: <firehosename> because the request is not originating from allowed source types.

Firehose は解凍機能に対してどのようなメトリクスを出力しますか?

Firehose は、すべてのレコードを解凍するためのメトリクスを出力します。期間 (1 分)、統計 (合計)、日付範囲を選択して、DecompressedRecords失敗した、成功した、DecompressedBytes失敗した、成功した の数を取得する必要があります。詳細については、「CloudWatch ログの解凍メトリクス」を参照してください。