ネットワークエンジニアのITブログ

長らくネットワークで生活してきましたが、ここ数年クラウドとサーバー系に触れる機会が増えて、日々成長しています。最近のお気に入りはNSXALBとGoogle Cloud。

NSXALBでSNMP Trap通知を行う

NSXALBでController、SE、VSで状態変化が発生した際にSNMP Trap通知を行う設定を行っていきます。
デフォルトのAlert設定だとDownに関するAlertしか発生しなかったり、ControllerのDownに関してはTrap通知されないようになっているので、この辺のおすすめ設定を紹介します。

ネットワーク構成

SNMP Trap Receiverとして、DNS/NTPサーバのdns32(192.168.10.32)を利用しています。

設定の流れ

SNMPの設定は以下の手順で設定します。

  1. System SettingsでSNMPを有効化する
  2. SNMP Trap通知先を設定する
  3. Alert Actionで通知先を関連付ける
  4. Alert ConfigでTrap通知するEventを定義し、Alert Actionを関連付ける

vmwareの以下サイト参考に設定しています。
docs.vmware.com

System SettingsでSNMPを有効化する

NSXALBの管理コンソールにログイン後、[Administration]ー[System Settings]からEDITを選択します。

SNMPの設定を、「None」から「SNMP V2」に変更し、SNMP Communityに「VMwarevmware1!」を入力後、SAVEを選択します。


SNMP Trap通知先を設定する

[Operations]ー[Notifications]ー[SNMP Trap]からCREATEを選択します。

Nameに「Trap Receiver」を入力し、SNMP Trap ServersからADDを選択します。

Trap Server IP Addressに「192.168.10.32」を入力します。
SNMP VersionとSNMP Communityは、System Settingsで設定したものが自動的に反映されます。

SNMP Trap Serversの情報が反映されたら、SAVEを選択します。

SNMP Trapの画面に戻ると設定が反映されていますが、Serverの欄が空欄になっているのはバグであるため、このまま設定を進めます。

Alert Actionで通知先を関連付ける

[Operations]ー[Alerts]ー[Alert Actions]からCREATEを選択します。

Nameに「SNMP Trap」を入力し、Alert Levelを「Low」から「Medium」に変更し、SNMP Trapは「Trap Receiver」を選び、SAVEを選択します。


Alert ConfigでTrap通知するEventを定義し、Alert Actionを関連付ける

[Operations]ー[Alerts]ー[Alert Config]からCREATEを選択します。

Nameに「SNMP Trap-Alert」を入力します。
Throttle Alertは、アラートが生成されてから設定された秒数経過するまで、アラートが抑止 (調整) される設定ですが、即時アラート通知をさせたいので「0」とします。

Event Occursは、ここで設定したEventが発生した際にActionが実行されるものとなります。
デフォルトの設定だと、Controller、SE、VSなどが別々のAlert Configで定義されており、かつDownの事象しか定義されていないため、ここでは、Upの事象でもTrap通知されるようにEventを選択していきます。

Event OccursでVS Upを選択したら、「AND」から「OR」に変更し、「+Add New Event」を選択して、以下のEventを追加していきます。

  • VS Down
  • Pool Up
  • Pool Down
  • VIP Up
  • VIP Down
  • SE Up
  • SE Down
  • Controller Leader Failover
  • Controller Node Joined
  • Controller Node Left

最後に、Alert Actionから「SNMP Trap」を選び、SAVEを選択します。

SNMP TrapはControllerから通知されるため、1台構成だとController自体の停止だとTrap通知できません。そのため、Controller Clusterが設定されていることが前提となりますが、Shutdown、Started、Warm Rebootだと、通常の起動、停止のアクションでは通知がされないため、Controllerが起動・停止した際に Controller ClusterのJoined、Leftをトリガーとして検知します。
また、Controller Leaderが障害となった場合は、Failoverが発生し残り2台のどちらかに切り替わるため、Leaderが変更となった場合も通知するようにします。

SNMP Trap通知の動作確認

SNMP Trapに関する設定が完了したので、実際に設定したEventを発生させTrapが通知されるか確認します。

VS Down、Pool Down、VIP Down

PoolをDownさせることで、VS、Pool、VIPのDown Trapを確認します。
Trapの受信は、dns32でtcpdumpを実行します。

[root@dns32 ~]# tcpdump -i ens192 -nn -tttt | grep Trap
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens192, link-type EN10MB (Ethernet), capture size 262144 bytes

2023-12-02 17:13:07.947721 IP 192.168.10.51.38612 > 192.168.10.32.162:  C="VMwarevmware1!" V2Trap(221)  .1.3.6.1.2.1.1.3.0=1224402 .1.3.6.1.6.3.1.1.4.1.0=.1.3.6.1.4.1.45468.0.5 .1.3.6.1.4.1.45468.1.1.7="[ALB: reason: SNMP Trap-Alert] At 2023-12-02 08:11:32+00:00 event VIP_DOWN occurred on object ALB in tenant admin as VIP 192.168.3.200 is DOWN. "

2023-12-02 17:13:07.976950 IP 192.168.10.51.54207 > 192.168.10.32.162:  C="VMwarevmware1!" V2Trap(326)  .1.3.6.1.2.1.1.3.0=1224405 .1.3.6.1.6.3.1.1.4.1.0=.1.3.6.1.4.1.45468.0.3 .1.3.6.1.4.1.45468.1.1.8="/api/virtualservice/virtualservice-f8f2bf3f-fee1-4d01-97cf-0abe57c69a54" .1.3.6.1.4.1.45468.2.3.1.6.4=2 .1.3.6.1.4.1.45468.1.1.4="[ALB: reason: SNMP Trap-Alert] At 2023-12-02 08:11:32+00:00 event VS_DOWN occurred on object ALB in tenant admin as VirtualService is Down. "

2023-12-02 17:13:08.006960 IP 192.168.10.51.51168 > 192.168.10.32.162:  C="VMwarevmware1!" V2Trap(229)  .1.3.6.1.2.1.1.3.0=1224408 .1.3.6.1.6.3.1.1.4.1.0=.1.3.6.1.4.1.45468.0.5 .1.3.6.1.4.1.45468.1.1.7="[192.168.10.51: reason: SNMP Trap-Alert] At 2023-12-02 08:11:33+00:00 event POOL_DOWN occurred on object Pool-HTTP in tenant admin as Pool is DOWN. "
VS Up、Pool Up、VIP Up

PoolをUpさせることで、VS、Pool、VIPのUpTrapを確認します。

[root@dns32 ~]# tcpdump -i ens192 -nn -tttt | grep Trap
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens192, link-type EN10MB (Ethernet), capture size 262144 bytes

2023-12-02 17:15:06.647249 IP 192.168.10.51.56182 > 192.168.10.32.162:  C="VMwarevmware1!" V2Trap(225)  .1.3.6.1.2.1.1.3.0=1236272 .1.3.6.1.6.3.1.1.4.1.0=.1.3.6.1.4.1.45468.0.5 .1.3.6.1.4.1.45468.1.1.7="[192.168.10.51: reason: SNMP Trap-Alert] At 2023-12-02 08:13:30+00:00 event POOL_UP occurred on object Pool-HTTP in tenant admin as Pool is UP. "

2023-12-02 17:15:06.675684 IP 192.168.10.51.46900 > 192.168.10.32.162:  C="VMwarevmware1!" V2Trap(217)  .1.3.6.1.2.1.1.3.0=1236275 .1.3.6.1.6.3.1.1.4.1.0=.1.3.6.1.4.1.45468.0.5 .1.3.6.1.4.1.45468.1.1.7="[ALB: reason: SNMP Trap-Alert] At 2023-12-02 08:13:30+00:00 event VIP_UP occurred on object ALB in tenant admin as VIP 192.168.3.200 is UP. "

2023-12-02 17:15:06.704245 IP 192.168.10.51.60861 > 192.168.10.32.162:  C="VMwarevmware1!" V2Trap(322)  .1.3.6.1.2.1.1.3.0=1236278 .1.3.6.1.6.3.1.1.4.1.0=.1.3.6.1.4.1.45468.0.3 .1.3.6.1.4.1.45468.1.1.8="/api/virtualservice/virtualservice-f8f2bf3f-fee1-4d01-97cf-0abe57c69a54" .1.3.6.1.4.1.45468.2.3.1.6.4=1 .1.3.6.1.4.1.45468.1.1.4="[ALB: reason: SNMP Trap-Alert] At 2023-12-02 08:13:30+00:00 event VS_UP occurred on object ALB in tenant admin as VirtualService is Up. "
SE Down、SE Up

SEをDown/UPさせて、Trapを確認します。

[root@dns32 ~]# tcpdump -i ens192 -nn -tttt | grep Trap
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on ens192, link-type EN10MB (Ethernet), capture size 262144 bytes

2023-12-02 17:19:37.525922 IP 192.168.10.51.36169 > 192.168.10.32.162:  C="VMwarevmware1!" V2Trap(313)  .1.3.6.1.2.1.1.3.0=1263360 .1.3.6.1.6.3.1.1.4.1.0=.1.3.6.1.4.1.45468.0.2 .1.3.6.1.4.1.45468.1.1.8="/api/serviceengine/se-0050569b135d" .1.3.6.1.4.1.45468.2.2.1.6.2=2 .1.3.6.1.4.1.45468.1.1.5="[192.168.10.53: reason: SNMP Trap-Alert] At 2023-12-02 08:18:00+00:00 event SE_DOWN occurred on object 192.168.10.53 in tenant admin as Service Engine marked down. "

2023-12-02 17:21:41.737520 IP 192.168.10.51.47336 > 192.168.10.32.162:  C="VMwarevmware1!" V2Trap(331)  .1.3.6.1.2.1.1.3.0=1275781 .1.3.6.1.6.3.1.1.4.1.0=.1.3.6.1.4.1.45468.0.2 .1.3.6.1.4.1.45468.1.1.8="/api/serviceengine/se-0050569b135d" .1.3.6.1.4.1.45468.2.2.1.6.2=1 .1.3.6.1.4.1.45468.1.1.5="[192.168.10.53: reason: SNMP Trap-Alert] At 2023-12-02 08:20:06+00:00 event SE_UP occurred on object 192.168.10.53 in tenant admin as Avi Service Engine connected to Avi Controller. "

補足

Controllerが1台構成のため、Failoverのテストは実施しませんが、Leaderを停止させると、新に昇格したLeaderからController Node LeftとController Leader Failoverのtrapが通知されます。

Controllerは固定IPで設定することがほとんどであるため、死活監視でも生き死には確認できますが、SEは構成によって、動的にスケールアウト/スケールインするため、死活監視が難しくなります。
そもそも、SEは特性上、死活監視の必要はないと思うので、SNMP Trapで状態を把握するぐらいで丁度良いのかなと考えます。

今回の検証は以上です。