ログを使用して CloudWatch Amazon データFirehose に書き込む - Amazon Data Firehose

Amazon Data Firehose は、以前は Amazon Kinesis Data Firehose として知られていました

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

ログを使用して CloudWatch Amazon データFirehose に書き込む

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

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

重要

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

CloudWatch ログの解凍

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

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

注記

ストリームで圧縮解除機能を有効にする場合は、 CloudWatch そのストリームをログサブスクリプションフィルター専用に使用し、Vend Logs には使用しないでください。 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"}

解凍の有効化と無効化

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

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

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

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

  3. [Create delivery stream (配信ストリームの作成)] を選択します。

  4. [送信元と送信先を選択] の下にあります。

    配信ストリームのソースです。

    Firehose ストリームのソースです。以下のソースから 1 つを選択します。

    • Direct PUT — プロデューサーアプリケーションが直接書き込む Firehose ストリームを作成するには、このオプションを選択します。現在、Firehose の Direct PUT と統合されているサービス、エージェント、オープンソースサービスは次のとおりです。 AWS

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

    送信先

    Firehose ストリームのデスティネーション。以下のうちのひとつを選択します。

    • Amazon S3

    • Splunk

  5. [配信ストリーム名] に、ストリームの名前を入力します。

  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. ナビゲーションペインの [Data Firehose] を選択します。

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

  4. [設定] を選択します。

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

  6. [Amazon CloudWatch ログからソースレコードを解凍] で [解凍を有効にする] をオフにし、[変更を保存] を選択します。

よくある質問

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

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

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

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

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

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

put操作がログから行われない場合はどうなりますか? CloudWatch

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

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

Firehose は解凍機能についてどのような指標を出力しますか?

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