Datadog Kinesis Firehose Destination を使用して AWS サービスログを送信する

Datadog Kinesis Firehose Destination を使用して AWS サービスログを送信する

​ AWS サービスログは通常、S3 バケットまたは CloudWatch Log グループに保存されます。これらのログをサブスクライブし、Amazon Kinesis ストリームに転送して、1 つまたは複数の宛先に転送することが可能です。Datadog は、Amazon Kinesis Delivery ストリームのデフォルトの宛先の 1 つです。

AWS は Amazon Kinesis Data Firehose を完全に管理しているため、ストリーミングログ用の追加のインフラストラクチャーや転送構成を維持する必要はありません。

AWS Firehose コンソールで Kinesis Firehose Delivery Stream を設定するか、CloudFormation テンプレートを使用して宛先を自動的に設定できます。 ​

Datadog は、Datadog Kinesis 宛先を使用する場合、入力として Kinesis ストリームを使用することをお勧めします。Datadog がログの唯一のコンシューマーではない場合に備えて、ログを複数の宛先に転送する機能が用意されています。

ログを Datadog に送信するだけの場合、またはログに Kinesis Datastream がすでにある場合は、ステップ 1 を無視してください。

  1. (オプション) 新しい Kinesis ストリームを作成します(Kinesis ガイドを参照)。ストリームに DatadogLogStream など分かりやすい名前を付け、シャードカウントを 1 にします(必要な各 MB/s スループットのシャード数を増やします)。
  2. 新しい配信ストリームを作成し、DatadogLogsforwarder という名前を付けます。
  3. ソースを “Kinesis stream” に設定し (Kinesis ストリームを使用しない場合は、ソースを Direct PUT or other sources のままにします)、DatadogLogStream (またはすでにログが含まれている既存の Kinesis ストリーム) を選択します。
  4. データ変換とレコード変換を無効にして、next をクリックします。
  5. アカウントの Datadog リージョンに応じて、Datadog 宛先を選択し、Datadog US または Datadog EU リージョンを選択します。
  1. APIKEYAccessKey ボックスに貼り付けます (Datadog API 設定ページから API キーを取得できます)。
  2. (オプション) ログにカスタムタグとして追加されるカスタム parameters を追加します。
  1. 失敗したイベントを S3 バケットにバックアップすることを選択します。
  2. 配信ストリームパラメーターを構成します。重要なパラメーターが 2 つあります。
    • Retry time: イベントをバックアップ S3 バケットに送信する前に配信ストリームが再試行する時間。
    • Batch size: Datadog は 1MB から 4MB の間の値を推奨します。バッチサイズまたは残存時間 (最小 60 秒) に達した場合、ログは配信ストリームによって送信されます。Datadog は、バッチサイズをできるだけリアルタイムに近づけるように縮小することを推奨しています。

Delivery Stream で失敗したログが引き続き Datadog に送信されるようにするには、この S3 バケットでトリガーするように Datadog Lambda 関数を構成します

​ または、この CloudFormation テンプレートをカスタマイズして、AWS コンソールからインストールします。 ​ すべてのKinesis CloudFormation テンプレート全体をご確認ください。

AWS ログを Kinesis ストリームに送信する

  1. ロググループインデックスページSubscriptions 列を確認して、関連するロググループの現在のサブスクリプションを確認します。新しい Kinesis ストリームをサブスクライバーとして追加します。注: 各 CloudWatch ロググループに許可されるサブスクリプションは 2 つのみです。
  • : 2 つ以上のソースにサブスクライブする場合、このセットアップを完了後、新しい Kinesis ストリームにサブスクライブすることができます。
  1. Datadog に取り込みたい CloudWatch ロググループに、新しい Kinesis ストリームをサブスクライブさせます。この CloudWatch Logs ドキュメントセクション (ステップ 3〜6) を参照して、 a. aws iam create-role コマンドを使い、Kinesis ストリームにログデータを置く権限をCloudWatch Logs に付与する IAM ロールを作成します。 b. firehose:PutRecord firehose:PutRecordBatchkinesis:PutRecordkinesis:PutRecordBatch アクションを許可するアクセス許可ポリシーを作成します。 c. aws iam put-role-policy コマンドを使用して、新しく作成した IAM ロールにアクセス許可ポリシーを関連づけます。 d. Use the aws logs put-subscription-filter コマンドを使い、Datadog に取り込みたい CloudWatch ロググループに Kinesis ストリームを サブスクライブさせます。 ​ サブスクリプションフィルターの例: ​
    aws logs put-subscription-filter \
        --log-group-name "MYLOGGROUPNAME" \
        --filter-name "MyFilterName" \
        --filter-pattern "" \
        --destination-arn "DESTINATIONARN (data stream or delivery stream)" \
        --role-arn "MYROLEARN"
    

重要: AWS ドキュメントで説明されているように、サブスクリプションフィルターの宛先はロググループと同じアカウントである必要があります。 3. ロググループインデックスページSubscriptions をチェックして、新しい Kinesis ストリームがロググループをサブスクライブしているかを確認します。 ​ Kinesis データストリームを経由せずにログを配信ストリームに直接プッシュする場合は、AWS サブスクリプションフィルターのドキュメント (ステップ 12) に示すとおり、サブスクリプションフィルターの destination-arn パラメーターに Kinesis Firehose ARN を追加することで、CloudWatch ロググループを直接 Kinesis Firehose Destination にサブスクライブできます。 ​