on 09-27-2011 06:15 AM
One of the frequently asked questions is how to monitor CPU utilization on RP, RSP, PRP and Line Cards on IOS-XR based devices using SNMP tools, like MRTG.
Few easy steps described below will help to understand which OIDs have to be used for polling and how differentiate RP, RSP and Line Cards on different platforms.
All examples below, taken from IOS-XR based devices, i.e. CRS, XR12000 and ASR9000 running XR release 4.0.1 with SNMPv2.
Step 1.
snmpwalk for the OID (1.3.6.1.4.1.9.9.109.1.1.1.1.2 ) for the object "cpmCPUTotalPhysicalIndex" gives the PhysicalIndex mapping of cards
NMS% snmpwalk -v2c -c <community_name> <router's IP address> 1.3.6.1.4.1.9.9.109.1.1.1.1.2
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.2.2 = INTEGER: 2359704
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.2.18 = INTEGER: 10154515
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.2.34 = INTEGER: 33511382
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.2.50 = INTEGER: 48351593
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.2.514 = INTEGER: 24635790
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.2.530 = INTEGER: 38114433
RP/0/RP0/CPU0:CRS#sh platform
Node Type PLIM State Config State
------------- ----------------- ---------------- --------------- -----------------------------------------------
0/0/CPU0 MSC 4OC192-POS/DPT IOS XR RUN PWR,NSHUT,MON
0/1/CPU0 MSC 8-10GbE IOS XR RUN PWR,NSHUT,MON
0/2/CPU0 MSC Jacket Card IOS XR RUN PWR,NSHUT,MON
0/3/CPU0 MSC-140G 14-10GbE IOS XR RUN PWR,NSHUT,MON
0/RP0/CPU0 RP(Active) N/A IOS XR RUN PWR,NSHUT,MON
0/RP1/CPU0 RP(Standby) N/A IOS XR RUN PWR,NSHUT,MON
Step 2.
It is possible now to figure out which card is what by polling OID (1.3.6.1.2.1.47.1.1.1.1.7) for object "entPhysicalName" using the
values received in step 1
NMS% snmpwalk -v2c -c <community_name> <router's IP address> 1.3.6.1.2.1.47.1.1.1.1.7.2359704
SNMPv2-SMI::mib-2.47.1.1.1.1.7.2359704 = STRING: "0/0/* - cpu"
NMS% snmpwalk -v2c -c <community_name> <router's IP address> 1.3.6.1.2.1.47.1.1.1.1.7.10154515
SNMPv2-SMI::mib-2.47.1.1.1.1.7.10154515 = STRING: "0/1/* - cpu"
NMS2% snmpwalk -v2c -c <community_name> <router's IP address> 1.3.6.1.2.1.47.1.1.1.1.7.33511382
SNMPv2-SMI::mib-2.47.1.1.1.1.7.33511382 = STRING: "0/2/* - cpu"
NMS% snmpwalk -v2c -c <community_name> <router's IP address> 1.3.6.1.2.1.47.1.1.1.1.7.48351593
SNMPv2-SMI::mib-2.47.1.1.1.1.7.48351593 = STRING: "0/3/* - cpu"
NMS% snmpwalk -v2c -c <community_name> <router's IP address> 1.3.6.1.2.1.47.1.1.1.1.7.24635790
SNMPv2-SMI::mib-2.47.1.1.1.1.7.24635790 = STRING: "0/RP0/* - host"
NMS% snmpwalk -v2c -c <community_name> <router's IP address> 1.3.6.1.2.1.47.1.1.1.1.7.38114433
SNMPv2-SMI::mib-2.47.1.1.1.1.7.38114433 = STRING: "0/RP1/* - host"
So, according to the given example we can identify each RP and/or Line Card and given PhysicalIndex.
Step 3
snmpwalk for the OID (1.3.6.1.4.1.9.9.109.1.1.1.1.7) for the object "cpmCPUTotal1minRev" gives the
CPU utilization percent for one minute for the index above and if, for example, we are talking about RP0 and RP1
we should look at the indexes 514 and 530
NMS% snmpwalk -v2c -c <community_name> <router's IP address> 1.3.6.1.4.1.9.9.109.1.1.1.1.7.514
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.7.514 = Gauge32: 2
NMS% snmpwalk -v2c -c <community_name> <router's IP address> 1.3.6.1.4.1.9.9.109.1.1.1.1.7.530
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.7.530 = Gauge32: 1
Corresponding data from the router:
RP/0/RP0/CPU0:CRS#sh proc cpu loc 0/rp0/cpu0
CPU utilization for one minute: 2%; five minutes: 3%; fifteen minutes: 3%
RP/0/RP0/CPU0:CRS#sh proc cpu loc 0/rp1/cpu0
CPU utilization for one minute: 1%; five minutes: 1%; fifteen minutes: 2%
For other line cards:
NMS% snmpwalk -v2c -c <community_name> <router's IP address> 1.3.6.1.4.1.9.9.109.1.1.1.1.7.2
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.7.2 = Gauge32: 3
NMS% snmpwalk -v2c -c <community_name> <router's IP address> 1.3.6.1.4.1.9.9.109.1.1.1.1.7.18
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.7.18 = Gauge32: 3
NMS% snmpwalk -v2c -c <community_name> <router's IP address> 1.3.6.1.4.1.9.9.109.1.1.1.1.7.34
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.7.34 = Gauge32: 5
NMS% snmpwalk -v2c -c <community_name> <router's IP address> 1.3.6.1.4.1.9.9.109.1.1.1.1.7.50
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.7.50 = Gauge32: 2
Corresponding data from the router:
RP/0/RP0/CPU0:CRS#sh proc cpu loc 0/0/cpu0
CPU utilization for one minute: 3%; five minutes: 3%; fifteen minutes: 3%
RP/0/RP0/CPU0:CRS#sh proc cpu loc 0/1/cpu0
CPU utilization for one minute: 3%; five minutes: 3%; fifteen minutes: 3%
RP/0/RP0/CPU0:CRS#sh proc cpu loc 0/2/cpu0
CPU utilization for one minute: 5%; five minutes: 4%; fifteen minutes: 4%
RP/0/RP0/CPU0:CRSproc cpu loc 0/3/cpu0
CPU utilization for one minute: 2%; five minutes: 2%; fifteen minutes: 2%
Step 4.
Polling the OID (1.3.6.1.4.1.9.9.109.1.1.1.1.8) for the object "cpmCPUTotal5minRev" gives the CPU
utilization percent for 5 minute for the index above and, again, if we are talking about RP0 and RP1
we should look at the indexes 514 and 530
NMS% snmpwalk -v2c -c <community_name> <router's IP address> 1.3.6.1.4.1.9.9.109.1.1.1.1.8.514
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.8.514 = Gauge32: 2
NMS% snmpwalk -v2c -c <community_name> <router's IP address> 1.3.6.1.4.1.9.9.109.1.1.1.1.8.530
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.8.530 = Gauge32: 1
And corresponding data from the router:
RP/0/RP0/CPU0:CRS#sh proc cpu loc 0/rp0/cpu0
CPU utilization for one minute: 2%; five minutes: 2%; fifteen minutes: 2%
RP/0/RP0/CPU0:CRS#sh proc cpu loc 0/rp1/cpu0
CPU utilization for one minute: 1%; five minutes: 1%; fifteen minutes: 1%
The same approach works for XR12000 routers, as it shown in given example
-Obtaining PhysicalIndex mapping
NMS% snmpwalk -v2c -c <community_name> <router's IP address> 1.3.6.1.4.1.9.9.109.1.1.1.1.2
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.2.17 = INTEGER: 26932192
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.2.33 = INTEGER: 16733769
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.2.49 = INTEGER: 65129206
RP/0/1/CPU0:XR12000#sh platform
Node Type PLIM State Config State
------------------------------------------------------------------------------------------------------------
0/1/CPU0 PRP(Active) N/A IOS XR RUN PWR,NSHUT,MON
0/2/CPU0 L3LC Eng 5+ Jacket Card IOS XR RUN PWR,NSHUT,MON
0/3/CPU0 L3LC Eng 5+ Jacket Card IOS XR RUN PWR,NSHUT,MON
-Verifying which card should be used for polling
NMS% snmpwalk -v2c -c <community_name> <router's IP address> 1.3.6.1.2.1.47.1.1.1.1.7.26932192
SNMPv2-SMI::mib-2.47.1.1.1.1.7.26932192 = STRING: "0/1/CPU0 - host"
NMS% snmpwalk -v2c -c <community_name> <router's IP address> 1.3.6.1.2.1.47.1.1.1.1.7.16733769
SNMPv2-SMI::mib-2.47.1.1.1.1.7.16733769 = STRING: "0/2/CPU0 - host"
NMS% snmpwalk -v2c -c <community_name> <router's IP address> 1.3.6.1.2.1.47.1.1.1.1.7.65129206
SNMPv2-SMI::mib-2.47.1.1.1.1.7.65129206 = STRING: "0/3/CPU0 - host
-Verifying CPU utilization for one minute (as an example)
NMS% snmpwalk -v2c -c <community_name> <router's IP address> 1.3.6.1.4.1.9.9.109.1.1.1.1.7.17
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.7.17 = Gauge32: 2
Corresponding data from the router from Active PRP, so, without "location" keyword
RP/0/1/CPU0:XR12000#sh proc cpu
CPU utilization for one minute: 2%; five minutes: 2%; fifteen minutes: 1%
And finally, example for ASR9000
-Obtaining PhysicalIndex mapping
NMS% snmpwalk -v2c -c <community_name> <router's IP address> 1.3.6.1.4.1.9.9.109.1.1.1.1.2
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.2.2 = INTEGER: 52690955
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.2.2082 = INTEGER:35271015
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.2.2098 = INTEGER: 8695772
RP/0/RSP0/CPU0:ASR9000#sh platform
Node Type State Config State
----------------------------------------------------------------------------------------------------------
0/RSP0/CPU0 A9K-RSP-4G(Active) IOS XR RUN PWR,NSHUT,MON
0/0/CPU0 A9K-4T-E IOS XR RUN PWR,NSHUT,MON
0/1/CPU0 A9K-40GE-E IOS XR RUN PWR,NSHUT,MON
-Verifying which card should be used for polling
NMS% snmpwalk -v2c -c <community_name> <router's IP address> 1.3.6.1.2.1.47.1.1.1.1.7.52690955
SNMPv2-SMI::mib-2.47.1.1.1.1.7.52690955 = STRING: "module 0/RSP0/CPU0"
NMS% snmpwalk -v2c -c <community_name> <router's IP address> 1.3.6.1.2.1.47.1.1.1.1.7.35271015
SNMPv2-SMI::mib-2.47.1.1.1.1.7.35271015 = STRING: "module 0/0/CPU0"
NMS% snmpwalk -v2c -c <community_name> <router's IP address> 1.3.6.1.2.1.47.1.1.1.1.7.8695772
SNMPv2-SMI::mib-2.47.1.1.1.1.7.8695772 = STRING: "module 0/1/CPU0"
-Verifying CPU utilization for one minute (as an example)
NMS% snmpwalk -v2c -c <community_name> <router's IP address> 1.3.6.1.4.1.9.9.109.1.1.1.1.7.2
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.7.2 = Gauge32: 3
Corresponding data from the router:
RP/0/RSP0/CPU0:ASR9000#sh proc cpu
CPU utilization for one minute: 3%; five minutes: 3%; fifteen minutes: 3%
So, the mentioned OIDs should be used on NMS system for polling IOS-XR based devices to get CPU utilization on different Line Cards and RP, RSP and PRP
Hello Xander,
Surely,I've extracted host template for ASR9001 and ASR9010, which already contains CPU and memory usage templates inside. Just import it to Cacti and try using
Note, that our ASR9001 has RSP0 and LC0(named as Board0); and our ASR9010 has RSP0, RSP1 and 5 boards in slots 0,1,2,4 and 5
If you have LCs in other slots, just update OID in relevant data templates, as explained above
Just tell me, if it doesnt work, maybe something is not exported correctly )
PS - I've updated .zip files, removed some unused data sources )
Hey, gentlemen.
I'm trying to pull CPU utilization from ISR43xx
System image file is "bootflash:isr4300-universalk9.03.13.02.S.154-3.S2-ext.SPA.bin"
Cisco IOS Software, ISR Software (X86_64_LINUX_IOSD-UNIVERSALK9-M), Version 15.4(3)S2, RELEASE SOFTWARE (fc3)
I'm pulling 1.3.6.1.4.1.9.9.109.1.1.1.1.7 and getting different value comparing with sh processes cpu result:
snmpwalk -v 2c -c yvr-ro-calvex 10.31.254.5 1.3.6.1.4.1.9.9.109.1.1.1.1.5
SNMPv2-SMI::enterprises.9.9.109.1.1.1.1.5.7 = Gauge32: 16
sh processes cpu
CPU utilization for five seconds: 1%/0%; one minute: 1%; five minutes: 1%
Who can explain why I get two different values and which
Great Article. Is there a way to figure out active RPs from both?
Hi All,
we are trying to get total memory of ASR9k using OID, but we are not getting OID for that.
Please help me on this.
We need to get total memory of ASR9k using SNMP
Find answers to your questions by entering keywords or phrases in the Search bar above. New here? Use these resources to familiarize yourself with the community: