VPCフローログをApache Parquet形式でS3に送信する場合の料金を勘違いしていたので調べ直した
こんにちは!コンサル部の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 LogsやKinesis Firehoseに送信することも可能ですが、その場合のログファイル形式はテキストのみの対応となります。
VPCフローログのコスト要素
VPCフローログをS3に送信する場合の料金計算は、大まかにはVended LogsとS3ストレージの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フローログをどのように運用するかで、ログファイル形式を決めていただくのが良いかと思います。
この記事が、どなたかのお役に立てば幸いです。それでは!