在 NFX150、NFX250 下一代和 NFX350 设备上配置 SNMP
SNMP 从中央位置监控网络设备。NFX 系列(NFX150、NFX250 NextGen 和 NFX350)设备支持使用 SNMPv2c 和 SNMPv3 查询 MIB 数据。单独的 SNMP 代理(称为 SNMP 进程或 snmpd)驻留在 vjunos0 和主机操作系统上。vjunos0 充当主机操作系统的代理。与系统和机箱相关的 MIB 数据可在 vjunos0 中找到。
从 Junos OS 21.4R1 版开始,NFX 系列设备支持 LM-SENSORS-MIB、ENTITY-SENSORS-MIB 和 libvirt MIB。LM-SENSORS-MIB 和 ENTITY-SENSORS-MIB 数据在 vjunos0 上可用,而 libvirt MIB 数据在主机操作系统上可用。您可以使用 libvirt MIB 来监控虚拟机。本主题讨论 libvirt MIB 的 SNMP 实现。
如何配置 SNMPv2c 以访问 libvirt MIB 数据
SNMPv2c 使用公共组字符串,在确定 SNMP 客户端以及客户端如何访问 SNMP 代理中的数据时,这些字符串充当密码。社区字符串未在 NFX 系列设备上预配置。要使用 SNMPv2c 访问 MIB 数据,必须为主机操作系统配置社区字符串和 SNMP 代理。社区字符串将添加到主机操作系统。
图 1 显示了 NFX 系列设备上 SNMPv2c 的通信流。

当用户使用来自网络管理服务器的社区字符串发出 SNMP 命令(如 snmpwalk
) snmpget
时:
- 请求将转到 vjunos0 中的 SNMP 守护程序。SNMPD 读取 SNMP 请求中的社区字符串,并使用内部路由实例 nfx-host 将请求重定向到主机操作系统。
- 主机操作系统中的 SNMPD 处理请求并将响应发送到 vjunos0,然后 vjunos0 将其发送到网络管理服务器。
要配置 SNMPv2c,请执行以下操作:
如何配置 SNMPv3 以访问 libvirt MIB 数据
SNMPv3 支持身份验证和加密,因此提供了一种访问 MIB 数据的安全方式。SNMPv3 使用基于用户的安全模型 (USM) 实现消息安全,使用基于视图的访问控制模型 (VACM) 进行访问控制。USM 指定身份验证和加密,VACM 指定访问控制规则。 图 2 显示了 NFX 系列设备上 SNMPv3 的通信流。对于 SNMPv3,您必须创建:
- 主机操作系统中 vmhost 层次结构下的 SNMPv3 用户,具有身份验证类型和隐私
- 具有用户名和上下文的 SNMPv3 代理

当用户使用来自网络管理服务器的用户名和身份验证凭据发出 SNMP 命令(如 、snmpwalk
snmpget
) 时:
- 请求将转到 vjunos0 中的 SNMP 守护程序。SNMPD 读取 SNMP 请求中主机操作系统的上下文,并使用内部路由实例 nfx-host 将请求重定向到主机操作系统。
- 主机操作系统中的 SNMPD 处理请求并将响应发送到 vjunos0,然后 vjunos0 将其发送到网络管理服务器。
要配置 SNMPv3:
如何查询 Libvirt MIB 数据
可以使用 snmpget、 snmpgetnext和 snmpwalk 命令读取 MIB 信息。请注意,您不能用于 snmpset 配置 libvirt MIB。
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:
- jnxFruContentIndex
- jnxFruL1Index
- jnxFruL2Index
- jnxFruL3Index
- jnxFruName
- jnxFruType
- jnxFruSlot
- jnxFruTemp
- jnxFruOfflineReason
- jnxFruLastPowerOff
- jnxFruLastPowerOn
- jnxFruPower正常运行时间
- jnxFruChassisId
- jnxFruChassisDescr
- jnxFruPsdAssignment
NFX 系列设备支持以下陷阱:
- jnxFanFailure
- jnxFanOK
- jnx电源故障
- jnxPowerSupplyOK
- JNX超温
- jnx温度正常
- 已删除 jnx电源(仅适用于 NFX350)
支持的 libvirt MIB 陷阱
libvirt MIB 监视虚拟机并将异步陷阱发送到网络管理服务器。例如,如果域 (VNF) 意外崩溃,则会向网络管理服务器发送通知。陷阱在主机操作系统中生成,并发送到 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