Cisco WLC 9800 cannot detect APs

Hi
Check mk 2.0.0p23 raw here and i am trying to detect APs as services on a cisco WLC 9800 (appliance)
Even if i read it should be implemented within this version, i am not able to detect connected APs and wifi clients.
I tried to copy this file

in /opt/omd/sites/sitename/local/lib/python3/cmk/base/plugins/agent_based

without any success.
I believe i am missing something could you help please?

Thabnk you very much!

Hi @ercole77 and welcome to the check**mk* community.

Could you please provide a snmpwalk of the oid .1.3.6.1.4.1.9.1.?
Please note, my addition was for the WLC _C_9800

Thank you for your feedback and help!

Unluckily snmpwalk -v 1 -c public ip .1.3.6.1.4.1.9.1 returns nothing

Did you try a V2 walk instead of V1. V1 will not handle 64-Bit counters.

Regards,
Christian

Hi Christian

snmpwalk -v 2c -c public IP .1.3.6.1.4.1.9.1 returns
SNMPv2-SMI::enterprises.9.1 = No Such Object available on this agent at this OID

@tosch you are shure that .1.3.6.1.4.1.9.1 is the correct OID to check? After a qiuck look in the check files it looks like the content of .1.3.6.1.2.1.1.2.0 (sysObjectID) is the importent part for the check to discover a WLC.

@ercole77 can you check this OID please?

@thl-cmk thank you for your help
here is the result of snmpwalk -v2c -c public IP .1.3.6.1.2.1.1.2.0

SNMPv2-MIB::sysObjectID.0 = OID: SNMPv2-SMI::enterprises.9.1.2861

@thl-cmk @tosch
i have found the AP entries

snmpwalk -v2c -c public 10.243.252.10 .1.3.6.1.4.1.9.9.513.1.1.1.1.5

SNMPv2-SMI::enterprises.9.9.513.1.1.1.1.5.28.209.224.121.98.32 = STRING: “AP-xx-07”
SNMPv2-SMI::enterprises.9.9.513.1.1.1.1.5.228.78.45.55.16.192 = STRING: “AP-xx-04”
SNMPv2-SMI::enterprises.9.9.513.1.1.1.1.5.228.78.45.55.35.160 = STRING: “AP-xx-02”
SNMPv2-SMI::enterprises.9.9.513.1.1.1.1.5.228.78.45.55.87.96 = STRING: “AP-xx-01”
SNMPv2-SMI::enterprises.9.9.513.1.1.1.1.5.228.78.45.55.128.192 = STRING: “AP-xx-03”
SNMPv2-SMI::enterprises.9.9.513.1.1.1.1.5.228.78.45.55.136.192 = STRING: “AP-xx-05”
SNMPv2-SMI::enterprises.9.9.513.1.1.1.1.5.228.78.45.55.172.96 = STRING: “AP-xx-06”

ok this is a Cisco WLC C9800LFK9…

for now you could extend the WLC check with the content (1.3.6.1.4.1.9.1.2861) of the sysObjectID like in the werk you where refering to. The plugin should then discover your WLC as well.

for everyone how is interested this is the list of Cisco WLCs the check will discover right now:

".1.3.6.1.4.1.14179.1.1.4.3",    # productGroup3
".1.3.6.1.4.1.9.1.1069",         # cisco5500Wlc
".1.3.6.1.4.1.9.1.1279",         # ciscoAirCt2504K9
".1.3.6.1.4.1.9.1.1293",         # ciscoWiSM2
".1.3.6.1.4.1.9.1.1615",         # cisco8500WLC
".1.3.6.1.4.1.9.1.1631",         # ciscoVirtualWlc
".1.3.6.1.4.1.9.1.1645",         # cisco5760wlc
".1.3.6.1.4.1.9.1.2170",         # cisco5520WLC
".1.3.6.1.4.1.9.1.2171",         # cisco8540Wlc
".1.3.6.1.4.1.9.1.2250",         # 2006 (?) OID not found in the Cisco SNMP navigator
".1.3.6.1.4.1.9.1.2370",         # 4402 (?) OID not found in the Cisco SNMP navigator
".1.3.6.1.4.1.9.1.2371",         # 4404 (?) OID not found in the Cisco SNMP navigator
".1.3.6.1.4.1.9.1.2391",         # ciscoC9800CLK9
".1.3.6.1.4.1.9.1.2427",         # cisco3504WLC
".1.3.6.1.4.1.9.1.2530",         # ciscoC980040K9
".1.3.6.1.4.1.9.1.2860",         # ciscoC9800LCK9

@tribe: maybe you want to add these comments to the check :wink:

and this devices are still missing from the list:

".1.3.6.1.4.1.9.1.2861",   # ciscoC9800LFK9
".1.3.6.1.4.1.9.1.2669",   # ciscoC980080K9

".1.3.6.1.4.1.9.1.828",    # ciscoAirWlc2106K9
".1.3.6.1.4.1.9.1.1295",   # cisco7500Wlc
".1.3.6.1.4.1.9.1.1926",   # ciscoWlcCt5508K9
".1.3.6.1.4.1.9.1.1927",   # ciscoWlcCt2504K9
".1.3.6.1.4.1.9.1.2825",   # ciscoCMeWlc
".1.3.6.1.4.1.9.1.2026",   # catAIRCT57006
".1.3.6.1.4.1.9.1.2531",   # ciscoAIRCT9880K9

Cheers
Thomas

cisco_wlc.py (5.0 KB)

@thl-cmk no luck, this is the cisco_wlc.py file i am using copied in

/opt/omd/sites/sitename/local/lib/python3/cmk/base/plugins/agent_based/

i believe i am missing something, excuse me im not familiar with SNMP

your change looks ok. But the check looks under .1.3.6.1.4.1.14179.2.2.1.1 for it’s data… so you need to check if your device delivers the AP name from .1.3.6.1.4.1.14179.2.2.1.1.3 (bsnAPEntry) and the AP state from .1.3.6.1.4.1.14179.2.2.1.1.6 (bsnAPOperationStatus)

i believe yes,
i see

.1.3.6.1.4.1.14179.2.2.1.1.3.28.209.224.121.98.32 = STRING: “AP-NAME”

and

.1.3.6.1.4.1.14179.2.2.1.1.6.28.209.224.121.98.32 = INTEGER: 1

is there any particular activity i am supposed to do after i modify the cisco_wlc.py script besides a full scan of the host?

looks ok. You can try a cmk --detect-sections cisco_wlc -vII YOURHOST. This will skip the detect function and just tryes to fetch the data and if OK add the services.

@thl-cmk thanks

OMD[site]:~$ cmk --detect-sections cisco_wlc -vII wlc-controller1

Error in agent based plugin cisco_wlc: Wrong type annotation: cluster sections must be of type Mapping[str, Optional[<NodeSection>]]
Discovering services and host labels on: wlc-controller1
wlc-controller1:

  • FETCHING DATA
    [TCPFetcher] Execute data source
    [SNMPFetcher] Execute data source
    [PiggybackFetcher] Execute data source
    No piggyback files for ‘wlc-controller1’. Skip processing.
    No piggyback files for ‘10.243.252.10’. Skip processing.
  • ANALYSE DISCOVERED HOST LABELS
    SUCCESS - Found no host labels
  • ANALYSE DISCOVERED SERVICES
  • EXECUTING DISCOVERY PLUGINS (0)
    SUCCESS - Found no services

looks like the check on your system has some coding issues :frowning:

If you have a look at the actual version on github you can see in line 115 the key word Optional, this is missing in your check.

def cluster_check_cisco_wlc(
    item: str,
    params: Mapping[str, Any],
    section: Mapping[str, Optional[Section]],
) -> CheckResult:

if you add this to your check, you also need to adjust the import statement in line 36

from typing import Any, Dict, List, Mapping, Optional

@thl-cmk thank you a lot
i have substituted the file with the original plus your additional line

it is weird now i can detect the AP with

cmk --detect-sections cisco_wlc -vII wlc-controller1
Discovering services and host labels on: wlc-controller1
wlc-controller1:

  • FETCHING DATA
    [SNMPFetcher] Execute data source
    [PiggybackFetcher] Execute data source
    No piggyback files for ‘wlc-controller1’. Skip processing.
    No piggyback files for ‘10.243.252.10’. Skip processing.
  • ANALYSE DISCOVERED HOST LABELS
    SUCCESS - Found no host labels
  • ANALYSE DISCOVERED SERVICES
  • EXECUTING DISCOVERY PLUGINS (1)
    7 cisco_wlc
    SUCCESS - Found 7 services

but when i edit the service configuration in the GUI i see the APs all vanished.
its like the command is able to use the plugin but the GUI doesnt

EDIT: i was missing a section now it works!!!

Next step…how can add the the clients for SSIDs ?

Hey @thl-cmk,

will you create a PR or should i try my luck to get it in? :slight_smile:

@tosch I will not. My build system is not up to date right now. So I let you try :slight_smile: