The purpose of this topic is to share with you the solution to obtain the number of users connected on an access point, and the way to find it.
The target
The first and obvious solution was to use the Centreon plugin dedicated for this service : centreon_cisco_wlc.pl, with the ap-users mode. The syntax is like this :
/usr/lib/centreon/plugins//centreon_cisco_wlc.pl --plugin=network::cisco::wlc::snmp::plugin
--mode=ap-users --hostname=x.x.x.x --snmp-community='x' --snmp-version=2c
--filter-group='' --warning-total='' --critical-total='' --snmp-autoreduce --snmp-timeout=30 --filter-counters='^ap'
--filter-ap='apName'
The important point is the IP to provide is Wireless Controller’s IP.
The issue
When there is only few access points (AP) associated to the wireless controller, the plugin works fine ; but when many access points are connected to the wireless controller (WLC), many UNKNOWN issues can appear. To understand the root cause of this behaviour, tcpdump and Wireshark are good tools to troubleshoot.
The result of the analysis is the following :
- The poller sends a request to know the name of all the AP
- It receives all the answers
- It asks the user number to all the AP
- It receives all the answers
- It matches 2. and 4. answers, and publishes the result
This process is done for all the AP, so it’s very resource consuming, and can create UNKNOWN alerts.
How to obtain the number of user ?
The value can be found with a MIB (mibs.observium.org/mib/AIRESPACE-WIRELESS-MIB/), bsnAPIfLoadNumOfClients, which is .1.3.6.1.4.1.14179.2.2.13.1.4.
But it’s not enough, because the AP is missing on this MIB. The complete MIB is given by .1.3.6.1.4.1.14179.2.2.13.1.4.A.B.C.D.E.F.a (a is 0 for 2.4 GHz and 1 for 5 GHz).
What is A.B.C.D.E.F ?
It was the more difficult point to fix on this investigation. It comes from the Radio MAC address of the access point. If the Radio MAC is ab12.cd34.ef56, then the conversion provides 171.18.205.52.239.86.
So finally, for this AP, the number of users is given by :
- .1.3.6.1.4.1.14179.2.2.13.1.4.171.18.205.52.239.86.0 (2.4 GHz)
- .1.3.6.1.4.1.14179.2.2.13.1.4.171.18.205.52.239.86.1 (5 GHz)
How to display the value ?
The last step is to create the service with the value. It seems better to group both values (2.4 and 5 GHz) on the same service, with this syntax :
/usr/lib/centreon/plugins//centreon_generic_snmp.pl --plugin=apps::protocols::snmp::plugin
--mode=numeric-value --hostname=x.x.x.x --snmp-community='x' --snmp-version=2c
--oid='' --format='current value is %s' --warning= --critical=
--config-json='/ { "oid": "1.3.6.1.4.1.14179.2.2.13.1.4.171.18.205.52.239.86.0","perfdata_name": "2.4GHz", "format": "2.4GHz users %s"},{ "oid": "1.3.6.1.4.1.14179.2.2.13.1.4.171.18.205.52.239.86.1", "perfdata_name": "5GHz", "format": "5GHz users %s"} ]' --snmp-timeout=30

Hoping it can be an help for some of you,