Cisco Meraki SNMP does not show LLDP neighbors or generate a network map in LibreNMS

Hi,

I was just curious why LibreNMS doesn’t seem to provide very much information when monitoring Meraki devices via SNMP. Is this a limitation on the Meraki side? It is possible to get it to show this information in LibreNMS?

I am trying to get LibreNMS to automatically map out our networks, but the Meraki switches don’t seem to report any direct connections/neighbors for some reason. It is worth noting, that in the Meraki dashboard itself it does report what is connected to each port. This information is simply not in LibreNMS.

As a side note, I have a mix of UniFi switches being monitored as well, and LibreNMS will accurately map out and report the neighbor of each UniFi switch.

validate.php:

Component Version
LibreNMS 22.1.0-19-ga1c6b735b
DB Schema 2021_11_29_165436_improve_ports_search_index (229)
PHP 7.4.16
Python 3.9.5
MySQL 10.3.29-MariaDB-0ubuntu0.20.10.1
RRDTool 1.7.2
SNMP 5.9

====================================

[OK] Composer Version: 2.2.4
[OK] Dependencies up-to-date.
[OK] Database connection successful
[OK] Database schema correct

Does Meraki support some form of xDP protocol like LLDP? If not, that’s why. If it does, provide the output of ./discovery.php -h HOSTNAME -d -v -m discovery-protocols

Yes, Meraki uses LLDP and it is enabled by default.

Here are the results of the command you provided that I ran against a Meraki switch being monitored:

  • 1 devices discovered in 1.234 secs

SNMP [2/0.02s]: Snmpget[2/0.02s]
SQL [13/0.07s]: Select[11/0.05s] Delete[1/0.00s] Update[1/0.02s]
RRD [0/0.00s]:

Theirs got to be more output than that?

It seems like this is all I am seeing. Maybe a limitation of Meraki SNMP?

For some reason it is displaying more info now… maybe I did something wrong the first time. Here is the output:

./discovery.php -h 10.1.1.100 -d -v -m discovery-protocols
LibreNMS Discovery
SQL[select `migration` from `migrations` order by `id` desc limit 1 [] 0.35ms]

SQL[select count(*) as aggregate from `migrations` limit 1 [] 0.3ms]

SQL[select version() [] 0.15ms]

===================================
Version info:
Commit SHA: e04902b4d1d5a4e6782a5d6a4f217d40c4d2ccb4
Commit Date: 1643324100
DB Schema: 2021_11_29_165436_improve_ports_search_index (229)
PHP: 7.4.16
MySQL: 10.3.29-MariaDB-0ubuntu0.20.10.1
RRDTool: 1.7.2
SNMP: 5.9
==================================DEBUG!
Updating os_def.cache
Override discovery modules: discovery-protocols
SQL[SELECT * FROM `devices` WHERE disabled = 0 AND `hostname` LIKE '10.1.1.100' ORDER BY device_id DESC [] 0.66ms]

SQL[select * from `devices` where `device_id` = ? limit 1 [296] 0.27ms]

SQL[select * from `devices_attribs` where `devices_attribs`.`device_id` = ? and `devices_attribs`.`device_id` is not null [296] 0.17ms]

10.1.1.100 296 merakims [FPING] '/usr/bin/fping' '-e' '-q' '-c' '3' '-p' '500' '-t' '500' '-O' '0' '10.1.1.100'

response: xmt/rcv/%loss = 3/3/0%, min/avg/max = 0.741/0.851/1
SNMP['/usr/bin/snmpget' '-M' '/opt/librenms/mibs' '-v2c' '-c' 'string' '-OQXUte' 'udp:10.1.1.100:161' 'SNMPv2-MIB::sysObjectID.0']
SNMPv2-MIB::sysObjectID.0 = SNMPv2-SMI::enterprises.29671.2.325


Modules status: Global+
OS
Device

#### Load disco module core ####
Attempting to initialize OS: merakims
OS initialized as Generic
SNMP['/usr/bin/snmpget' '-M' '/opt/librenms/mibs' '-v2c' '-c' 'string' '-OQXUte' '-On' 'udp:10.1.1.100:161' 'SNMPv2-MIB::sysObjectID.0' 'SNMPv2-MIB::sysDescr.0' 'SNMPv2-MIB::sysName.0']
.1.3.6.1.2.1.1.2.0 = .1.3.6.1.4.1.29671.2.325
.1.3.6.1.2.1.1.1.0 = Meraki MS425-16 Cloud Managed Switch
.1.3.6.1.2.1.1.5.0 = SW-MDF-AGG-1


| Meraki MS425-16 Cloud Managed Switch | .1.3.6.1.4.1.29671.2.325 |

OS: Meraki Switch (merakims)

Attempting to initialize OS: merakims
OS initialized as Generic

>> Runtime for discovery module 'core': 0.0150 seconds with 196296 bytes
>> SNMP: [1/0.01s] MySQL: [0/0.00s] RRD: [0/0.00s]
#### Unload disco module core ####

Modules status: Global+
OS
Device

#### Load disco module discovery-protocols ####
 CISCO-CDP-MIB: SNMP['/usr/bin/snmpbulkwalk' '-v2c' '-c' 'string' '-OQUsetX' '-m' 'CISCO-CDP-MIB' '-M' '/opt/librenms/mibs' 'udp:10.1.1.100:161' 'cdpCache']
Exitcode: 1
MIB search path: /opt/librenms/mibs
Cannot find module (CISCO-CDP-MIB): At line 12 in (none)
cdpCache: Unknown Object Identifier (Sub-id not found: (top) -> cdpCache)

MIB search path: /opt/librenms/mibs
Cannot find module (CISCO-CDP-MIB): At line 12 in (none)
cdpCache: Unknown Object Identifier (Sub-id not found: (top) -> cdpCache)

 LLDP-MIB: SNMP['/usr/bin/snmpbulkwalk' '-v2c' '-c' 'string' '-OQUsetX' '-m' 'LLDP-MIB' '-M' '/opt/librenms/mibs' 'udp:10.1.1.100:161' 'lldpRemTable']
lldpRemTable = No Such Object available on this agent at this OID


 OSPF Discovery: SQL[SELECT DISTINCT(`ospfNbrIpAddr`),`device_id` FROM `ospf_nbrs` WHERE `device_id`=? [296] 0.45ms]



SQL[SELECT * FROM `links` AS L, `ports` AS I WHERE L.local_port_id = I.port_id AND I.device_id = ? [296] 0.57ms]

SQL[DELETE T FROM `links` T LEFT JOIN `devices` ON `devices`.`device_id` = T.`local_device_id` WHERE `devices`.`device_id` IS NULL [] 0.25ms]

 0 orphaned links deleted

>> Runtime for discovery module 'discovery-protocols': 0.0240 seconds with 15944 bytes
>> SNMP: [0/0.00s] MySQL: [3/0.01s] RRD: [0/0.00s]
#### Unload disco module discovery-protocols ####

SQL[UPDATE `devices` set `last_discovered`=NOW(),`last_discovered_timetaken`=? WHERE `device_id` = ? [1.061,296] 1.69ms]

Discovered in 1.061 seconds

./discovery.php 10.1.1.100 2022-01-28 10:17:08 - 1 devices discovered in 1.231 secs

SNMP [2/0.02s]: Snmpget[2/0.02s]
SQL [13/0.07s]: Select[11/0.05s] Delete[1/0.00s] Update[1/0.02s]
RRD [0/0.00s]:

Meraki’s SNMP implementation is pathetic. Very little information is available in SNMP.

I kinda forced it to use a classic Cisco MIB, and that seems to be providing LLDP/CDP info now. Kinda hacky, but seems to be working. Not sure if there is a better option.

This topic was automatically closed 90 days after the last reply. New replies are no longer allowed.