VPCフローログをApache Parquet形式でS3に送信する場合の料金を勘違いしていたので調べ直した

VPCフローログのログファイル形式をApache Parquetにするかどうかは、ログ運用を考慮した上で選択しよう!
2023.02.13

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

こんにちは!コンサル部のinomaso(@inomasosan)です。

以前、以下のブログでAmazon VPCフローログをApache Parquet形式で保存した方がコストが安くなるというブログを書きました。その後、みなみからの指摘で間違っていることに気がついたので、再度調べ直しました。

最初にまとめ

  • VPCフローログをS3に保管する料金はApache Parquet形式の方が高くなってしまう
  • Athenaによるクエリの料金はApache Parquet形式の方が安く、クエリも高速になる
  • VPCフローログをどのように運用するかで、ログファイル形式を決めたほうがよい

VPCフローログのログファイル形式のおさらい

2023/2/13時点で、VPCフローログをS3に送信する場合、ログファイル形式はデフォルトでテキストとなっており、Apache Parquetに変更することが可能となっております。どちらもS3にはGzipで圧縮された形で保管されます。
VPCフローログをCloudWatch LogsKinesis Firehoseに送信することも可能ですが、その場合のログファイル形式はテキストのみの対応となります。

VPCフローログのコスト要素

VPCフローログをS3に送信する場合の料金計算は、大まかにはVended LogsS3ストレージの2つとなります。

Vended LogsはCloudWatch Logsの機能で、AWSサービスがお客様に代わってネイティブに発行するAWSサービスの特定ログです。VPCフローログもこの中に含まれます。

Vended Logsの東京リージョンの料金は以下のようになります。

初見ですと、上記表での計算が難しいので、VPCフローログの料金例を見ていきます。

テキストのみだと私の脳が辛くなってきたので、簡易的な図にしてみました。

図にするとわかりやすいのですが、ログファイル形式をApache Parquetにする場合は変換料金が追加で必要となり、S3標準の料金と比較すると約2倍の料金が必要となることがわかります。

ログファイル形式別の料金について

料金例の条件を参考に東京リージョンでログファイル形式がテキストとApache Parquetでのコストを試算してみました。

取り込まれた VPC フローログをオプションの Apache Parquet 形式で 1 か月あたり 72 TB 直接 S3 に送信する VPC をモニタリングし、そのデータを 1 か月間アーカイブ

テキスト

  • ログ取り込みの月額料金
    • 0~10 TB (0.25 USD/GB) = 10 x 1,024 x 0.38 USD = 3,891.200 USD
    • 10~30 TB (0.15 USD/GB) = 20 x 1,024 x 0.228 USD = 4,669.440 USD
    • 30~50 TB (0.075 USD/GB) = 20 x 1,024 x 0.114 USD = 2,334.720 USD
    • 50~72 TB (0.05 USD/GB) = 22 x 1,024 x 0.076 USD = 1,712.128 USD
    • 取り込みの合計料金 = 3,891.200 USD + 4,669.440 USD + 2,334.720 USD + 1,712.128 USD = 12,607.488 USD
  • ログアーカイブの月額料金 (S3標準に保管)
    • 72 TB (0.025 USD/GB) = 72 x 1,024 x 0.025 = 1,843.2 USD
  • 合計の月額料金
    • 12,607.488 USD + 1,843.2 USD = 14,450.688 USD

Apache Parquet

  • ログ取り込みの月額料金
    • 0~10 TB (0.25 USD/GB) = 10 x 1,024 x 0.38 USD = 3,891.200 USD
    • 10~30 TB (0.15 USD/GB) = 20 x 1,024 x 0.228 USD = 4,669.440 USD
    • 30~50 TB (0.075 USD/GB) = 20 x 1,024 x 0.114 USD = 2,334.720 USD
    • 50~72 TB (0.05 USD/GB) = 22 x 1,024 x 0.076 USD = 1,712.128 USD
    • 取り込みの合計料金 = 3,891.200 USD + 4,669.440 USD + 2,334.720 USD + 1,712.128 USD = 12,607.488 USD
  • Apache Parquet 形式変換の月額料金
    • 72TB (0.056 USD/GB) = 72 x 1,024 x 0.056 USD = 4,128.768 USD
  • ログアーカイブの月額料金 (ログデータが 6.5 TB まで圧縮され、S3標準に保管)
    • 6.5 TB (0.025 USD/GB) = 6.5 x 1,024 x 0.025 = 166.4 USD
  • 合計の月額料金
    • 12,607.488 USD + 4,128.768 + 166.4 USD = 16,902.656 USD

料金の差分

今回の条件だと、Apache Parquetはテキストと比較して2451.968 USD料金が高くなるとわかりました。

結局ログファイル形式はどうするのか?

VPCフローログの保管のみを考えるのであれば、ログファイル形式はテキストの方が料金が安くなります。

ただ、Apache Parquetにメリットがないかというと、そういうわけではありません。
AWSマネジメントコンソールのログファイル形式の情報に以下のような記載がありました。

Apache Parquet は、テキスト形式よりも効率的かつコスト効率の高い方法でデータを保存およびクエリする列指向データ形式です。Parquet 形式で保存されたデータに対するクエリは、テキスト形式で保存されたデータよりも 10~100 倍高速かつ低コストになっています。Gzip 圧縮により Parquet 形式で配信されるフローログは、Gzip 圧縮によりテキスト形式で配信されるフローログよりも Amazon S3 で使用するストレージ領域が約 20% 少ないため、ストレージとクエリのコストがさらに削減されます。

上記を踏まえた上で、個人的なログファイル形式の選び方のポイントは以下となります。

テキストを選ぶ場合

  • 障害時にのみログ分析で使用する
  • ログの可視化等による高頻度なクエリ実行は発生しない

Apache Parquetを選ぶ場合

  • ログ可視化や日常的な運用で高頻度なクエリ実行が必要
  • 高速な分析性能が求められる

参考

まとめ

当初はVPCフローログの保管と分析の両方でApache Parquetの方がメリットがあると考えていましたが、そう甘くはありませんでした。
VPCフローログをどのように運用するかで、ログファイル形式を決めていただくのが良いかと思います。

この記事が、どなたかのお役に立てば幸いです。それでは!