Monitoring client connections on a cisco C9800-CL with 2.0.0p17 (CRE)

Hi everyone,

First of all, I’m French, so please forgive my possible mistakes in English :slightly_smiling_face:

I’m a beginner on checkMK and, after monitoring an old Cisco WLC with the 1.6 version, I try to do the same thing with a brand new controller (Cisco virtual C9800-CL) with the new 2.0 version…
And I don’t manage to get the number of clients connected to the three different SSID we have in the school.
I found how o get informations on the AP connected but I can’t go further…
Can anyone help me for this problem ?

Thanks.

Have a nice day,
Jean-Emmanuel

Hi @jehlp and welcome to the checkmk community.

The newer controllers are not recognized by checkmk because there ist another oid to check to determine the WLC device. We had this situation a few weeks ago and i created a pull request for the coding.
You can fix this by copying the file for the check (different directories between your versions) to the local path ~sitename/local/share/... and changing them. Take a look at the my pull request for details, if you need further help, let me know:

13611 FIX Add service detection for Cisco WLC C9800 · tribe29/checkmk@676234e (github.com)

There is even a difference between the C9800-L-C and C9800-C-L (appliance and virtual).

Please forgive my bad English, i am German :slight_smile:

1 Like

Hi @tosch and thank you for your reply.

I copy the file /opt/omd/versions/2.0.0p17.cre/lib/python3/cmk/base/plugins/agent_based/cisco_wlc.py to ~sitename/local/share/check_mk/agents/plugins and change it.
I add the two lines you mentioned in your pull request.
Nothing new.
I restart my site (omd stop, omd start).
Nothing new.
May I ask you if I made something wrong ?

Thanks a lot.

Have a nice day,
Jean-Emmanuel

Can you please check which oid is returned by querying the oid .1.3.6.1.2.1.1.2.0? This value is used to determine if the device is fitting the cisco_wlc check.
Don’t forget to reinventorize your host after the change.

This file needs to be copied to

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

There you can make then the modifications.

1 Like

Thanks @andreas-doehler, not yet familiar with the new file structure. :slight_smile:

Thanks to @andreas-doehler I copy the file on the right place : but nothing happens.

After that, I query the oid @tosch mentioned :

snmpwalk -v1 -c <community> <ip address> 1.3.6.1.2.1.1.2.0
iso.3.6.1.2.1.1.2.0 = OID: iso.3.6.1.4.1.9.1.2391

I replace .1.3.6.1.4.1.9.1.2860 by .1.3.6.1.4.1.9.1.2391 in the corrected plugin file, restart the site, full scan on the device : nothing new…
I noticed that there’s a new directory in ~sitename/local/lib/python3/cmk/base/plugins/agent_based : __pycache__

Did I do something wrong ?

Oh holy … i just realized, there is a whole extra section for 9800 devices at the cisco_wlc_clients check to handle them differently from other cisco WLCs. Seems like there is work too to get this working:

def parse_cisco_wlc_9800_clients(
    string_table: List[StringTable],
) -> WlcClientsSection[ClientsTotal]:
    section: WlcClientsSection[ClientsTotal] = WlcClientsSection()
    for (ssid_name,), (num_clients_str,) in zip(string_table[0], string_table[1]):
        num_clients = int(num_clients_str)
        section.total_clients += num_clients
        if ssid_name not in section.clients_per_ssid:
            section.clients_per_ssid[ssid_name] = ClientsTotal(0)
        section.clients_per_ssid[ssid_name].total += num_clients
    return section


register.snmp_section(
    name="cisco_wlc_9800_clients",
    parsed_section_name="wlc_clients",
    detect=matches(OID_sysObjectID, r"^\.1\.3\.6\.1\.4\.1\.9\.1\.2530"),
    parse_function=parse_cisco_wlc_9800_clients,
    fetch=[
        SNMPTree(
            base=".1.3.6.1.4.1.9.9.512.1.1.1.1",
            oids=[
                "4",  # CISCO-LWAPP-WLAN-MIB::cLWlanSsid
            ],
        ),
        SNMPTree(
            base=".1.3.6.1.4.1.14179.2.1.1.1",
            oids=[
                "38",  # AIRESPACE-WIRELESS-MIB::bsnDot11EssNumberOfMobileStations
            ],
        ),
    ],
)

The connected clients count isn’t important for us so i never have checked this before.

Ok, I’m ready to do the changes but I need to find the MIB to put the right base end oids in my modified plugins…
I will be back…

You can try to change this line and hope it will work already:

to
detect=matches(OID_sysObjectID, r"^\.1\.3\.6\.1\.4\.1\.9\.1\.(2530|2391)"),

The searched values should be below the oid tree .1.3.6.1.4.1.9.9.512.1.1.1.1 for the SSIDs and below the oid tree .1.3.6.1.4.1.14179.2.1.1.1 for connected clients.

I tried…
Unfortunately, it does not work !!
I’m now looking for a login to the cisco web site to be able to download the MIB file…
I’ll give you all the knowledge I can after that…