SODA Engineering Blog
💵

Athenaを活用してログ調査コストを98%削減した話 ($1,552→$32)

に公開

ログ監視・分析サービスを用いた過去ログ調査では、時にそのコストが大きな課題となります。

本記事では、あるケースにおいて$1,500以上と見込まれた過去ログ調査の費用を、Amazon Athenaの活用により$32まで大幅削減(98%カット)した実際の事例をご紹介します。

具体的なコスト試算やAthena導入から運用上の注意点まで、コスト効率の高いログ調査の実現に向けた事例として参考になれば幸いです。

背景:snkrdunk.comのログ調査における課題

弊社SODAでは、アプリケーションやインフラのログ監視・分析にDatadogを利用しています。Datadogは非常に高機能で便利なサービスですが、コストの観点から全てのログを長期間保存しておくことは現実的ではありません。そのため、以下のような運用を行っていました。

  • 直近1週間のログはDatadog上でリアルタイムに検索・分析可能
  • 1週間を経過したログはS3にアーカイブ

この運用により、日常的なログ調査はDatadogでコストを抑えつつ効率的に行っていました。

しかし、過去のログを調査する必要が生じた場合、S3にアーカイブされたログをDatadogにrehydrate(再取り込み)する必要がありました。このrehydrateには以下のような課題があります。

  • コスト: rehydrateするデータ量に応じてDatadogの取り込みコストとインデックスコストが発生する
  • 処理時間: 大量のログをrehydrateするには時間がかかる

特に、長期間(数ヶ月〜1年以上)にわたるログを広範囲に調査する場合、コストが非常に高額になることが懸念されていました。

事例:警察からの調査協力依頼とAthena導入のきっかけ

詳細は伏せますが具体的な事例として、警察から特定のユーザーに関する調査協力依頼がありました。この依頼では、複数のユーザーIDについて過去1年間のアクセスログを抽出し、提出する必要がありました。

試算の結果、この調査にかかる費用は$1,552にも上ることが判明しました。これは一時的な費用とはいえ、無視できない金額です。この状況を踏まえ、よりコスト効率の高いログ調査方法を模索することになりました。

Athenaによるコスト削減アプローチ

そこで注目したのが Amazon Athena です。
Athenaは、S3に保存されたデータに対して標準SQLを用いて直接クエリを実行できるインタラクティブなクエリサービスです。

Athenaを利用することで大幅なコスト削減が期待できます。具体的なメリットとしては以下が挙げられます。

  • Datadog関連コストの削減: S3のログをDatadogにrehydrateする必要がなくなるため、Datadogの取り込みコストやインデックスコストが発生しません。
  • AWS内でのデータ処理: S3からAthenaへのデータスキャンはAWS内部で完結するため、高額な外部へのデータ転送コストを抑えられます。
  • 柔軟なクエリ実行: 標準SQLを利用できるため、ある程度複雑な条件でのログ抽出も比較的容易に行えます。

これらのメリットにより、警察からの調査協力依頼のような長期間のログを対象とする必要があるケースでも、効率的かつ低コストなログ調査が実現可能となります。

具体的なコスト試算

ここで、今回の警察からの調査協力依頼(対象ユーザー数件、期間1年間、データ量約6.36TB)に対して、従来のDatadog Rehydrateと前述のAthenaを利用する場合でそれぞれのコストを比較してみましょう。

関連サービスの料金体系について

今回のケースで関連するAWSの主要サービス(S3、Athena)およびDatadogの料金体系について確認します。本記事における試算は、AWSの東京リージョン (ap-northeast-1) での利用を想定しています。

https://www.datadoghq.com/ja/pricing/?product=log-management#products

https://aws.amazon.com/jp/s3/pricing/

https://aws.amazon.com/jp/athena/pricing/

これまで通りDatadog Rehydrateを使う場合

  • Datadogへのログ取り込みコスト: 6.36TB (6360GB) * $0.13/GB = $826.8
  • S3からのデータ転送コスト: 6.36TB (6360GB) * $0.114/GB = $725.04
  • Datadogのインデックス作成コスト: 100万ログイベントあたり$2.13となっており、今回は対象ユーザーが限定的なため、無視できるレベルと仮定します。

合計: $826.8 + $725.04 = $1,551.84

Datadog Rehydrateを利用する場合、Datadogへのログ取り込みコストに加えて、S3からのデータ転送コストも発生することで高額になります。

ただし、実際の料金は契約プランやデータ量に応じたボリュームディスカウントなどが適用される場合があるため、ここに記載した金額はあくまで試算となります。

今回新たにAthenaを利用する場合

  • Athenaのスキャンコスト: 6.36TB * $5/TB = $31.8
  • S3からのデータ転送コスト: 無料(AthenaとS3バケットが同一リージョンにある場合)

合計: $31.8

AWSの料金体系により、S3バケットから同一AWSリージョン内のAthenaへ転送されるデータは無料です。これにより、S3のGETリクエスト料金のみ(微々たるもの)で済み、高額な転送コストは発生しません。

また、Datadog Rehydrateで必要だったログ取り込みコストやインデックス作成コストもAthenaの利用により不要となります。これらの要素が、トータルコストを大幅に削減できる主な理由です。

このように、Athenaを利用することで、今回のケースではコストを約$1,552から約$32へと、約98%削減できることがわかりました。

Athenaでログを検索するための準備

AthenaでS3上のログデータを検索可能にするためには、いくつかの準備が必要です。今回、これらの構築作業はSREチームの@takehitohitoさんにご対応いただきました!本記事では詳細な手順までは踏み込みませんが、大まかには以下のような作業が行われました。

  1. ログデータ形式の確認とテーブル定義の検討:
    • S3上のJSON形式のログ(今回のケースはjson.gz)を確認し、Athenaで利用するためのテーブルスキーマやデータ型を検討します。
  2. Athenaテーブルの作成:
    • CREATE EXTERNAL TABLE ステートメント等で、S3上のログデータを参照するAthenaの外部テーブルを作成します。この際、JSONデータの構造に合わせてテーブルのスキーマを定義し、データ形式としてJSONを指定することで、Athenaがファイルを正しく解釈できるようにします。
  3. パーティションの設定:
    • ログがS3上で日付や時間などでプレフィックス分割されている場合、対応するパーティションキーをAthenaテーブルに設定し、クエリ時のスキャン量を削減します。

これらの準備により、S3にアーカイブされたログに対して、容易にSQLでクエリを実行できるようになりました。

Athenaを利用する上での注意点

Athenaは便利なサービスですが、利用する上でいくつか注意しておきたい点があります。

  • タイムアウト: Athenaのクエリ実行時間には上限があります(デフォルトでは30分)。大規模なデータセットに対してクエリを実行する場合、タイムアウトが発生することが考えられます。クエリの最適化(パーティションの活用、スキャンするカラムの限定など)や、必要に応じてクエリを分割するなどの工夫が必要です。
  • Datadogほど高機能ではない: Datadogが提供するような高度な可視化機能、アラート機能などはAthena単体では提供されません。AthenaはあくまでS3上のデータに対するアドホックなクエリ実行に特化したサービスと理解しておく必要があります。リアルタイム性が求められる監視や、高度な分析機能が必要な場合は、引き続きDatadogのようなサービスと使い分けることが大事です。
  • 意図しないコスト発生のリスク: Athenaの料金は主にスキャンしたデータ量に基づいており、S3バケットとAthenaクエリエンジンが異なるリージョンにある場合は別途データ転送コストも発生します。コストを最適化するためには、パーティションを適切に設定し、WHERE句でスキャン対象を限定すること、そして可能な限りS3バケットと同一リージョンでクエリを実行することが重要です。

その他のコスト削減案(検討されたもの)

今回のログ調査コスト削減にあたり、Athena以外にもいくつかの代替案が検討されました。最終的にはAthenaが採用されましたが、参考までに軽く触れておきます。

  • DuckDB: DuckDBは、S3などの外部ストレージ上のデータに対しても直接SQLクエリを実行できる、分析用途のデータベースシステムです。ローカル環境や小規模な環境でS3上のデータを直接クエリする場合などに有効な選択肢となり得ます。しかし、今回のケースではAWSのエコシステム内で完結できるAthenaの利便性が重視されました。
  • スクリプトによるログ集計: スクリプトを書いてS3からログをダウンロードし集計・調査するアプローチも考えられました。特定の処理に特化したスクリプトを作成すれば柔軟性は高いものの、開発・メンテナンスコストや実行環境の準備、大規模データ処理時のパフォーマンスなどを考慮すると、深く検討するには至りませんでした。

まとめ

本記事では、Datadogで発生していたログ調査コストの問題に対し、Amazon Athenaを適切に活用しDatadogと使い分けることで大幅なコスト削減($1,552→$32、98%削減)を実現した事例を紹介しました。

S3にアーカイブされた大量のログに対するアドホックな調査において、AthenaはDatadog Rehydrateのコストを回避する強力な選択肢となります。

もちろん、Athenaにもタイムアウトや機能面の制約があるため、Datadogのような高機能なサービスとの使い分けが重要です。それぞれのツールの特性を理解し、目的に応じて最適なものを選択することが、効果的なログ活用とコスト最適化に繋がると思います。

Special Thanks

今回の取り組みにあたり、SREの@takehitohitoさん、VPoTの@rinchsanさん、CS-Riskチームの@pukuさんにご協力いただきました。ありがとうございました!

GitHubで編集を提案
SODA Engineering Blog
SODA Engineering Blog

Discussion