NFX150、NFX250 NextGen、NFX350デバイスでのSNMPの設定
SNMP はネットワーク デバイスを中央から監視します。NFX シリーズ(NFX150、NFX250 NextGen、NFX350)デバイスは、SNMPv2c と SNMPv3 を使用して MIB データのクエリーをサポートします。分離された SNMP エージェント(SNMP プロセスまたは snmpd と呼ばれる)は、vjunos0 とホスト OS に存在します。vjunos0は、ホストOSのプロキシとして機能します。システムおよびシャーシ関連の MIB データは、vjunos0 で利用できます。
Junos OS リリース 21.4R1 以降、NFX シリーズ デバイスは LM-SENSORS-MIB、ENTITY-SENSORS-MIB、libvirt MIB をサポートしています。lm-SENSORS-MIBおよびエンティティセンサー-MIBデータはvjunos0で利用可能ですが、libvirt MIBデータはホストOSで利用できます。libvirt MIB を使用して仮想マシンを監視できます。このトピックでは、libvirt MIB の SNMP 実装について説明します。
Libvirt MIBデータにアクセスするためにSNMPv2cを設定する方法
SNMPv2cは、コミュニティ文字列を使用します。これは、SNMPクライアントを決定する際のパスワードとして機能し、クライアントがSNMPエージェント内のデータにアクセスする方法を決定します。コミュニティ文字列は、NFXシリーズデバイスで事前に設定されていません。SNMPv2cを使用してMIBデータにアクセスするには、ホストOSのコミュニティ文字列とSNMPプロキシを設定する必要があります。コミュニティ文字列がホストOSに追加されます。
図 1 は、NFX シリーズ デバイスでの SNMPv2c の通信フローを示しています。

ユーザーが、ネットワーク管理サーバーのコミュニティ文字列を使用して、 snmpget
などのsnmpwalk
SNMPコマンドを発行した場合:
- リクエストはvjunos0のSNMPデーモンに送信されます。SNMPDは、SNMPリクエスト内のコミュニティ文字列を読み取り、内部ルーティングインスタンスnfx-hostを使用して、リクエストをホストOSにリダイレクトします。
- ホストOSのSNMPDは、リクエストを処理してvjunos0に応答を送信し、それをネットワーク管理サーバーに送信します。
SNMPv2cを設定するには:
Libvirt MIBデータにアクセスするためにSNMPv3を設定する方法
SNMPv3 は、認証と暗号化をサポートするため、MIB データに安全にアクセスする方法を提供します。SNMPv3では、メッセージセキュリティにUSM(ユーザーベースのセキュリティモデル)を使用し、アクセス制御にはビューベースのアクセス制御モデル(VACM)を使用します。USM は認証と暗号化を指定し、VACM はアクセスコントロール ルールを指定します。 図 2 は、NFX シリーズ デバイス上の SNMPv3 の通信フローを示しています。SNMPv3 の場合、以下を作成する必要があります。
- 認証タイプとプライバシを持つホストOSのvmhost階層下のSNMPv3ユーザー
- ユーザー名とコンテキストを持つSNMPv3プロキシ

ユーザーが、ネットワーク管理サーバーからのユーザー名と認証資格情報を含む(snmpwalk
、 snmpget
)などのSNMPコマンドを発行すると、
- リクエストはvjunos0のSNMPデーモンに送信されます。SNMPDは、SNMPリクエスト内のホストOSのコンテキストを読み取り、内部ルーティングインスタンスnfx-hostを使用して、リクエストをホストOSにリダイレクトします。
- ホストOSのSNMPDは、リクエストを処理してvjunos0に応答を送信し、それをネットワーク管理サーバーに送信します。
SNMPv3を設定するには:
Libvirt MIBデータをクエリーする方法
、 、および snmpwalk コマンドをsnmpgetnextsnmpget使用してMIB情報を読み取ることができます。libvirt MIB の設定には使用snmpsetできないことに注意してください。
libvirt MIB は、以下の情報を提供します。
- アクティブな仮想ゲストの名前(ドメイン名)
- アクティブゲストの現在の状態(ドメインの状態)
- 仮想ゲストが使用する仮想 CPU の数(ドメインに定義されている cpu カウント)
- 仮想ゲストが使用するメモリの現在の量(MiB 内)(現在割り当てられたメモリ)
- ドメインのメモリ制限(仮想ゲストが使用できるメモリの最大量(MiB 内)
- 仮想ゲストが使用する CPU 時間(ナノ秒)(CPU 時間)
- 仮想ゲストのステータス(行ステータス)
以下は、NMS でコマンドを snmpwalk 実行したときのコマンドの出力例です。
- SNMPv2c:
nms_server# snmpwalk -v2c -Obs -c community-name device_A LIBVIRT-MIB::libvirtMIB libvirtGuestName.51.145.57.25.141.222.70.137.181.75.129.190.178.93.132.174 = STRING: "centos1" libvirtGuestName.170.187.204.221.238.255.66.227.0.0.86.74.85.78.79.83 = STRING: "vjunos0" libvirtGuestState.51.145.57.25.141.222.70.137.181.75.129.190.178.93.132.174 = INTEGER: running(1) libvirtGuestState.170.187.204.221.238.255.66.227.0.0.86.74.85.78.79.83 = INTEGER: running(1) libvirtGuestCpuCount.51.145.57.25.141.222.70.137.181.75.129.190.178.93.132.174 = Gauge32: 1 libvirtGuestCpuCount.170.187.204.221.238.255.66.227.0.0.86.74.85.78.79.83 = Gauge32: 1 libvirtGuestMemoryCurrent.51.145.57.25.141.222.70.137.181.75.129.190.178.93.132.174 = Gauge32: 512 libvirtGuestMemoryCurrent.170.187.204.221.238.255.66.227.0.0.86.74.85.78.79.83 = Gauge32: 1954 libvirtGuestMemoryLimit.51.145.57.25.141.222.70.137.181.75.129.190.178.93.132.174 = Gauge32: 512 libvirtGuestMemoryLimit.170.187.204.221.238.255.66.227.0.0.86.74.85.78.79.83 = Gauge32: 1954 libvirtGuestCpuTime.51.145.57.25.141.222.70.137.181.75.129.190.178.93.132.174 = Counter64: 12430000000 libvirtGuestCpuTime.170.187.204.221.238.255.66.227.0.0.86.74.85.78.79.83 = Counter64: 808830000000 libvirtGuestRowStatus.51.145.57.25.141.222.70.137.181.75.129.190.178.93.132.174 = INTEGER: active(1) libvirtGuestRowStatus.170.187.204.221.238.255.66.227.0.0.86.74.85.78.79.83 = INTEGER: active(1) libvirtGuestRowStatus.170.187.204.221.238.255.66.227.0.0.86.74.85.78.79.83 = No more variables left in this MIB View (It is past the end of the MIB tree)
- SNMPv3:
nms-server# snmpwalk -Obs -v3 -a authentication-type -A Authentication_Password -x privacy-type -X Privacy-Password -l authPriv-level -u snmpv3-user-name -n snmpv3-context-name device_B LIBVIRT-MIB::libvirtMIB libvirtGuestName.170.187.204.221.238.255.66.227.0.0.86.74.85.78.79.83 = STRING: "vjunos0" libvirtGuestName.185.178.34.217.212.63.76.189.191.225.54.201.166.88.167.118 = STRING: "vnf0" libvirtGuestState.170.187.204.221.238.255.66.227.0.0.86.74.85.78.79.83 = INTEGER: running(1) libvirtGuestState.185.178.34.217.212.63.76.189.191.225.54.201.166.88.167.118 = INTEGER: running(1) libvirtGuestCpuCount.170.187.204.221.238.255.66.227.0.0.86.74.85.78.79.83 = Gauge32: 1 libvirtGuestCpuCount.185.178.34.217.212.63.76.189.191.225.54.201.166.88.167.118 = Gauge32: 1 libvirtGuestMemoryCurrent.170.187.204.221.238.255.66.227.0.0.86.74.85.78.79.83 = Gauge32: 1954 libvirtGuestMemoryCurrent.185.178.34.217.212.63.76.189.191.225.54.201.166.88.167.118 = Gauge32: 512 libvirtGuestMemoryLimit.170.187.204.221.238.255.66.227.0.0.86.74.85.78.79.83 = Gauge32: 1954 libvirtGuestMemoryLimit.185.178.34.217.212.63.76.189.191.225.54.201.166.88.167.118 = Gauge32: 512 libvirtGuestCpuTime.170.187.204.221.238.255.66.227.0.0.86.74.85.78.79.83 = Counter64: 959760000000 libvirtGuestCpuTime.185.178.34.217.212.63.76.189.191.225.54.201.166.88.167.118 = Counter64: 19830000000 libvirtGuestRowStatus.170.187.204.221.238.255.66.227.0.0.86.74.85.78.79.83 = INTEGER: active(1) libvirtGuestRowStatus.185.178.34.217.212.63.76.189.191.225.54.201.166.88.167.118 = INTEGER: active(1)
NFX シリーズ デバイスでコマンドを snmpwalk 実行した場合の出力例を次に示します。
root@host> show vmhost snmp mib walk LIBVIRT-MIB::libvirtMIB LIBVIRT-MIB::libvirtGuestName[STRING: 33913919-8dde-4689-b54b-81beb25d84ae] = STRING: "centos1" LIBVIRT-MIB::libvirtGuestName[STRING: aabbccdd-eeff-42e3-0-564a554e4f53] = STRING: "vjunos0" LIBVIRT-MIB::libvirtGuestState[STRING: 33913919-8dde-4689-b54b-81beb25d84ae] = INTEGER: running(1) LIBVIRT-MIB::libvirtGuestState[STRING: aabbccdd-eeff-42e3-0-564a554e4f53] = INTEGER: running(1) LIBVIRT-MIB::libvirtGuestCpuCount[STRING: 33913919-8dde-4689-b54b-81beb25d84ae] = Gauge32: 1 LIBVIRT-MIB::libvirtGuestCpuCount[STRING: aabbccdd-eeff-42e3-0-564a554e4f53] = Gauge32: 1 LIBVIRT-MIB::libvirtGuestMemoryCurrent[STRING: 33913919-8dde-4689-b54b-81beb25d84ae] = Gauge32: 512 LIBVIRT-MIB::libvirtGuestMemoryCurrent[STRING: aabbccdd-eeff-42e3-0-564a554e4f53] = Gauge32: 1954 LIBVIRT-MIB::libvirtGuestMemoryLimit[STRING: 33913919-8dde-4689-b54b-81beb25d84ae] = Gauge32: 512 LIBVIRT-MIB::libvirtGuestMemoryLimit[STRING: aabbccdd-eeff-42e3-0-564a554e4f53] = Gauge32: 1954 LIBVIRT-MIB::libvirtGuestCpuTime[STRING: 33913919-8dde-4689-b54b-81beb25d84ae] = Counter64: 12300000000 LIBVIRT-MIB::libvirtGuestCpuTime[STRING: aabbccdd-eeff-42e3-0-564a554e4f53] = Counter64: 734900000000 LIBVIRT-MIB::libvirtGuestRowStatus[STRING: 33913919-8dde-4689-b54b-81beb25d84ae] = INTEGER: active(1) LIBVIRT-MIB::libvirtGuestRowStatus[STRING: aabbccdd-eeff-42e3-0-564a554e4f53] = INTEGER: active(1)
サポートされているシャーシ MIB とトラップ
NFX シリーズ デバイスは、以下のシャーシ MIB をサポートします。
- jnxFruContentsIndex
- jnxFruL1Index
- jnxFruL2Index
- jnxFruL3Index
- jnxFruName
- jnxFruType
- jnxFruSlot
- jnxFru時
- jnxFruOfflineReason
- jnxFruLastPowerOff
- jnxFruLastPowerOn
- jnxFruPowerUpTime
- jnxFruChassisId
- jnxFruChassisDescr
- jnxFruPsdアサインメント
NFX シリーズ デバイスは、以下のトラップをサポートします。
- jnxFanFailure
- jnxFanOK
- jnxPowerSupplyFailure
- jnxPowerSupplyOK
- jnxOver時間
- jnx温度OK
- jnxPowerSupplyRemoved(NFX350 のみ)
サポートされている libvirt MIB トラップ
libvirt MIB は仮想マシンを監視し、ネットワーク管理サーバーに非同期トラップを送信します。たとえば、ドメイン(VNF)が予期せずクラッシュした場合、ネットワーク管理サーバーに通知が送信されます。トラップはホストOSで生成され、vjunos0のsnmptrapdデーモンに送信されます。snmptrapd デーモンは、トラップをネットワーク管理サーバーに転送します。
libvirt トラップの定義構造は次のとおりです。
libvirtGuestNotif NOTIFICATION-TYPE OBJECTS { libvirtGuestName, libvirtGuestUUID, libvirtGuestState, libvirtGuestRowStatus } STATUS current DESCRIPTION "Guest lifecycle notification." ::= { libvirtNotifications 1 }
以下に、snmp libvirtトラップの出力例を示します。
SNMPv2-MIB::snmpTrapOID.0 = OID: LIBVIRT-MIB::libvirtGuestNotif, LIBVIRT-MIB::libvirtGuestName.0 = STRING: "test1", LIBVIRT-MIB::libvirtGuestUUID.1 = STRING: 7ad4bc2a-16db-d8c0-1f5a-6cb777e17cd8, LIBVIRT-MIB::libvirtGuestState.2 = INTEGER: running(1), LIBVIRT-MIB::libvirtGuestRowStatus.3 = INTEGER: active(1)
アクティブゲストの現在の状態は、以下のいずれかになります。
- 実行中(1)
- ブロック済み(2)
- 一時停止(3)
- シャットダウン(4)
- シャットオフ(5)
- クラッシュしました(6)
libvirt SNMPv2cトラップサポートを有効にする方法
SNMPv2cトラップサポートを有効にするには:
-
トラップのコミュニティ名を設定します。
root@host# set vmhost snmp v2c-trap trap-community community-name
-
トラップの送信元アドレスであるクライアントアドレスを設定します。送信元アドレスを設定しない場合、クライアントアドレスとしてハイパーバイザーアドレス(192.168.1.1)が使用されます。
root@host# set vmhost snmp client-address client-ip
-
ポート転送を設定します。複数のIPアドレスを設定できます。
root@host# set forwarding-options helpers port 162 server IP-address-of-trap-target
libvirt SNMPv3トラップサポートを有効にする方法
SNMPv3トラップサポートを有効にするには:
-
トラップのユーザー名を設定します。
root@host# set vmhost snmp v3-trap trap-user user-name
-
トラップの送信元アドレスであるクライアントアドレスを設定します。送信元アドレスを設定しない場合、クライアントアドレスとしてハイパーバイザーアドレス(192.168.1.1)が使用されます。
root@host# set vmhost snmp client-address client-ip
-
ユーザーのAESおよびSHAパスワードを設定します。
root@host# set vmhost snmp v3 user user-name authentication-sha authentication-password password root@host# set vmhost snmp v3 user user-name privacy-aes128 privacy-password password
-
libVirtMIB トラップサポートのポート転送を設定します。複数のIPアドレスを設定できます。
root@host# set forwarding-options helpers port 162 server IP-address-of-trap-target