ゾーン間下り通信(Inter-Zone Egress)のコストが、いったいどこから発生しているのか気になったことはありませんか?GCPのネットワーク料金ページを何度も開いて内訳を追いかけた経験は?私もまさに同じでした。そこで、その疑問を少しでも解きほぐすべく、この記事をまとめてみました。
まずはフローログを有効化
はじめに、対象プロジェクトでVPCフローログを有効化します。VM上にscreenやtmuxセッションを立ち上げてトラフィック解析ツールを動かす——といった煩わしい作業をせずに、ネットワーク内の仮想マシン(VM)間でやり取りされているバイト数を確認できる、最も手早く簡単な方法です。
ログを取りながら、トラフィックが流れるのを数分待ちましょう。
VPCフローログが有効になっていれば、Cloud Loggingで以下のようなフィルタを使うとログが表示されます。
logName="projects/PROJECT_NAME/logs/compute.googleapis.com%2Fvpc_flows"
こんな見え方になるはずです。

VPCフローログの例
スプレッドシートでサクッと確認する方法
BigQueryなどのログシンクで分析するために丸一日待たなくても、スプレッドシート/CSVとしてエクスポートするだけで十分なケースもあります。ネットワークの規模によっては、これだけで全体像をつかむには事足りるはずです。
SQLでログをクエリしたい場合は、シンクを作成してログをBigQueryデータセットに送り込むのがおすすめです。
Cloud LoggingでVPCフローログが見られるようになったら、直近1万件のエントリをCSVファイルとしてDriveにエクスポートしてみましょう。これで、どこからどこへ、どのくらいのバイト数が流れているかが見えてきます。

VPCフローログのダウンロード
Googleスプレッドシートにエクスポートしたら、source/destinationとbytes_sentでピボットテーブルを作成します。バイト数は、以下のフォーマットを使って読みやすい単位に整形しておくと便利です。
[<1000000]0.00," KB";[<1000000000]0.00,," MB";0.00,,," GB"
バイト数の列を選択し、「表示形式 > 数字 > 表示形式の詳細設定 > カスタム数値形式」を開いて、上記を貼り付け「適用」をクリックします。

カスタム数値形式
これで完了です。とてもシンプルですね。ネットワークの動きについて、おおまかな全体像が見えてきたはずです。合計列には source~destination ごとのバイト数が表示され、どの経路で通信量が多いかひと目で分かります。

Googleスプレッドシートでのピボットテーブル

BigQueryで分析する方法
まだ傾向が見えてきませんか?期間を変えてみるか、丸一日待ってからBigQueryでクエリを投げてみましょう。先ほどBigQueryへのシンクを作成していれば、インスタンスごとのログとバイト数のサンプルが格納されたBQデータセットがすでに手元にあるはずです。
VM間で送信されたバイト数の合計を割り出すクエリは、たとえば次のようになります。
SELECT CONCAT(jsonPayload.src_instance.vm_name, " to ", jsonPayload.dest_instance.vm_name) AS vm_traffic,
sum(CAST (jsonPayload.bytes_sent AS INT64)) AS bytes_sent
FROM `PROJECT_NAME.DATASET_NAME.compute_googleapis_com_vpc_flows`
WHERE TIMESTAMP >= "2021-07-14 00:00:00 UTC"
GROUP BY vm_traffic
ORDER BY bytes_sent

BQでのbytes_sent出力例
どうでしょう?リストの一番上に何があるか、見えてきましたか? :)
DoiTのレポート機能を使えばさらに簡単
GoogleスプレッドシートやBigQueryもこの種のデータを掘り下げるには十分強力なツールですが、DoiT Internationalのクラウド管理プラットフォームをお使いであれば、もっと手軽に、しかも分かりやすいビジュアルで同じ情報にアクセスできます。
- DoiTのNavigatorにログインします。
- Analyticsから「Reports」をクリックし、「Create new Report」を選びます。
- Metricsは「Cost」のままにします(使用量を見たい場合はUsageに切り替えられます)。
- 「Project/Account ID」でグループ化します。
- SKUでフィルタリングし、「Network Inter Zone Egress」を探してチェックを入れます。

DoiT NavigatorのSKUフィルタリング
6. Saveをクリックし、レポートを実行します。

DoiT NavigatorのNetwork Inter Zone Egressレポート
以上で完了です。左側のメニューからは、メール配信スケジュールの設定など、その他の操作も行えます。
追伸:VPCフローログをオフにするのをお忘れなく。
最新情報は、DoiT Engineering Blog、DoiT LinkedInチャンネル、DoiT Twitterチャンネルでお届けしています。採用情報はhttps://careers.doit-intl.comをご覧ください。