2009-11-12

Monitoring Cisco Wireless Controller 4400 via SNMP

Hello

Cisco has done a great job implementing SNMP into its 4400 WLC.
The sheer number of OIDs is phenomenal.

You will need two MIB files to translate OIDs from numeric into named
AIRESPACE-SWITCHING-MIB
1.3.6.1.4.1.14179.1




AIRESPACE-WIRELESS-MIB
1.3.6.1.4.1.14179.2





Both are avaible to view and download here:
http://www.oidview.com/mibs/14179/md-14179-1.html

Or from Cisco site:
http://tools.cisco.com/Support/SNMP/do/BrowseOID.do?local=en&translate=Translate&objectInput=1.3.6.1.4.1.14179


First monitor - Number of users connected to given AP

This will tell us how many people are connected to one particular Cisco Airespace Access Point

For that we only need one OID:
From table: bsnAPIfLoadParametersTable
Entry: bsnAPIfLoadNumOfClients
Numerical OID: 1.3.6.1.4.1.14179.2.2.13.1.4

And if we do a snmpwalk on it we will find that there is a bit more work to do.
Why?
Because Cisco APs connected to given controller are identified in SNMP database by a string o random values preceded by a single 0 (zero) like this: 0.31.155.25.136.80 .
Also will can see that each AP has two OIDs. One ending with ".0" other with ".1".
Thats because the APs can work in one of two modes: a/h or b/g/n.

So in order to get the correct data (via smnpget) we need to join the OIDs into one string like this:
1.3.6.1.4.1.14179.2.2.13.1.4.0.31.155.25.136.8.0

Here is an example command:
snmpget -c public 192.168.200.100 -Ovq 1.3.6.1.4.1.14179.2.2.13.1.4.0.31.155.25.136.8.0

The output would be for example:
5

The -O parameter controls output of snmpget.
  • 'v' - does not print OID string,
  • 'q' - quick print values (without the value type) - makes parsing of output much simpler
Here is a link to a Perl script I created for Nagios/Opsview:
http://www.monitoringexchange.org/inventory/Check-Plugins/Network/Cisco-AP-Client-number


Second monitor - Profile status of given AP

This will tell us the profile status of one particular Cisco Airespace Access Point

For that we need 4 OIDs:
From table: bsnAPIfProfileStateTable
1.3.6.1.4.1.14179.2.2.16.1.1
1.3.6.1.4.1.14179.2.2.16.1.2
1.3.6.1.4.1.14179.2.2.16.1.3
1.3.6.1.4.1.14179.2.2.16.1.24

The values of those OIDs are: Passed or Failed.

Word on profiles:
There are 4:
  • load   (...14179.2.2.16.1.1)
  • noise   (...14179.2.2.16.1.3)
  • interference   (...14179.2.2.16.1.2)
  • coverage   (...14179.2.2.16.1.24)
Each one is defined by set of values defined in Wireless Controller. WLC checks if those conditions ore met by an AP. If so the given profile status is passed.


Here is a link to a Perl script I created for Nagios/Opsview:
http://www.monitoringexchange.org/inventory/Check-Plugins/Hardware/Network/Network-Gear/Cisco-AP-Profile-Status


Third monitor - basic traffic information of given AP

Those OIDs will give us information on total send and receive utilization (in %) as well as channel number and its utilization. Another information that should be checked is th operations status of the AP

For that we need few more OIDs:
From table: bsnAPTable
Administrative Status: 1.3.6.1.4.1.14179.2.2.1.1.37
The value of this OID can be: 
1 - enable
2 - disable

Operational Status: 1.3.6.1.4.1.14179.2.2.1.1.6
The value of this OID can be:
1 - associated
2 - disassociating
3 - downloading 

From table: bsnAPIfLoadParametersTable
TX utilization: 1.3.6.1.4.1.14179.2.2.13.1.1
RX utilization: 1.3.6.1.4.1.14179.2.2.13.1.2
Channel utilization: 1.3.6.1.4.1.14179.2.2.13.1.3
The value of those OIDs are given in %.
There are global values of the AP (not on per client basis)
 


And the number of channel used by this AP we get from table: bsnAPIfTable
1.3.6.1.4.1.14179.2.2.2.1.4

Here is a link to a Perl script I created for Nagios/Opsview:
http://www.monitoringexchange.org/inventory/Check-Plugins/Hardware/Network/Network-Gear/Cisco-AP-Traffic

5 comments:

  1. Hello- Thanks for the article.. You noted: "Why?
    Because Cisco APs connected to given controller are identified in SNMP database by a string o random values preceded by a single 0 (zero) like this: 0.31.155.25.136.80 ".

    This isn't a string of random values, and while it will probably begin with zero, it won't always. These last 6 values in the OID is decimal value of the device MAC address.

    It is very useful as it can be used to easily get to an entry in a table if/when you know the mac address..

    ReplyDelete
  2. Almost Awesome admin ;-)

    Adjusted Perl script with:

    num_of_ap=`/usr/bin/snmpwalk -v 2c -c $community $hostname 1.3.6.1.4.1.14179.2.2.1.1.37 | grep -v "No Such Instance currently exists at this OID" | wc -l`

    because 0 accesspoints reports still 1 line:
    /etc/nagios/objects > /usr/bin/snmpwalk -v 2c -c c community host 1.3.6.1.4.1.14179.2.2.1.1.37
    SNMPv2-SMI::enterprises.14179.2.2.1.1.37 = No Such Instance currently exists at this OID

    ReplyDelete
  3. Please let me know you mean to say that we walk/poll the device(WLC) with this OID 1.3.6.1.4.1.14179.2.2.13.1.4
    and then add the result obtained back to this OID 1.3.6.1.4.1.14179.2.2.13.1.4 and then again do a walk ?

    ReplyDelete
  4. im new to nagios .. how would you implement this into the cofig files for nagios?

    ReplyDelete
  5. Thank you! It help me a lot.

    ReplyDelete

Feedback is always welcome