Nutanix CE 5.18 から、SNMP Trap を受信してみます。
ポーリングでの SNMP 情報取得については前回の投稿もどうぞ。
今回の環境
- Nutanix CE 5.18
- 受信は Oracle Linux 7.9(前回の投稿と同様)
[root@lab-vm-02 ~]# cat /etc/system-release Oracle Linux Server release 7.9
構成のイメージです。
Prism での SNMP トラップ設定
Prism の「設定」→「SNMP」→「ユーザー」で、ユーザを作成しておきます。
前回の投稿と同様、「snmpuser」というユーザを作成しておきます。
「トラップ」タブで、「新しいトラップレシーバ」を作成します。
下記のように入力しつつ下にスクロールします。
- SNMP バージョン: v3
- トラップ ユーザ名: snmpuser
- アドレス: SNMP トラップを受信するサーバのアドレス(今回は Linux)
- ポート:162
- エンジン ID: 16進数の文字列(0x~ の12文字以上)
- 通知する: False
- トランスポート プロトコル: UDP
ひととおり入力したら、「保存」をクリックします。
Linux での SNMP Trap 受信設定
一般的には SNMP Manager となる監視サーバで受信すると思いますが、今回は動作確認のため Linux サーバの snmptrapd で受信してみます。
net-snmp のインストール
snmptrapd を使用するため、net-snmp をインストールしておきます。
[root@lab-vm-02 ~]# yum install -y net-snmp [root@lab-vm-02 ~]# rpm -qf `which snmptrapd` net-snmp-5.7.2-49.el7_9.1.x86_64
snmptrapd が起動できることを確認しておきます。
[root@lab-vm-02 ~]# systemctl start snmptrapd [root@lab-vm-02 ~]# systemctl enable snmptrapd [root@lab-vm-02 ~]# systemctl status snmptrapd
snmptrapd の設定
Syslog の Local5 にトラップを出力します。vi などのエディタ、もしくは下記のようにファイルを作成します。
[root@lab-vm-02 ~]# mkdir /etc/systemd/system/snmptrapd.service.d [root@lab-vm-02 ~]# echo '[Service]' > /etc/systemd/system/snmptrapd.service.d/logging.conf [root@lab-vm-02 ~]# echo 'Environment=OPTIONS="-Ls5d"' >> /etc/systemd/system/snmptrapd.service.d/logging.conf
ファイルが作成されました。
[root@lab-vm-02 ~]# cat /etc/systemd/system/snmptrapd.service.d/logging.conf [Service] Environment=OPTIONS="-Ls5d"
snmptrapd.conf を編集して、Prism で作成した snmpuser ユーザの情報を追記します。ちなみに、nutanix/4u は snmpuser 作成時に設定したパスワードです。
[root@lab-vm-02 ~]# echo 'createUser -e 0x123456789a snmpuser SHA nutanix/4u AES nutanix/4u' >> /etc/snmp/snmptrapd.conf [root@lab-vm-02 ~]# echo 'authUser log snmpuser' >> /etc/snmp/snmptrapd.conf
snmptrapd.conf ファイルの末尾に、2行追記されました。
[root@lab-vm-02 ~]# cat /etc/snmp/snmptrapd.conf # Example configuration file for snmptrapd # # No traps are handled by default, you must edit this file! # # authCommunity log,execute,net public # traphandle SNMPv2-MIB::coldStart /usr/bin/bin/my_great_script cold createUser -e 0x123456789a snmpuser SHA nutanix/4u AES nutanix/4u authUser log snmpuser
Syslog(rsyslog)設定
rsyslog の設定ファイル「/etc/rsyslog.d/nutanix-trap-test.conf」を作成します。
今回受信するトラップは、/var/log/nutanix-trap-test.log ファイルに出力します。
[root@lab-vm-02 ~]# echo 'local5.* /var/log/nutanix-trap-test.log' > /etc/rsyslog.d/nutanix-trap-test.conf
サービスの再起動
snmptrapd を再起動しておきます。
[root@lab-vm-02 ~]# systemctl daemon-reload [root@lab-vm-02 ~]# systemctl restart snmptrapd
rsyslog も再起動しておきます。
[root@lab-vm-02 ~]# systemctl resatart rsyslog
ファイアウォール(iptables)解放
firewall-cmd で、162/UDP ポートを解放しておきます。
[root@lab-vm-02 ~]# firewall-cmd --add-port=162/udp success [root@lab-vm-02 ~]# firewall-cmd --add-port=162/udp --permanent success
MIB ファイルの配置
受信したトラップを見やすくするため、MIB ファイルを配置します。
MIB ファイルは、前回の投稿と同様に Prism からダウンロードしておきます。
Nutanix CE から SNMP で情報取得してみる。 - NTNX>日記
MIB ファイルを /usr/share/snmp/mibs-private ディレクトリに配置して、SNMP 関連ツールから読み込めるようにします。
ディレクトリを作成して、MIB ファイルを配置します。
[root@lab-vm-02 ~]# mkdir /usr/share/snmp/mibs-private [root@lab-vm-02 ~]# cp ./NUTANIX-MIB /usr/share/snmp/mibs-private/
/etc/snmp/snmp.conf ファイルを新規作成します。
[root@lab-vm-02 ~]# echo 'MIBDIRS /usr/share/snmp/mibs:/usr/share/snmp/mibs-private' >> /etc/snmp/snmp.conf [root@lab-vm-02 ~]# echo 'MIBS all' >> /etc/snmp/snmp.conf
ファイルが作成されました。
[root@lab-vm-02 ~]# cat /etc/snmp/snmp.conf MIBDIRS /usr/share/snmp/mibs:/usr/share/snmp/mibs-private MIBS all
snmptrapd を再起動しておきます。
[root@lab-vm-02 ~]# systemctl daemon-reload [root@lab-vm-02 ~]# systemctl restart snmptrapd
テスト トラップの送信
Prism から、テスト トラップを送信します。「設定」→「SNMP」→「トラップ」を開いて、「すべてのテスト」をクリックするとテスト トラップが送信されます。
ログ ファイルを確認すると、「Test Alert is generated on Controller VM ~」といったメッセージのテスト トラップの受信が確認できます。
[root@lab-vm-02 ~]# tail -f /var/log/nutanix-trap-test.log ・・・ Dec 20 22:28:04 lab-vm-02 snmptrapd[16067]: 2020-12-20 22:28:04 lab-nxce-01-cvm.go-lab.jp [UDP: [192.168.20.52]:35628->[10.0.1.165]:162]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (158036252) 18 days, 6:59:22.52#011SNMPv2-MIB::snmpTrapOID.0 = OID: NUTANIX-MIB::ntxTrapTestAlertTitle#011NUTANIX-MIB::ntxAlertCreationTime = Counter64: 1608470882#011NUTANIX-MIB::ntxAlertUuid = STRING: 48e0b99f-22eb-4b0d-8ca5-6db11f2742ed#011NUTANIX-MIB::ntxAlertDisplayMsg = STRING: AlertUuid:48e0b99f-22eb-4b0d-8ca5-6db11f2742ed: Test Alert is generated on Controller VM 192.168.20.52.#011NUTANIX-MIB::ntxAlertTitle = STRING: Test Alert Title#011NUTANIX-MIB::ntxAlertSeverity = INTEGER: informational(1)#011NUTANIX-MIB::ntxAlertClusterName = STRING:
受信したメッセージの例です。
Nutanix CE の Prism は 192.168.20.52 で、Linxu クライアントが 10.0.1.165 です。
[UDP: [192.168.20.52]:35628->[10.0.1.165]:162]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (158036252) 18 days, 6:59:22.52#011SNMPv2-MIB::snmpTrapOID.0 = OID: NUTANIX-MIB::ntxTrapTestAlertTitle#011NUTANIX-MIB::ntxAlertCreationTime = Counter64: 1608470882#011NUTANIX-MIB::ntxAlertUuid = STRING: 48e0b99f-22eb-4b0d-8ca5-6db11f2742ed#011NUTANIX-MIB::ntxAlertDisplayMsg = STRING: AlertUuid:48e0b99f-22eb-4b0d-8ca5-6db11f2742ed: Test Alert is generated on Controller VM 192.168.20.52.#011NUTANIX-MIB::ntxAlertTitle = STRING: Test Alert Title#011NUTANIX-MIB::ntxAlertSeverity = INTEGER: informational(1)#011NUTANIX-MIB::ntxAlertClusterName = STRING:
ちなみに MIB ファイルがない場合は、enterprises.41263 以下の階層の OID がそのまま表示されます。
[UDP: [192.168.20.52]:49002->[10.0.1.165]:162]:#012DISMAN-EVENT-MIB::sysUpTimeInstance = Timeticks: (158170084) 18 days, 7:21:40.84#011SNMPv2-MIB::snmpTrapOID.0 = OID: SNMPv2-SMI::enterprises.41263.1006#011SNMPv2-SMI::enterprises.41263.999.1 = Counter64: 1608472221#011SNMPv2-SMI::enterprises.41263.999.5 = STRING: "926cc870-5003-4e3f-835f-9f59b817df69"#011SNMPv2-SMI::enterprises.41263.999.2 = STRING: "AlertUuid:926cc870-5003-4e3f-835f-9f59b817df69: Test Alert is generated on Controller VM 192.168.20.52."#011SNMPv2-SMI::enterprises.41263.999.3 = STRING: "Test Alert Title"#011SNMPv2-SMI::enterprises.41263.999.4 = INTEGER: 1#011SNMPv2-SMI::enterprises.41263.999.7 = ""
以上。