Firehose のサードパーティ連携を利用してDatadogへのログ転送を試してみた

サードパーティへのデータ転送をサポートしたFirehoseを利用して、DataDog へのログ転送を試してみました。
2020.08.19

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

AWSチームのすずきです。

2020年7月にHTTPエンドポイントへのデータ配信をサポートした Kinesis Data Firehoseを利用して、 DataDog (Log Management) へのログ転送を試す機会がありましたので、紹介させていただきます。

設定手順

Datadog の Webコンソール で案内された手順で設定を行いました。

  • 「Logs」→「GettingStart」→「Cloud」→「AWS」→「Kinesis Firehose」

当画面で確認できるDatadogのAPIキー、Firehoseの設定で必要となるので控えます。

AWS設定

S3

Kinesis Data Firehose と同一リージョンに、ログ出力先となる S3 バケットを設置しました。

S3の設定はデフォルトで利用しました。

S3のストレージ費用が問題となる規模で利用する場合、ログ保存要件に応じたライフサイクル設定をおすすめします。

Firehose

配信ストリーム作成

  • Datadog Logs へのログ転送を設定した Kinesis Data Firehose 配信ストリームを新規に作成しました。

配信先指定

  • Third-party service provider として「Datadog」を選択しました。

  • エンドポイントは「Datadog US」、APIキーはDatadogのコンソールで案内された情報を反映しました。
  • S3は、Firehose用に用意したバケットを指定。 Backup と Failed Data を 保存する指定としました。

詳細設定

  • バッファ設定はデフォルトとしました。
  • Firehoseが利用するIAMロールは新規発行とました。

配信テスト

Datadog設定を実施した Firehose 配信ストリームに テストデータを登録しました。

Datadog設定

Log Explorer

Firehoseのバッファ時間(デフォルト60秒)を経過したログデータが、Log Explorer で確認可能になります。

任意のログレコードを指定すると、ログの詳細が確認可能です。

Add Column

フィルタや集計対象として利用する項目の指定を行います。

数値の範囲指定でフィルタする項目は「Add Mesure」、セレクトボックスでフィルタする項目は「Add facet」を指定します。

「Mesure」「facet」の設定後、新たに登録されたログが、指定した任意の条件でフィルタ処理する事が可能になります。

Export Monitor

指定した条件を元に「Monitor」設定を作成します。

価格(price)が200以上のログを 部署(sector)単位で発生件数を数え、過去5分間に10件以上を超過した場合を検出するクエリ条件を試してみました。

logs("@price:>=200").index("*").rollup("count").by("@sector").last("5m") > 10

設定後、Firehose のサンプルデータを再度投入し、「Monitor」画面で可視化できる事を確認できました。

料金

東京リージョンのFirehose経由でDatadogへのログ転送を行った場合の月額費用を、 1KBのログレコードが継続して発生する環境で試算してみました。

ログ件数(毎分) ログ件数(月間) 容量(月間MB) Datadog(件数) Datadog(容量) Firehose(容量) S3(ストレージ) 費用合計(Datadog+AWS)
1 43200 43.2 $0.11 $0.00 $0.00 $0.00 $0.12
10 432000 432 $1.10 $0.04 $0.08 $0.01 $1.23
100 4320000 4320 $11.02 $0.43 $0.78 $0.11 $12.33
1000 43200000 43200 $110.16 $4.32 $7.78 $1.08 $123.34
10000 432000000 432000 $1,101.60 $43.20 $77.76 $10.80 $1,233.36

※試算前提

  • Datadog は Pay-As-You-Go のオンデマンド単価(100万イベント毎に$2.55)
  • ログの保持期間、Datadogは15日、S3は30日で計算
  • S3に保存されるログの圧縮率は75%
  • S3のAPI課金は計算外

同条件で、CloudWatch Logs を利用した場合の試算は以下の通りでした。

ログ件数(1分あたり) ログ件数(30日あたり) 収集 保存 分析 費用合計(CloudWatchLogs)
1 43200 $0.033 $0.000 $0.001 $0.034
10 432000 $0.328 $0.004 $0.008 $0.340
100 4320000 $3.283 $0.036 $0.082 $3.401
1000 43200000 $32.832 $0.356 $0.821 $34.009
10000 432000000 $328.320 $3.564 $8.208 $340.092

※試算前提

  • ログの保持期間は30日
  • 保存されるログの圧縮率は75%
  • 保存されたログは分析のため CloudWatch Logs Insights で10回スキャンされる

まとめ

Firehose のHTTPエンドポイントサポートを利用して、Datadog Logs にログを簡単に転送する事が可能となりました。

Datadog Logsへのログ転送、CloudWatch LogsとLambda で実現している場合、Firehoseへの切替によりAWS利用費の節約や、Lambdaの管理が削減できる事が期待できます。

今回はサンプルデータを用いた簡易な検証でしたが、GuardDutyログの集約管理の実現などについても、おって紹介させて頂きたいと思います。