JavaScriptを有効にしてください

ESXiホスト単位のDFWルールの数え方

 ·  ☕ 2 分で読めます

愚直なルールのカウント方法

NSXがインストールされたESXiホストでDFWのルールを確認する場合、
ホスト単位で確認するには基本的にCLIを使用した確認方法を取ります。

  1. ESXiにSSHログイン
  2. summarize-dvfilter で仮想マシンに関わるvNICのフィルター名の取得
  3. 2で得られたフィルタ名から、vsipioctl でDFWルールを取得
  4. ルール数をカウントする場合、2~3を繰り返す必要あり

公式ドキュメントに上記の詳細手順がありますので、詳しくはそちらをご確認ください。
上記の手順は割と面倒です。仮想マシンの数やホストの台数に比例して確認作業の工数が増えます。

カウントしておきたいモチベ

基本的には設計段階でルール数はシステム上限値に引っかからないように確認されていますが、
運用をスタートさせると、ルールの増加は付き物です。
なのでシステム上限が超えてないかのチェックはしておきたいですよね。

例えば、NSX4.1.2ではDFWルールはホストあたり12万ルールです。

カウントを楽にするするワンライナー

1
COUNT=0; for n in $(summarize-dvfilter | grep -E '(^\s+name:\s+.*\.([2,4-9]|1[0-5]))$' | awk '{print $2}' ); do RULECOUNT=$(vsipioctl getrules -f $n | grep -i '\srule\s' | wc -l); COUNT=$(($COUNT + $RULECOUNT)); done; echo $COUNT

上記コマンドを対象ホストへssh後に実施すれば、そのホストのトータルのDFWルールがわかります。
デフォルトルール(1~4)を除きたい場合は以下で可能です。

1
COUNT=0; for n in $(summarize-dvfilter | grep -E '(^\s+name:\s+.*\.([2,4-9]|1[0-5]))$' | awk '{print $2}' ); do RULECOUNT=$(vsipioctl getrules -f $n | grep -E '\srule\s+([5-9]|[1-9][0-9]+)\s'| wc -l); COUNT=$(($COUNT + $RULECOUNT)); done; echo $COUNT
  • 実行ログ
[root@esxi002:~] COUNT=0; for n in $(summarize-dvfilter | grep -E '(^\s+name:\s+.*\.([2,4-9]|1[0-5]))$' | awk '{print $2}' ); do RULECOUNT=$(vsipioctl getrules -f $n | grep -i '\sr
ule\s' | wc -l); COUNT=$(($COUNT + $RULECOUNT)); done; echo $COUNT
12
[root@esxi002:~]
共有

ichisuke
著者
ichisuke
Engineer