vCenterアラームをSNMPv3 Trapで通知する

ITインフラにおけるスタンダードな通知の仕組みとしてSNMP Trapが使われています。

SNMP Trap には複数のバージョンがあり、多くのユーザーはSNMPv2cを利用されている印象ですが、セキュリティ要件によっては認証や暗号化機能が加わったSNMPv3を利用されているユーザもいます。

本記事では、VMware vCenter(以下、vCenterと表記)のアラームをSNMPv3 Trapで通知する設定方法をご紹介します。

SNMPv3とは

SNMPv3ではSNMPv2cと比較して以下のセキュリティ機能が強化されています。

  • 認証
    • Trapが正当な送信者から送信されていることを確認して、メッセージが改ざんされていないことを確認します。
  • 暗号化
    • メッセージを暗号化して送信します。万が一、盗聴されても内容を確認することはできません。

Trap送信サーバと受信サーバの間で以下の項目が一致している必要があります。 今回の検証環境で使用する設定値は以下の通りです。

項目 検証環境の設定値 備考
ユーザ名 user01
セキュリティレベル priv セキュリティレベルを指定。priv(認証と暗号化)、auth(認証のみ)、none(なし)より選択
認証パスワード pasword01 認証有効時のみ設定
認証プロトコル SHA1 認証有効時のみ設定。SHA1/MD5/noneより選択
暗号化パスワード password01 暗号化有効時のみ設定
暗号化プロトコル AES128 認証有効時のみ設定。AES128/noneより選択
EngineID vCenterでSNMP有効時に生成されるIDを利用 Trap送信者を識別する識別子

検証環境

以下の環境で動作を確認しました。

  • SNMP Trap受信サーバ:ubuntu 24.04、net-snmp 5.9.4.pre2
    • IPアドレス:10.yy.yy.yyy
  • vCenter(Trap送信サーバ):8.0 Update 2c
    • IPアドレス:10.xx.xx.xxx

vCenterアラームのSNMPv3 Trap設定

vCenterアラームのTrap設定をSNMPv2cで行う場合は、vSphere Clientの[インベントリ]でvCenterを選択 - [構成]タブ-[全般]-[編集]-[SNMPレシーバ]から実施します。

しかし、この設定画面ではSNMPv3 Trapの認証や暗号化に関する設定項目がありませんので、SNMPv3 Trap設定はできません。

vCenterアラームをSNMPv3 Trapで送信するには、以下2つのエージェントを連携して送信する必要があります。

  • vCenterアラームのTrapを送信するvpxdエージェント(上記[SNMPレシーバ]画面で設定)
  • アプライアンスのTrapを外部へ送信するsnmpエージェント(CLIで設定)

vCenterアラームをSNMPv3 Trapで外部へ送信するには、まずvpxdエージェントからsnmpエージェントにTrapを送信、次にsnmpエージェントから外部へ送信します。

snmpエージェントから外部へTrap送信する設定はCLIで行います。

vpxdエージェントからのTrapをsnmpエージェントで受信するには、橋渡しとなるvmwsppサービスのrpmファイルをインストールする必要があります。

それぞれのエージェントの設定と、vmwsppサービスのインストール方法は以下の通りです。

vpxdエージェントのSNMP Trap設定

上記の[SNMPレシーバ]設定画面が初期状態であり必要な設定になります。変更されていないかどうかを確認します。

  • プライマリ受信者URL:localhost
  • 受信者のポート:162
  • コミュニティストリング:public

snmpエージェントのSNMP Trap設定

設定はCLIで行います。

SSHでvCenterにrootユーザでログインします。

以下のコマンドを実行して現在のSNMP設定を確認します。

Command> snmp.get
Config:
   Authentication: none
   Communities: ''
   Enable: False
   Processlist: False
   Engineid: ''
   Loglevel: warning
   Notraps: ''
   Port: 161
   Privacy: none
   Syscontact: ''
   Syslocation: ''
   Targets:
   Users:
   Remoteusers:
   V3targets:
   Pid: n/a

認証プロトコルと暗号化プロトコルを設定します。

以下のコマンドで認証プロトコルを設定します。

snmp.set --authentication SHA1

以下のコマンドで暗号化プロトコルを設定します。

snmp.set --privacy AES128

認証ハッシュ値と暗号化ハッシュ値を発行します。今回はpassword01というパスワードを指定して発行します。

Command> snmp.hash --auth_hash password01 --priv_hash password01 --raw_secret true
Hash:
   Auth_key: a3830be011a5a2aa6590d2f362349f3dbd82b823
   Priv_key: a3830be011a5a2aa6590d2f362349f3d

SNMPv3ユーザを作成します。 ユーザ名/認証ハッシュ値/暗号化ハッシュ値/セキュリティレベルの順に指定します。

snmp.set --users user01/a3830be011a5a2aa6590d2f362349f3dbd82b823/a3830be011a5a2aa6590d2f362349f3d/priv

SNMPv3 Trap の宛先を指定します。

snmp.set --v3targets 10.yy.yy.yyy/user01/priv/trap

SNMPエージェントを有効にします。

snmp.enable

SNMPv3ステータスを確認します。

Command> snmp.get
Config:
   Authentication: SHA1
   Communities: ''
   Enable: True
   Processlist: False
   Engineid: 80001f88803c394a0cfebab36800000000
   Loglevel: warning
   Notraps: ''
   Port: 161
   Privacy: AES128
   Syscontact: ''
   Syslocation: ''
   Targets:
   Users:
     1:
         Username: user01
         Sec_level: priv
         Auth_key: a3830be011a5a2aa6590d2f362349f3dbd82b823
         Priv_key: a3830be011a5a2aa6590d2f362349f3d
   Remoteusers:
   V3targets:
     1:
         Type: trap
         Sec_level: priv
         Ip: 10.yy.yy.yyy
         Port: 162
         User: user01
   Pid: 83099

Engineidの値については、後ほどご紹介するnet-snmp設定にて使用します。

vmwsppサービスRPMのインストール

vpxdエージェントからsnmpエージェントへSNMPv3 Trapを橋渡しするために、vmwsppサービスのRPMをインストールします。

vmwspp rpmファイルのアップロード

rpmファイルをvCenterにアップロードします。

rpmファイルはvCenter8.0 U2以降とそれ以前で利用するファイルが異なります。vCenter 8.0 U2以降では以下のKBにあるRPMファイルをダウンロードして、vCenterにアップロードします。

knowledge.broadcom.com

なお、SCPで転送する場合によく利用されるアプリケーションの1つにWinSCPがありますが、WinSCPで接続を試みると以下のエラーが表示されることがあります。この場合は、KBを参考に対処が必要です。

WinSCP を使用してvCenter Server Appliance に接続すると、次のエラーで接続に失敗する:Received too large (1433299822 B) SFTP packet. Max supported packet size is 1024000 B

転送後、デフォルトシェルをbashに変更します。

Command> shell
Shell access is granted to root
root@ [ ~ ]#
root@ [ ~ ]# chsh -s /bin/bash root
root@ [ ~ ]#

アップロードしたrpmパッケージの情報を確認します。

root@ [ ~ ]# rpm -qi vmware-spp-1.1.0-Linux.rpm
Name        : vmware-spp
Version     : 1.1.0
Release     : 1
Architecture: x86_64
Install Date: (not installed)
Group       : Applications/Management
Size        : 645442
License     : unknown
Signature   : (none)
Source RPM  : vmware-spp-1.1.0-1.src.rpm
Build Date  : Tue 04 Jun 2024 07:07:47 AM UTC
Build Host  : sc-dbc2151.eng.vmware.com
Vendor      : VMware, Inc
URL         : http://www.vmware.com
Summary     : Provides a pipe for VC (vpxd) SNMP v1 traps be delivered to external event receivers by the VCSA SNMP Agent
Description :
Provides a pipe for VC (vpxd) SNMP v1 traps be delivered to external event receivers by the VCSA SNMP Agent
vmwspp rpmファイルのインストール

rpmをインストールします。

root@ [ ~ ]#
root@ [ ~ ]# rpm -Uvh  vmware-spp-1.1.0-Linux.rpm
Preparing...                          ################################# [100%]
Updating / installing...
   1:vmware-spp-1.1.0-1               ################################# [100%]

vmwsppサービスのステータスを確認します。

root@ [ ~ ]# systemctl status vmwspp
● vmwspp.service - Daemon to pipe Virtual Center SNMPv1 traps to VCSA SNMP agent
     Loaded: loaded (/etc/systemd/system/vmwspp.service; disabled; vendor preset: enabled)
     Active: inactive (dead)

vmwsppサービスを起動します。

root@ [ ~ ]# systemctl start vmwspp

再度、サービスのステータスを確認してactive(running)になっていることを確認します。

root@ [ ~ ]# systemctl status vmwspp
● vmwspp.service - Daemon to pipe Virtual Center SNMPv1 traps to VCSA SNMP agent
     Loaded: loaded (/etc/systemd/system/vmwspp.service; disabled; vendor preset: enabled)
     Active: active (running) since Sun 2025-08-31 03:50:34 UTC; 10s ago
   Main PID: 109724 (vmwspp)
      Tasks: 1 (limit: 25160)
     Memory: 552.0K
     CGroup: /system.slice/vmwspp.service
             mq109724 /bin/vmwspp

netstatコマンドでvmwsppサービスが127.0.0.1:162で待ち受けていることを確認します。

root@ [ ~ ]# netstat -nap | grep vmwspp
udp        0      0 127.0.0.1:162           0.0.0.0:*                           109724/vmwspp
unix  3      [ ]         STREAM     CONNECTED     549983   109724/vmwspp
unix  2      [ ]         DGRAM                    549985   109724/vmwspp

vCenterアラーム設定

テストアラームを作成します。

今回は、仮想マシンがパワーオフしたときにアラームを発行してTrap送信する設定を行います。

net-snmpのSNMPv3設定

Trap受信サーバとして、Ubuntu上にnet-snmpをインストールします

ubuntu@ubuntu01:~$ sudo apt install snmp snmpd snmptrapd
Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
The following additional packages will be installed:
  libmysqlclient21 libnetsnmptrapd40t64 libsnmp-base libsnmp40t64 mysql-common
Suggested packages:
  snmp-mibs-downloader
The following NEW packages will be installed:
  libmysqlclient21 libnetsnmptrapd40t64 libsnmp-base libsnmp40t64 mysql-common snmp snmpd snmptrapd
0 upgraded, 8 newly installed, 0 to remove and 0 not upgraded.
Need to get 2,822 kB of archives.
After this operation, 12.4 MB of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://archive.ubuntu.com/ubuntu noble/main amd64 libsnmp-base all 5.9.4+dfsg-1.1ubuntu3 [206 kB]
Get:2 http://archive.ubuntu.com/ubuntu noble/main amd64 libsnmp40t64 amd64 5.9.4+dfsg-1.1ubuntu3 [1,066 kB]
Get:3 http://archive.ubuntu.com/ubuntu noble/main amd64 snmpd amd64 5.9.4+dfsg-1.1ubuntu3 [59.6 kB]
Get:4 http://archive.ubuntu.com/ubuntu noble/main amd64 mysql-common all 5.8+1.1.0build1 [6,746 B]
Get:5 http://archive.ubuntu.com/ubuntu noble/main amd64 libmysqlclient21 amd64 8.0.36-2ubuntu3 [1,253 kB]
Get:6 http://archive.ubuntu.com/ubuntu noble/universe amd64 libnetsnmptrapd40t64 amd64 5.9.4+dfsg-1.1ubuntu3 [25.0 kB]
Get:7 http://archive.ubuntu.com/ubuntu noble/main amd64 snmp amd64 5.9.4+dfsg-1.1ubuntu3 [180 kB]
Get:8 http://archive.ubuntu.com/ubuntu noble/universe amd64 snmptrapd amd64 5.9.4+dfsg-1.1ubuntu3 [25.5 kB]
(以下略)

vCenterのSNMPv3ユーザを登録します。

以下のファイルを編集してvCenterのSNMPv3ユーザからのTrapを受信できるようにします。また、/var/log/syslog にTrapのログを記録するようにします。

sudo vi /etc/snmp/snmptrapd.conf

createUser -e 0x80001f88803c394a0cfebab36800000000 user01 SHA "password01" AES "password01"
authUser log,execute,net user01 priv
[snmp] logOption sd

snmptrapdを起動します。

sudo systemctl start snmptrapd

SNMPv3 Trap通知確認

vCenterでテストTrapを送信します。

Command> snmp.test
Results:
   Success: True
   Message: A warmStart notification was sent to 1 target.

/var/log/syslog にてTrapのログが記録されました。

ubuntu@ubuntu01:/var/log$ tail -f /var/log/syslog | grep snmptrapd
2025-08-31T16:48:15.391973+00:00 ubuntu01 snmptrapd[4258]: 2025-08-31 16:48:15 <UNKNOWN> [UDP: [10.xx.xx.xxx]:36795->[10.yy.yy.yyy]:162]:#012iso.3.6.1.2.1.1.3.0 = Timeticks: (4900242) 13:36:42.42#011iso.3.6.1.6.3.1.1.4.1.0 = OID: iso.3.6.1.6.3.1.1.5.2#011iso.3.6.1.6.3.1.1.4.3.0 = OID: iso.3.6.1.4.1.6876.4.6876

次にtest03という仮想マシンをパワーオフします。VM powerd offのvCenterアラームがTrapで記録されました。

ubuntu@ubuntu01:/var/log$ tail -f /var/log/syslog | grep snmptrapd
2025-08-31T16:49:19.096398+00:00 ubuntu01 snmptrapd[4258]: 2025-08-31 16:49:19 <UNKNOWN> [UDP: [10.xx.xx.xxx]:36795->[10.yy.yy.yyy]:162]:#012iso.3.6.1.2.1.1.3.0 = Timeticks: (4906612) 13:37:46.12#011iso.3.6.1.6.3.1.1.4.1.0 = OID: iso.3.6.1.4.1.6876.4.3.0.203#011iso.3.6.1.4.1.6876.4.3.308.0 = INTEGER: 3#011iso.3.6.1.4.1.6876.4.3.304.0 = STRING: "Unset"#011iso.3.6.1.4.1.6876.4.3.305.0 = STRING: "Warning"#011iso.3.6.1.4.1.6876.4.3.306.0 = STRING: "power-off - Event: VM powered off (605541).Summary: test03 on  esx04.lab.local in Datacenter is powered off.Date: 08/31/2025 04:49:14 PM.User name: VSPHERE.LOCAL\\Administrator.VM: test03.Host: esx04.lab.local.Resource pool: Cluster01.Data center: Datacenter."#011iso.3.6.1.4.1.6876.4.3.307.0 = STRING: "test03"

おわりに

企業のセキュリティ意識の高まりにより、要件によってはvCenterにおいてもSNMPv3を利用するケースがあると思います。

その際には本記事が参考になれば幸いです。

執筆担当者プロフィール
菅原 丈晴

菅原 丈晴(日本ビジネスシステムズ株式会社)

ネットワーク機器の設計/構築エンジニア。最近は仮想基盤・クラウドを触っています。

担当記事一覧