Basic Cisco Meraki hardware support
Hi Adam/All
I may have missed how to make a more formal submission for hardware support, so if there is one let me know.
However, I suspect the mailing list is probably a good arena for any criticism/pointers on what to do better/what not to do when attempting to add new device support.
--
I’ve recently been involved in the installation of equipment and support for a mobile medical facility.
We’ve used Meraki switches and access points for a number of reasons, not least of which is the instant monitoring/alerts capability, web based management, web based troubleshooting capabilities and easy provisioning of equipment when it needs to be replaced.
As much as the Meraki web management portal is useful, it’s not necessarily always available in this facility and we needed a local management system/interface to monitor the equipment, alert local users to any failures/problems, and provide a quick and easy “view” for all of the ICT equipment within the mobile facility.
So, I used Observium, but needed to add support for the Meraki components.
Meraki provide an SNMP interface to their cloud management platform. It’s basically useless if talking directly to equipment as there’s currently no extra information you can extract from the devices themselves.
The Meraki Cloud Controller MIB can be obtained here, https://n85.meraki.com/resources/MERAKI-CLOUD-CONTROLLER-MIB.mib
Their cloud controller itself looks like the below. I don't really want to add this to Observium myself but have included the OID for detection and possible to for additional inventory collection at a later date. Strip it out if necessary.
<pre class="prettyprint"><code>SNMPv2-MIB::sysDescr.0 = STRING: Cisco Meraki Cloud Controller SNMPv2-MIB::sysObjectID.0 = OID: MERAKI-CLOUD-CONTROLLER-MIB::cloudController DISMAN-EVENT-MIB::sysUpTimeInstance = INTEGER: -1685384396 SNMPv2-MIB::sysContact.0 = STRING: support@meraki.com SNMPv2-MIB::sysName.0 = STRING: dashboard.meraki.com SNMPv2-MIB::sysLocation.0 = STRING: 500 Terry Francois St., San Francisco, CA 94158, USA</code></pre>
AP's basically look like this,
SNMPv2-MIB::sysDescr.0 = STRING: Meraki MR18 Cloud Managed AP SNMPv2-MIB::sysObjectID.0 = OID: MERAKI-CLOUD-CONTROLLER-MIB::mr18 SNMPv2-MIB::sysORID.1 = OID: SNMPv2-MIB::snmpMIB SNMPv2-MIB::sysORID.2 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup SNMPv2-MIB::sysORID.3 = OID: IF-MIB::ifMIB SNMPv2-MIB::sysORID.4 = OID: IEEE802dot11-MIB::ieee802dot11 SNMPv2-MIB::sysORDescr.1 = STRING: The MIB module for SNMPv2 entities SNMPv2-MIB::sysORDescr.2 = STRING: View-based Access Control Model for SNMP. SNMPv2-MIB::sysORDescr.3 = STRING: The MIB module to describe generic objects for network interface sub-layers SNMPv2-MIB::sysORDescr.4 = STRING: The MIB module for managing 802.11 implementations SNMPv2-MIB::sysORUpTime.1 = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::sysORUpTime.2 = Timeticks: (0) 0:00:00.00 SNMPv2-MIB::sysORUpTime.3 = Timeticks: (3) 0:00:00.03 SNMPv2-MIB::sysORUpTime.4 = Timeticks: (3) 0:00:00.03</code></pre>
MIB support from the sysORID list appears to be correct, I couldn't discover anything else on the MR18 and MR34 AP's.
Switches basically look like this,
SNMPv2-MIB::sysDescr.0 = STRING: Meraki MS220-24P Cloud Managed PoE Switch SNMPv2-MIB::sysObjectID.0 = OID: MERAKI-CLOUD-CONTROLLER-MIB::merakiProducts.307 SNMPv2-MIB::sysName.0 = STRING: truck01-s1 SNMPv2-MIB::sysORID.1 = OID: SNMPv2-MIB::snmpMIB SNMPv2-MIB::sysORID.2 = OID: SNMP-VIEW-BASED-ACM-MIB::vacmBasicGroup SNMPv2-MIB::sysORID.3 = OID: IF-MIB::ifMIB SNMPv2-MIB::sysORDescr.1 = STRING: The MIB module for SNMPv2 entities SNMPv2-MIB::sysORDescr.2 = STRING: View-based Access Control Model for SNMP. SNMPv2-MIB::sysORDescr.3 = STRING: The MIB module to describe generic objects for network interface sub-layers SNMPv2-MIB::sysORUpTime.1 = Timeticks: (1) 0:00:00.01 SNMPv2-MIB::sysORUpTime.2 = Timeticks: (2) 0:00:00.02 SNMPv2-MIB::sysORUpTime.3 = Timeticks: (22) 0:00:00.22</code></pre>
MIB support from the sysORID list is not quite correct, MS220-24P also supports the BRIDGE-MIB.
I don't have access to any of the security appliances at this time but the OID should be under .1.3.6.1.4.1.29671.2. anyway, so I believe Observium will auto-detect and add those too.
Attached is a 32x32 icon I created from the logo available on the partner website, which can be placed in html/images/os/meraki.png
OS definition for includes/definitions/os.inc.php
$os = "meraki"; $config['os'][$os]['text'] = "Cisco Meraki"; $config['os'][$os]['type'] = "network"; $config['os'][$os]['icon'] = "meraki"; $config['os'][$os]['sysObjectID'][] = ".1.3.6.1.4.1.29671.1"; // Cloud controller $config['os'][$os]['sysObjectID'][] = ".1.3.6.1.4.1.29671.2."; // Hardware $config['os'][$os]['mibs'][] = "IEEE802dot11-MIB"; $config['os'][$os]['mibs'][] = "BRIDGE-MIB"; $config['os'][$os]['mibs'][] = "MERAKI-CLOUD-CONTROLLER-MIB";</code></pre>
Basic poller support to grab the hardware model/platform type
includes/polling/os/meraki.inc.php
<?php
if (preg_match('/^Meraki ([A-Z-_0-9]+) (.*)/', $poll_device['sysDescr'], $regexp_result)) { $hardware = $regexp_result[1]; $platform = $regexp_result[2]; }
// EOF
-Colin
participants (1)
-
Colin Stubbs