ForgeVision Engineer Blog

フォージビジョン エンジニア ブログ

Network Address Usage (NAU) を有効にしてみた

こんにちは。
カスタマーエンジニアの尾谷です。

お客様のサービスを運用管理する自社プロダクトのチームマネージャーを担当しています。

AWS re:Invent 2022 で講演された以下のブレイクアウトセッションを観ていた際に NAU というキーワードがでてきました。

www.youtube.com

NAU の GA は、昨年の 10 月にアナウンスされていました。

aws.amazon.com

仕事柄 CloudWatch メトリクスを眺めることが多いのですが NAU というメトリクスを見たことがなかったので調べてみると、オプトイン形式でした。
有効化してみた所感をご紹介したいと思います。

Network Address Usage (NAU)

docs.aws.amazon.com

NAU は AWS のドキュメントで、ネットワークアドレスの使用状況と日本語訳されています。
VPC では、さまざまなサービスが稼働して IP アドレスを利用されていきます。
新しい EC2 インスタンスを起動したり、Network Load Balancers VPC エンドポイント、Lambda 関数、Transit Gateway アタッチメント、NAT ゲートウェイなどの新しいリソースをプロビジョニングした際にも IP アドレスは消費されていきます。
制限ある IP アドレスの枯渇を検知するのに NAU の監視が有効だと記載されています。

NAU の監視には費用はかかりません。

オプトインしても料金がかからないとのことなので、早速有効化してみました。

NAU の監視を有効化する方法

  1. VPC コンソールでナビゲーションベインから [ お使いの VPC ] をクリックします。 (https://console.aws.amazon.com/vpc/) を開きます。
  2. 対象の VPC のチェックボックスにチェックを入れて、[ アクション ] から [ VPC の設定を編集 ] を選択します。
  3. [ Network Address Usage メトリクスを有効にする ] のチェックボックスをオンにします。

メトリクスが表示されない

めっちゃ簡単。ブログおしまいー!と思って浮かれていたのですがメトリクスが見つかりません。
ドキュメントには AWS/EC2AWS/Usage の名前空間に表示されるとのことで、使用 (Usage) を確認するも、NetworkAddressUsage NetworkAddressUsagePeered もありません。
少なくとも停止しているインスタンスが 2 台あるので、ネットワークインターフェースを二つ押さえているはずなのですが。。

レポート条件:24 時間毎

ドキュメントを確認したところ、24 時間レポートと記載がありました。1 日に 1 度しか計測してくれないようです。

翌日確認してみたところ、メトリクスが現れました。

昨日、有効にした VPC が項目として表示されました。ただ、ネットワークインターフェイスを使用しているはずの VPC も 0 とメトリックが記録されていました。

経過観察 3 日目

NAU を有効化してから 3 日が経過しました。どうやらこのチェックは 21 時限定で動いているようです。

拡大してみてみると、21:03、21:04、21:20、21:25、21:35、21:45、21:55 の 7 点が記録されていました。 日によって若干の誤差がありますが、7 点が記録されています。

毎日欠かさずチェックしてくれているようで、規則正しさは大変よろしいのですが、このアカウントでは EC2 インスタンスを日中帯しか起動しないので 21 時にチェックされても 0 のままです。

メトリクスが上昇

設定を有効化してから 6 日が経過しました。22 時まで Cloud9 を使って検証を行ったので、その結果を確認してみました。
すると、値が 0 のままでした。

急いで別の EC2 を起動すると、1 が記録されました。(21:55 にメトリクスが 1 上昇しています。)
Cloud9 は EC2 インスタンスが起動してプライベート IP アドレスを使用するのにカウントが上昇しないのは問題ではないか?と感じました。

所感

Cloud9 の IP がカウントされなかったのは正直微妙な感じでしたし、そもそも VPC を作ると AWS 側で IP アドレスが 3 つ予約されます。ということはメトリクスも 3 になるべきではないのか?と思いましたが、お客様が利用できるアドレス数をカウントするための値 (あくまでお客さまのネットワークアドレスの利用数を計測するためのモニタリング) だとすると、値として正しいのかも知れません。

ただ、少なくともネットワークアドレスは常に利用されているとは限らないのではないでしょうか。
Auto Scaling や、VPC Lambda のように一時的に増えるサービスでアドレスが枯渇した際のチェックには使えない印象でした。

本メトリクスの誕生経緯

もう一度、ブレイクアウトセッションを確認してみました。

www.youtube.com

現在、VPC 内で扱える IP アドレスは、64,000 という大きな数でサービスクウォータが設定されていて、制限解除すれば 256,000 まで拡張できるようになりました。また、VPC ピアリングを組んだとき、更に IP が増えるので最大で 512,000 アドレスまで利用可能になります。
この総アドレス数を把握するのは難しく、制限に当たった際に何が原因でエラーになっているのか特定ができない可能性があるため、目安として誕生したのではないか?と捉えました。

docs.aws.amazon.com

ただ折角メトリクスを表示できるようにするなら、サブネット内で利用できる残り IP アドレス数も表示できるようにするなど利用用途が広がると良いなと思いました。

以上、最後までお読みくださりありがとうございました。