跟踪 SNMP 活动
监控在运行 Junos OS 的设备上影响 SNMP 性能的 SNMP 活动和跟踪问题
以下部分包含有关监控运行 Junos OS 的设备上的 SNMP 活动以及识别可能影响运行 Junos OS 的设备上的 SNMP 性能的问题的信息:
检查是否使用 snmpd 注册的 MIB 对象
要使 SNMP 进程能够访问与 MIB 对象相关的数据,必须在 snmpd 中注册 MIB 对象。当 SNMP 子代理联机时,它会尝试将关联的 MIB 对象注册到 snmpd。snmpd 维护对象与关联子代理的映射。但是,注册尝试偶尔会失败,并且对象一直未使用 snmpd 进行注册,直到下一次子代理重新启动并成功注册对象。
当网络管理系统轮询未在 snmpd 中注册的对象的相关数据时,snmpd 会返回错误 noSuchName
(对于 SNMPv1 对象)或 noSuchObject
错误(对于 SNMPv2 对象)。
您可以使用以下命令检查是否使用 snmpd 注册的 MIB 对象:
show snmp registered-objects
- 创建一个/var/log/snmp_reg_objs
文件,其中包含已注册对象列表及其与各种子代理的映射。file show /var/log/snmp_reg_objs
- 显示文件的内容/var/log/snmp_reg_objs
。
以下示例显示了创建和显示 /var/log/snmp_reg_objs
文件的步骤:
user@host> show snmp registered-objects user@host> file show /var/log/snmp_reg_objs -------------------------------------------------------------- Registered MIB Objects root_name = -------------------------------------------------------------- .1.2.840.10006.300.43.1.1.1.1.2 (dot3adAggMACAddress) (/var/run/mib2d-11) .1.2.840.10006.300.43.1.1.1.1.3 (dot3adAggActorSystemPriority) (/var/run/mib2d-11) .1.2.840.10006.300.43.1.1.1.1.4 (dot3adAggActorSystemID) (/var/run/mib2d-11) .1.2.840.10006.300.43.1.1.1.1.5 (dot3adAggAggregateOrIndividual) (/var/run/mib2d-11) .1.2.840.10006.300.43.1.1.1.1.6 (dot3adAggActorAdminKey) (/var/run/mib2d-11) .1.2.840.10006.300.43.1.1.1.1.7 (dot3adAggActorOperKey) (/var/run/mib2d-11) .1.2.840.10006.300.43.1.1.1.1.8 (dot3adAggPartnerSystemID) (/var/run/mib2d-11) .1.2.840.10006.300.43.1.1.1.1.9 (dot3adAggPartnerSystemPriority) (/var/run/mib2d-11) .1.2.840.10006.300.43.1.1.1.1.10 (dot3adAggPartnerOperKey) (/var/run/mib2d-11) .1.2.840.10006.300.43.1.1.1.1.11 (dot3adAggCollectorMaxDelay) (/var/run/mib2d-11) .1.2.840.10006.300.43.1.1.2.1.1 (dot3adAggPortListPorts) (/var/run/mib2d-11) .1.2.840.10006.300.43.1.2.1.1.2 (dot3adAggPortActorSystemPriority) (/var/run/mib2d-11) .1.2.840.10006.300.43.1.2.1.1.3 (dot3adAggPortActorSystemID) (/var/run/mib2d-11) .1.2.840.10006.300.43.1.2.1.1.4 (dot3adAggPortActorAdminKey) (/var/run/mib2d-11) .1.2.840.10006.300.43.1.2.1.1.5 (dot3adAggPortActorOperKey) (/var/run/mib2d-11) .1.2.840.10006.300.43.1.2.1.1.6 (dot3adAggPortPartnerAdminSystemPriority) (/var/run/mib2d-11) .1.2.840.10006.300.43.1.2.1.1.7 (dot3adAggPortPartnerOperSystemPriority) (/var/run/mib2d-11) .1.2.840.10006.300.43.1.2.1.1.8 (dot3adAggPortPartnerAdminSystemID) (/var/run/mib2d-11) .1.2.840.10006.300.43.1.2.1.1.9 (dot3adAggPortPartnerOperSystemID) (/var/run/mib2d-11) .1.2.840.10006.300.43.1.2.1.1.10 (dot3adAggPortPartnerAdminKey) (/var/run/mib2d-11) .1.2.840.10006.300.43.1.2.1.1.11 (dot3adAggPortPartnerOperKey) (/var/run/mib2d-11) .1.2.840.10006.300.43.1.2.1.1.12 (dot3adAggPortSelectedAggID) (/var/run/mib2d-11) ---(more)---
该文件 /var/log/snmp_reg_objs 仅包含在执行 show snmp registered-objects
命令时与正在启动和运行并在 snmpd 中注册的 Junos OS 进程相关联的对象。如果与启动并运行的 Junos OS 进程相关的 MIB 对象未显示在已注册对象列表中,则可能需要重新启动软件进程以使用 snmpd 重试对象注册。
跟踪 SNMP 活动
SNMP 跟踪操作可跟踪 SNMP 代理的活动,并将信息记录在日志文件中。记录的事件说明提供了详细信息,可帮助您更快地解决问题。默认情况下,Junos OS 不跟踪任何 SNMP 活动。要对运行 Junos OS 的设备上的 SNMP 活动启用跟踪,请将语句 traceoptions
包含在 [edit snmp]
层次结构级别。
配置示例 traceoptions
可能类似于:
[edit snmp] set traceoptions flag all;
在层次结构级别包含[edit snmp]
语句traceoptions flag all
时,将创建以下日志文件:
snmpd
mib2d
rmopd
您可以使用 show log log-filename
操作模式命令查看日志文件的内容。在 snmpd 日志文件中(请参阅以下示例),一个序列 >>>
表示传入的数据包,而一个 <<<
序列表示传出数据包。请注意,如果有多个网络管理系统同时轮询设备,则请求响应对可能不会遵循任何顺序。您可以使用源和请求 ID 组合来匹配请求和响应。但是,请注意,如果 SNMP 主代理或 SNMP 子代理未响应请求,则不会在日志文件中创建响应日志。
仔细分析请求响应时间可以帮助您识别和了解延迟响应。
查看日志文件
以下示例显示了命令的 show log snmpd
输出:
user@host> show log snmpd Apr 12 06:40:03 snmpd[7ee783df] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Apr 12 06:40:03 snmpd[7ee783df] >>> Get-Bulk-Request Apr 12 06:40:03 snmpd[7ee783df] >>> Source: 10.209.63.42 Apr 12 06:40:03 snmpd[7ee783df] >>> Destination: 10.209.2.242 Apr 12 06:40:03 snmpd[7ee783df] >>> Version: SNMPv2 Apr 12 06:40:03 snmpd[7ee783df] >>> Request_id: 0x7ee783df Apr 12 06:40:03 snmpd[7ee783df] >>> Community: public Apr 12 06:40:03 snmpd[7ee783df] >>> Non-repeaters: 0 Apr 12 06:40:03 snmpd[7ee783df] >>> Max-repetitions: 10 Apr 12 06:40:03 snmpd[7ee783df] >>> OID : jnxContentsType.6.1.2.0 Apr 12 06:40:03 snmpd[7ee783df] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Apr 12 06:40:03 snmpd[7ee783df] <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Apr 12 06:40:03 snmpd[7ee783df] <<< Get-Response Apr 12 06:40:03 snmpd[7ee783df] <<< Source: 10.209.63.42 Apr 12 06:40:03 snmpd[7ee783df] <<< Destination: 10.209.2.242 Apr 12 06:40:03 snmpd[7ee783df] <<< Version: SNMPv2 Apr 12 06:40:03 snmpd[7ee783df] <<< Request_id: 0x7ee783df Apr 12 06:40:03 snmpd[7ee783df] <<< Community: public Apr 12 06:40:03 snmpd[7ee783df] <<< Error: status=0 / vb_index=0 Apr 12 06:40:03 snmpd[7ee783df] <<< Apr 12 06:40:03 snmpd[7ee783df] <<< OID : jnxContentsType.7.1.0.0 Apr 12 06:40:03 snmpd[7ee783df] <<< type : Object Apr 12 06:40:03 snmpd[7ee783df] <<< value: jnxM10iFPC.0 Apr 12 06:40:03 snmpd[7ee783df] <<< Apr 12 06:40:03 snmpd[7ee783df] <<< OID : jnxContentsType.7.1.1.0 Apr 12 06:40:03 snmpd[7ee783df] <<< type : Object Apr 12 06:40:03 snmpd[7ee783df] <<< value: jnxChassisTempSensor.0 Apr 12 06:40:03 snmpd[7ee783df] <<< Apr 12 06:40:03 snmpd[7ee783df] <<< OID : jnxContentsType.7.2.0.0 Apr 12 06:40:03 snmpd[7ee783df] <<< type : Object Apr 12 06:40:03 snmpd[7ee783df] <<< value: jnxM10iFPC.0 Apr 12 06:40:03 snmpd[7ee783df] <<< Apr 12 06:40:03 snmpd[7ee783df] <<< OID : jnxContentsType.7.2.1.0 Apr 12 06:40:03 snmpd[7ee783df] <<< type : Object Apr 12 06:40:03 snmpd[7ee783df] <<< value: jnxChassisTempSensor.0 Apr 12 06:40:03 snmpd[7ee783df] <<< Apr 12 06:40:03 snmpd[7ee783df] <<< OID : jnxContentsType.9.1.0.0 Apr 12 06:40:03 snmpd[7ee783df] <<< type : Object Apr 12 06:40:03 snmpd[7ee783df] <<< value: jnxM10iRE.0 Apr 12 06:40:03 snmpd[7ee783df] <<< Apr 12 06:40:03 snmpd[7ee783df] <<< OID : jnxContentsType.9.1.1.0 Apr 12 06:40:03 snmpd[7ee783df] <<< type : Object Apr 12 06:40:03 snmpd[7ee783df] <<< value: jnxPCMCIACard.0 Apr 12 06:40:03 snmpd[7ee783df] <<< Apr 12 06:40:03 snmpd[7ee783df] <<< OID : jnxContentsType.9.2.0.0 Apr 12 06:40:03 snmpd[7ee783df] <<< type : Object Apr 12 06:40:03 snmpd[7ee783df] <<< value: jnxM10iRE.0 Apr 12 06:40:03 snmpd[7ee783df] <<< Apr 12 06:40:03 snmpd[7ee783df] <<< OID : jnxContentsType.9.2.1.0 Apr 12 06:40:03 snmpd[7ee783df] <<< type : Object Apr 12 06:40:03 snmpd[7ee783df] <<< value: jnxPCMCIACard.0 Apr 12 06:40:03 snmpd[7ee783df] <<< Apr 12 06:40:03 snmpd[7ee783df] <<< OID : jnxContentsType.12.1.0.0 Apr 12 06:40:03 snmpd[7ee783df] <<< type : Object Apr 12 06:40:03 snmpd[7ee783df] <<< value: jnxM10iHCM.0 Apr 12 06:40:03 snmpd[7ee783df] <<< Apr 12 06:40:03 snmpd[7ee783df] <<< OID : jnxContentsType.12.2.0.0 Apr 12 06:40:03 snmpd[7ee783df] <<< type : Object Apr 12 06:40:03 snmpd[7ee783df] <<< value: jnxM10iHCM.0 Apr 12 06:40:03 snmpd[7ee783df] <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Apr 12 06:40:03 snmpd[7ee783e0] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> Apr 12 06:40:03 snmpd[7ee783e0] >>> Get-Bulk-Request Apr 12 06:40:03 snmpd[7ee783e0] >>> Source: 10.209.63.42 Apr 12 06:40:03 snmpd[7ee783e0] >>> Destination: 10.209.2.242 Apr 12 06:40:03 snmpd[7ee783e0] >>> Version: SNMPv2 Apr 12 06:40:03 snmpd[7ee783e0] >>> Request_id: 0x7ee783e0 Apr 12 06:40:03 snmpd[7ee783e0] >>> Community: public Apr 12 06:40:03 snmpd[7ee783e0] >>> Non-repeaters: 0 Apr 12 06:40:03 snmpd[7ee783e0] >>> Max-repetitions: 10 Apr 12 06:40:03 snmpd[7ee783e0] >>> OID : jnxContentsType.12.2.0.0 Apr 12 06:40:03 snmpd[7ee783e0] >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> …… ……
监控 SNMP 统计信息
操作 show snmp statistics extensive
模式命令为您提供了查看设备上的 SNMP 流量(包括陷阱)的选项。命令的 show snmp statistics extensive
输出显示实时值,可用于监控节流丢弃、当前活动、最大活动、未找到、超时、最大延迟、当前队列、总队列和溢出等值。您可以通过监控当前的活动计数来识别 SNMP 响应的慢速,因为当前活动计数的不断增加与对 SNMP 请求的缓慢或无响应直接相关。
show snmp 统计信息 extensive Command 的示例输出
user@host> show snmp statistics extensive SNMP statistics: Input: Packets: 226656, Bad versions: 0, Bad community names: 0, Bad community uses: 0, ASN parse errors: 0, Too bigs: 0, No such names: 0, Bad values: 0, Read onlys: 0, General errors: 0, Total request varbinds: 1967606, Total set varbinds: 0, Get requests: 18478, Get nexts: 75794, Set requests: 0, Get responses: 0, Traps: 0, Silent drops: 0, Proxy drops: 0, Commit pending drops: 0, Throttle drops: 27084, Duplicate request drops: 0 V3 Input: Unknown security models: 0, Invalid messages: 0 Unknown pdu handlers: 0, Unavailable contexts: 0 Unknown contexts: 0, Unsupported security levels: 0 Not in time windows: 0, Unknown user names: 0 Unknown engine ids: 0, Wrong digests: 0, Decryption errors: 0 Output: Packets: 226537, Too bigs: 0, No such names: 0, Bad values: 0, General errors: 0, Get requests: 0, Get nexts: 0, Set requests: 0, Get responses: 226155, Traps: 382 SA Control Blocks: Total: 222984, Currently Active: 501, Max Active: 501, Not found: 0, Timed Out: 0, Max Latency: 25 SA Registration: Registers: 0, Deregisters: 0, Removes: 0 Trap Queue Stats: Current queued: 0, Total queued: 0, Discards: 0, Overflows: 0 Trap Throttle Stats: Current throttled: 0, Throttles needed: 0 Snmp Set Stats: Commit pending failures: 0, Config lock failures: 0 Rpc failures: 0, Journal write failures: 0 Mgd connect failures: 0, General commit failures: 0
检查 CPU 利用率
被查询的软件进程(如 snmpd 或 mib2d)的 CPU 使用率过高是可能导致响应缓慢或无法响应的另一个因素。您可以使用 show system processes extensive
操作模式命令检查 Junos OS 进程的 CPU 使用级别。
show system 处理 extensive Command 的示例输出
user@host> show system processes extensive last pid: 1415; load averages: 0.00, 0.00, 0.00 up 0+02:20:54 10:26:25 117 processes: 2 running, 98 sleeping, 17 waiting Mem: 180M Active, 54M Inact, 39M Wired, 195M Cache, 69M Buf, 272M Free Swap: 1536M Total, 1536M Free PID USERNAME THR PRI NICE SIZE RES STATE TIME WCPU COMMAND 11 root 1 171 52 0K 12K RUN 132:09 95.21% idle 1184 root 1 97 0 35580K 9324K select 4:16 1.61% chassisd 177 root 1 -8 0 0K 12K mdwait 0:51 0.00% md7 119 root 1 -8 0 0K 12K mdwait 0:20 0.00% md4 13 root 1 -20 -139 0K 12K WAIT 0:16 0.00% swi7: clock sio 1373 root 1 96 0 15008K 12712K select 0:09 0.00% snmpd 1371 root 1 96 0 9520K 5032K select 0:08 0.00% jdiameterd 12 root 1 -40 -159 0K 12K WAIT 0:07 0.00% swi2: net 1375 root 2 96 0 15016K 5812K select 0:06 0.00% pfed 49 root 1 -8 0 0K 12K mdwait 0:05 0.00% md0 1345 root 1 96 0 10088K 4480K select 0:05 0.00% l2ald 1181 root 1 96 0 1608K 908K select 0:05 0.00% bslockd 23 root 1 -68 -187 0K 12K WAIT 0:04 0.00% irq10: fxp1 30 root 1 171 52 0K 12K pgzero 0:04 0.00% pagezero 1344 root 1 4 0 39704K 11444K kqread 0:03 0.00% rpd 1205 root 1 96 0 3152K 912K select 0:03 0.00% license-check 1372 root 1 96 0 28364K 6696K select 0:03 0.00% dcd 1374 root 1 96 0 11764K 7632K select 0:02 0.00% mib2d 1405 user 1 96 0 15892K 11132K select 0:02 0.00% cli 139 root 1 -8 0 0K 12K mdwait 0:02 0.00% md5 22 root 1 -80 -199 0K 12K WAIT 0:02 0.00% irq9: cbb1 fxp0 1185 root 1 96 0 4472K 2036K select 0:02 0.00% alarmd 4 root 1 -8 0 0K 12K - 0:02 0.00% g_down 3 root 1 -8 0 0K 12K - 0:02 0.00% g_up 43 root 1 -16 0 0K 12K psleep 0:02 0.00% vmkmemdaemon 1377 root 1 96 0 3776K 2256K select 0:01 0.00% irsd 48 root 1 -16 0 0K 12K - 0:01 0.00% schedcpu 99 root 1 -8 0 0K 12K mdwait 0:01 0.00% md3 953 root 1 96 0 4168K 2428K select 0:01 0.00% eventd 1364 root 1 96 0 4872K 2808K select 0:01 0.00% cfmd 15 root 1 -16 0 0K 12K - 0:01 0.00% yarrow 1350 root 1 96 0 31580K 7248K select 0:01 0.00% cosd 1378 root 1 96 0 19776K 6292K select 0:01 0.00% lpdfd ...
检查内核和数据包转发引擎响应
如 了解 Junos OS 中的 SNMP 实施中所述,某些 SNMP MIB 数据由内核或数据包转发引擎维护。要使这些数据可供网络管理系统使用,内核必须向 mib2d 中的 SNMP 子代理提供所需的信息。内核响应缓慢可能会导致 mib2d 延迟将数据返回到网络管理系统。每次接口需要超过 10,000 微秒才能响应接口统计信息请求时,Junos OS 都会在 mib2d 日志文件中添加一个条目。您可以使用 show log log-filename | grep “kernel response time”
命令了解内核的响应时间。
检查内核响应时间
user@host> show log mib2d | grep “kernel response time” Aug 17 22:39:37 == kernel response time for COS_IPVPN_DEFAULT_OUTPUT-t1-7/3/0:10:27.0-o: 9.126471 sec, range (0.000007, 11.000806) Aug 17 22:39:53 == kernel response time for COS_IPVPN_DEFAULT_INPUT-t1-7/2/0:5:15.0-i: 5.387321 sec, range (0.000007, 11.000806) Aug 17 22:39:53 == kernel response time for ct1-6/1/0:9:15: 0.695406 sec, range (0.000007, 11.000806) Aug 17 22:40:04 == kernel response time for t1-6/3/0:6:19: 1.878542 sec, range (0.000007, 11.000806) Aug 17 22:40:22 == kernel response time for lsq-7/0/0: 2.556592 sec, range (0.000007, 11.000806)
跟踪运行 Junos OS 的设备上的 SNMP 活动
SNMP 跟踪操作可跟踪 SNMP 代理的活动,并将信息记录在日志文件中。记录的错误说明提供了详细信息,可帮助您更快地解决问题。
默认情况下,Junos OS 不跟踪任何 SNMP 活动。如果在层次结构级别包含 traceoptions
语句 [edit snmp]
,则默认跟踪行为为:
重要活动会记录在目录中的 /var/log 文件中。每个日志都以生成日志的 SNMP 代理命名。目前,当使用该语句时
traceoptions
,在/var/log目录中会创建以下日志文件:chassisd
制作
ilmid
mib2d
rmopd
服务
snmpd
当名为的 filename 跟踪文件达到其最大大小时,将重命名 filename.0,然后 filename.1,以等方式,直到达到最大跟踪文件数。然后,最早的跟踪文件将被覆盖。(有关如何创建日志文件的更多信息,请参阅 系统日志浏览器。)
日志文件只能由配置跟踪操作的用户访问。
您不能更改跟踪文件的目录 (/var/log)。但是,通过在层次结构级别包含以下语句 [edit snmp]
,您可以自定义其他跟踪文件设置:
[edit snmp] traceoptions { file <files number> <match regular-expression> <size size> <world-readable | no-world-readable>; flag flag; memory-trace; no-remote-trace; no-default-memory-trace; }
以下部分介绍了这些语句:
配置 SNMP 日志文件的数量和大小
默认情况下,当追踪文件达到 128 kb (KB) 大小时,将重命名 filename.0,然后 filename.1,依此命名,直到有三个跟踪文件。然后,最早的追踪文件 (filename.2) 将被覆盖。
通过在层次结构级别包含以下语句 [edit snmp traceoptions]
,您可以配置跟踪文件的数量和大小限制:
[edit snmp traceoptions] file files number size size;
例如,将最大文件大小设置为 2 MB,将最大文件数设置为 20。当接收跟踪操作 (filename) 输出的文件达到 2 MB 时, filename 将重命名 filename.0,并创建一个名为 filename 的新文件。当新的 filename 2 MB 达到 2 MB 时, filename.0 将重命名 filename.1 并 filename 重命名 filename.0。此过程会重复,直到有 20 个跟踪文件。然后,最早的文件 (filename.19) 将被最新的文件 (filename.0) 覆盖。
文件数量可以是 2 到 1000 个文件。每个文件的文件大小可以从 10 KB 到 1 千兆字节 (GB) 之间。
配置对日志文件的访问
默认情况下,日志文件只能由配置跟踪操作的用户访问。
要指定任何用户都可以阅读所有日志文件,请在层次结构级别包括语句file world-readable
[edit snmp traceoptions]
:
[edit snmp traceoptions] file world-readable;
要显式设置默认行为,请将语句file no-world-readable
[edit snmp traceoptions]
包含在层次结构级别:
[edit snmp traceoptions] file no-world-readable;
配置要记录的线路的正则表达式
默认情况下,追踪操作输出包括与记录的活动相关的所有行。
您可以通过在层次结构级别包含语句match
[edit snmp traceoptions file filename]
并指定要匹配的正则表达式 (regex) 来优化输出:
[edit snmp traceoptions] file filename match regular-expression;
配置追踪操作
默认情况下,只会记录重要的活动。您可以通过在[edit snmp traceoptions]
层次结构级别包含以下flag
语句(带一个或多个跟踪标记)来指定要记录的跟踪操作:
[edit snmp traceoptions] flag { all; configuration; database; events; general; interface-stats; nonvolatile-sets; pdu; policy; protocol-timeouts; routing-socket; server; subagent; timer; varbind-error; }
表 1 介绍了 SNMP 跟踪标志的含义。
国旗 |
说明 |
默认设置 |
---|---|---|
|
记录所有操作。 |
Off |
|
在层次结构级别读取配置的 |
Off |
|
记录事件数据库中涉及存储和检索的事件。 |
Off |
|
记录重要事件。 |
Off |
|
记录常规事件。 |
Off |
|
记录物理和逻辑接口统计信息。 |
Off |
|
记录非易失 SNMP 集请求处理。 |
Off |
|
记录 SNMP 请求和响应数据包。 |
Off |
|
日志策略处理。 |
Off |
|
记录 SNMP 响应超时。 |
Off |
|
日志路由套接字调用。 |
Off |
|
记录与生成事件的进程的通信。 |
Off |
|
日志子代理重新启动。 |
Off |
|
记录内部计时器事件。 |
Off |
|
日志变量绑定错误。 |
Off |
要显示代理的日志末尾,请 show log agentd | last
发出操作模式命令:
[edit] user@host# run show log agentd | last
其中 agent
是 SNMP 代理的名称
示例:跟踪 SNMP 活动
有关 SNMP 数据包的跟踪信息:
[edit] snmp { traceoptions { file size 10k files 5; flag pdu; flag protocol-timeouts; flag varbind-error; } }
启用对等和 IPsec 隧道关闭陷阱
本主题介绍如何启用 peer-down
和 ipsec-tunnel-down
捕获。