Azure環境でSNATポート枯渇を見つけるメトリックの見方
2022-09-13
azblob://2022/11/11/eyecatch/2022-09-13-viewing-metrics-to-prevent-snat-port-exhaustion-000.jpg

9月頭から筋トレ4か月目に突入した多田です。マックとかラーメンとか唐突に食べたくなって結果ダーティバルク気味になってます。

はじめに

ここではLoad Balancer、Azure Firewall、NAT GatewayのSNATポートについて簡単に記載していきます。

Load Blancer

Load Blancerで第一に見る箇所として SNAT Connection Count というメトリックがあります。
このメトリックは使用されたSNATポートの数を見ることができるのですが、フィルターの設定を少し弄ると失敗したSNAT接続の数を確認することが可能です。FailedのカウントがもしあればSNATポート枯渇が起きている可能性があります。

資料: https://docs.microsoft.com/ja-jp/azure/load-balancer/load-balancer-standard-diagnostics#how-do-i-check-my-outbound-connection-statistics

次に見るメトリックとして Allocated SNAT PortsUsed SNAT Ports があります。
Allocated SNAT Ports はバックエンドインスタンスに割り当たっているSNATポートの数で、 Used SNAT Ports はバックエンドインスタンスが実際に使用しているSNATポートの数を示しています。
Used SNAT Ports の数が Allocated SNAT Ports の数に対して少なければ大丈夫ですが、これが同等の値になってくるとポートの枯渇が発生する可能性があります。

資料: https://docs.microsoft.com/ja-jp/azure/load-balancer/load-balancer-standard-diagnostics#how-do-i-check-my-snat-port-usage-and-allocation

Azure Firewall

Azure Firewall では Firewall health stateSNAT port utilization の2つのメトリックを確認します。
Firewall health state は正常性が100%であれば正常を示しています。正常性が99%以下の場合はSNATポートの枯渇が起きている可能性を示しています。
SNAT port utilization はファイアウォールによって使用されているSNATポートの割合です。Azure FirewallにパブリックIPを割り当てるほど使用可能なSNATポートの数も増える形となります。

資料: https://docs.microsoft.com/ja-jp/azure/firewall/logs-and-metrics#metrics

NAT Gateway

NAT Gateway は Dropped packetsTotal SNAT connection countSNAT Connection Count の3つのメトリックを確認します。
NAT Gateway は最大16個までパブリックIPを割り当てることが可能で、パブリックIP1つにつき64,512 個のSNATポートが提供され、最大 1,032,192 個のSNATポートをNAT Gateway は持つことが可能となります。したがって、Total SNAT connection count の値と割り当たっているパブリックIPの数から、後どのくらいのSNATポートが使用可能か確認できます。


Dropped packetsSNAT Connection Count とお互いのメトリックを比較し、パケットがドロップした期間と失敗したSNAT接続の期間が一致するかどうかを確認します。一致した場合はポート枯渇が起きている可能性があるらしいです。

資料: https://docs.microsoft.com/ja-jp/azure/virtual-network/nat-gateway/nat-metrics

最後に

まだまだ分からない点が多いので善処します。