2018年9月14日金曜日

ESXi Shellを使って、コマンドでESXiのSNMP Trapの設定を行う方法

ESXiは通常vCenter Serverのアラーム機能にて監視されるので、ESXi自身で監視設定をすることはあまり需要がないと思うが、無償版のESXiのようにvCenter Serverにて監視することができない環境の場合は、ESXiからSNMP Trapを飛ばす設定をすると監視することができる。

この手順については以前以下記事でも記載している。

★以前の記事はこちら↓

ZabbixでESXiのSNMP Trapを監視する設定
https://tech-mmmm.blogspot.com/2016/05/zabbixesxisnmp-trap.html

前回は直接設定ファイルを書き換える方法で対応したが、ESXiのSNMP設定は、実はすべてコマンドで設定することが可能となっているようだ。そこで、今回はすべてESXi Shellのコマンドで設定する方法を紹介する。なお、環境はESXi 6.7となる。

SNMP Trap設定手順

設定はすべて「esxcli system snmp」コマンドで実施できる。

1. 設定前の状態確認

まず、設定前の状態を確認しておく。「Enable: false」となっており、SNMP Trapの設定がされていないことがわかる。

# esxcli system snmp get
------------------------------
   Authentication:
   Communities:
   Enable: false
   Engineid:
   Hwsrc: indications
   Largestorage: true
   Loglevel: info
   Notraps:
   Port: 161
   Privacy:
   Remoteusers:
   Syscontact:
   Syslocation:
   Targets:
   Users:
   V3targets:
------------------------------

2. 設定

SNMP Trap送信の設定を行う。

# esxcli system snmp set -e=true -c=public -t=192.168.33.24@162/public

各オプションの意味は以下の通りとなる。
  • -e=true : SNMPを有効にする。
  • -c=public : コミュニティ名をpublicに設定する
  • -t=192.168.33.24@162/public : SNMP Trapの設定を行う。<送信先のIP>@<ポート番号>/<コミュニティ名>というフォーマットで指定する
設定後、再度設定確認を行う。

# esxcli system snmp get
------------------------------
   Authentication:
   Communities: public                ←★コミュニティ名が指定されている
   Enable: true                       ←★trueになっている
   Engineid: 00000063000000a100000000
   Hwsrc: indications
   Largestorage: true
   Loglevel: info
   Notraps:
   Port: 161
   Privacy:
   Remoteusers:
   Syscontact:
   Syslocation:
   Targets: 192.168.33.24@162 public  ←★SNMP Trap送信先が指定されている
   Users:
   V3targets:
------------------------------

3. SNMP Trapテスト

設定完了後、SNMP Trap送信テストを行う。

# esxcli system snmp test
------------------------------
   Comments: There is 1 target configured, send warmStart requested, test completed normally.
------------------------------

SNMP Trap受信側でTrapの内容を確認しておこう。今回はZabbixあてにTrap送信を行い、以下内容で受信できていることを確認した。

------------------------------
SNMP Trap log (VMware:snmptrap[]): 21:57:19 2018/09/08 .1.3.6.1.6.3.1.1.5.2 Normal "Status Events" t3011esxi - warmStart A warmStart trap signifies that the SNMP entity, 
------------------------------

4. 送信しないSNMP TrapのOIDを登録

上記でSNMP Trapが飛ぶようになったのだが、仮想マシンパワーオン時や、ESXiから仮想マシンへのハートビートに関するSNMP Trapが定期的に飛んでおり、Zabbixで都度検知してしまって困ってしまった。そこで、不要なSNMP Trapは送信しないよう、ESXi側で設定を行う。

今回は以下2つのOIDを検知不要として登録する。
  • vmwVmPoweredOn : 1.3.6.1.4.1.6876.4.1.0.1
  • vmwVmHBLost : 1.3.6.1.4.1.6876.4.1.0.3
  • vmwVmHBDetected : 1.3.6.1.4.1.6876.4.1.0.4
登録コマンドは以下の通り。複数のOIDがある場合は、カンマ区切りで指定する。空白が入るとうまくコマンドが通らないので、カンマの前後に空白は入れないように注意すること。また、OIDを追加で登録することはできなさそうなので、都度、すべてのOIDを指定して登録する必要があるので注意。

# esxcli system snmp set -n=1.3.6.1.4.1.6876.4.1.0.1,1.3.6.1.4.1.6876.4.1.0.3,1.3.6.1.4.1.6876.4.1.0.4

設定を確認する。Notrapsの箇所に正しく登録されていればOK。

# esxcli system snmp get
------------------------------
   Authentication:
   Communities: public
   Enable: true
   Engineid: 00000063000000a100000000
   Hwsrc: indications
   Largestorage: true
   Loglevel: info
   Notraps: 1.3.6.1.4.1.6876.4.1.0.1, 1.3.6.1.4.1.6876.4.1.0.3,1.3.6.1.4.1.6876.4.1.0.4
   ↑★登録された
   Port: 161
   Privacy:
   Remoteusers:
   Syscontact:
   Syslocation:
   Targets: 192.168.33.24@162 public
   Users:
   V3targets:
------------------------------

なお、一度SNMPサービスを有効にした状態で追加設定をした場合は、SNMPサービスの再起動をしなければ設定反映がされないため、以下のようにSNMPサービスを落とし上げを実施する。

# esxcli system snmp set -e=false && esxcli system snmp set -e=true

ちなみに、SNMPサービスの再起動はkill -HUPでも実施できる。プロセスIDが変わるようなので、設定ファイル読み込みというよりは再起動されるようだ。

# kill -HUP `ps -v | grep snmpd | cut -d" " -f1`

0 件のコメント:

コメントを投稿

人気の投稿