Solarwinds Platform 2022.3 integration with Meraki SD-WAN

Hello THWACK members!

I recently installed the Solarwinds Platform 2022.3 RC2 to test out the API integration with Meraki (MX especially).

Following the steps from Monitor SD-WAN for Meraki organizations with Hybrid Cloud Observability takes me to the Network Sonar discovery wizard filled in with names/IPs of the Meraki devices, but the IPs there are from WAN interfaces of Meraki MX, which often are not reachable (due to NAT, but also because we don't allow SNMP on WAN interface). Additionally the validation fails because the names of Meraki are not resolvable via DNS.

Can someone advise how this Meraki monitoring is supposed to work? Why do we need SNMP discovery (according to the guide mentioned above) if this was supposed to be API?

Thanks for your inputs!

/edit 20220908/

As this looks to be missing feature I created a Feature Request here: https://thwack.solarwinds.com/product-forums/hybrid-cloud-observability/i/feature-requests/enhanced-meraki-sd-wan-integration-via-api-compared-to-2022-3-rc2.

Please vote up and add comments on other features for Meraki API integration you consider missing but useful.

/edit/

/edit 20221020/

As this is valid also for 2022.3 GA I updated the subject.

/edit/

Parents
  • Another point I found not working correctly in 2022.3 is that for some models of Meraki MX (e.g. MX67, MX85, MX100, MX450) the integration of WAN Uplink and Interface does not work correctly (the icon in the WAN Uplink view remains gray and you cannot drill down to the Interface). It is also visible in the table in the database (no value).

    I have a support case opened for this. I will update here with the results.

  • After looking into this with support we found some settings in the Advanced Configuration, in section Orchestrators.Meraki. I modified the below listed settings with values as shown:

    CdpLldpInterfacesMappingJson

    {
        "MX64": {
            "wan0": "wan1",
            "port1": "lan1",
            "port2": "lan2",
            "port3": "lan3",
            "port4": "lan4",
            "wan1": "lan4"
        },
        "MX64W": {
            "wan0": "wan1",
            "port1": "lan1",
            "port2": "lan2",
            "port3": "lan3",
            "port4": "lan4",
            "wan1": "lan4"
        },
        "MX67": {
            "wan0": "port1",
            "wan1": "port2",
            "port2": "port2",
            "port3": "port3",
            "port4": "port4",
            "port5": "port5"
        },
        "MX67C": {
            "wan0": "port1",
            "wan1": "port2",
            "port2": "port2",
            "port3": "port3",
            "port4": "port4",
            "port5": "port5"
        },
        "MX67W": {
            "wan0": "port1",
            "wan1": "port2",
            "port2": "port2",
            "port3": "port3",
            "port4": "port4",
            "port5": "port5"
        },
        "MX68": {
            "wan0": "port1",
            "wan1": "port2",
            "port2": "port2",
            "port3": "port3",
            "port4": "port4",
            "port5": "port5",
            "port6": "port6",
            "port7": "port7",
            "port8": "port8",
            "port9": "port9",
            "port10": "port10",
            "port11": "port11",
            "port12": "port12"
        },
        "MX68C": {
            "wan0": "port1",
            "wan1": "port2",
            "port2": "port2",
            "port3": "port3",
            "port4": "port4",
            "port5": "port5",
            "port6": "port6",
            "port7": "port7",
            "port8": "port8",
            "port9": "port9",
            "port10": "port10",
            "port11": "port11",
            "port12": "port12"
        },
        "MX68CW": {
            "wan0": "port1",
            "wan1": "port2",
            "port2": "port2",
            "port3": "port3",
            "port4": "port4",
            "port5": "port5",
            "port6": "port6",
            "port7": "port7",
            "port8": "port8",
            "port9": "port9",
            "port10": "port10",
            "port11": "port11",
            "port12": "port12"
        },
        "MX84": {
            "wan0": "port1",
            "wan1": "port2",
            "port3": "port3",
            "port4": "port4",
            "port5": "port5",
            "port6": "port6",
            "port7": "port7",
            "port8": "port8",
            "port9": "port9",
            "port10": "port10",
            "port11": "port11",
            "port12": "port12"
        },
        "MX85": {
            "wan0": "port1",
            "wan1": "port2",
            "wan0": "port3",
            "wan1": "port4",
            "port5": "port5",
            "port6": "port6",
            "port7": "port7",
            "port8": "port8",
            "port9": "port9",
            "port10": "port10",
            "port11": "port11",
            "port12": "port12",
            "port13": "port13"
        },
        "MX100": {
            "wan0": "port1",
            "wan1": "port2",
            "port2": "port2",
            "port3": "port3",
            "port4": "port4",
            "port5": "port5",
            "port6": "port6",
            "port7": "port7",
            "port8": "port8",
            "port9": "port9",
            "port10": "port10",
            "port11": "port11"
        },
        "MX105": {
            "wan0": "port1",
            "wan1": "port2",
            "wan0": "port3",
            "wan1": "port4",
            "port5": "port5",
            "port6": "port6",
            "port7": "port7",
            "port8": "port8",
            "port9": "port9",
            "port10": "port10"
        },
        "MX450": {
            "wan0": "port1",
            "wan1": "port2",
            "port3": "port3",
            "port4": "port4",
            "port5": "port5",
            "port6": "port6",
            "port7": "port7",
            "port8": "port8",
            "port9": "port9",
            "port10": "port10",
            "port11": "port11",
            "port12": "port12",
            "port13": "port13",
            "port14": "port14",
            "port15": "port15",
            "port16": "port16",
            "port17": "port17",
            "port18": "port18",
            "port19": "port19",
            "port20": "port20",
            "port21": "port21",
            "port22": "port22",
            "port23": "port23",
            "port24": "port24",
            "port25": "port25",
            "port26": "port26"
        },
        "Z3": {
            "wan0": "port1",
            "port2": "port2",
            "port3": "port3",
            "port4": "port4",
            "port5": "port5"
        },
        "Z3C": {
            "wan0": "port1",
            "port2": "port2",
            "port3": "port3",
            "port4": "port4",
            "port5": "port5"
        },
        "VMX-L": {
            "wan0": "port1"
        }
    }


    DeviceWanPortsCountByModelJson

    {
        "MX64": 1,
        "MX64W": 1,
        "MX67": 1,
        "MX67W": 1,
        "MX67C": 1,
        "MX68": 2,
        "MX68W": 2,
        "MX68CW": 2,
        "MX75": 3,
        "MX84": 2,
        "MX85": 4,
        "MX95": 4,
        "MX100": 1,
        "MX105": 4,
        "MX250": 2,
        "MX450": 2,
        "Z3": 1,
        "Z3C": 1,
        "VMX-M": 2
    }
    


    UplinksInterfacesMappingJson

    {
    "MX64": {
    "wan1": "wan1",
    "wan2": "lan4"
    },
    "MX67": {
    "wan1": "port1",
    "wan2": "port2"
    },
    "MX67C": {
    "wan1": "port1",
    "wan2": "port2"
    },
    "MX67W": {
    "wan1": "port1",
    "wan2": "port2"
    },
    "MX68": {
    "wan1": "port1",
    "wan2": "port2"
    },
    "MX68C": {
    "wan1": "port1",
    "wan2": "port2"
    },
    "MX68CW": {
    "wan1": "port1",
    "wan2": "port2"
    },
    "MX84": {
    "wan1": "port1",
    "wan2": "port2"
    },
    "MX85": {
    "wan1": "port1",
    "wan2": "port2",
    "wan1": "port3",
    "wan2": "port4"
    },
    "MX100": {
    "wan1": "port1",
    "wan2": "port2"
    },
    "MX105": {
    "wan1": "port1",
    "wan2": "port2",
    "wan1": "port3",
    "wan2": "port4"
    },
    "MX450": {
    "wan1": "port1",
    "wan2": "port2"
    },
    "VMX-M": {
    "wan1": "wan0",
    "wan2": "wan1"
    }
    }

    Note that this cover the models I have in my network and I'm still testing things, so it's not 100% guaranteed to work until/unless confirmed by SolarWinds Support (or implemented in the next release).

  • @maciej.sandecki did you get any feedback on your feature request? and is the advanced configuration for Meraki that you did, is that in the Meraki Cloud? Pls advise.

  •  the only response for the FR I got was in the comments, from . The advanced configuration was done in SolarWinds (Access the Advanced Configuration settings in the Orion Web Console (solarwinds.com)).

  • The Edge devices are monitored via SNMP, not via API.  Only the Orchestrator is monitored via the API and we can get a list of Edge devices via the API, which is what we pass into the discovery engine to monitor via SNMP.

  • I understand this is how it is working now, but for the reasons I highlighted in my initial post (Meraki MX behind a NAT, SNMP available via LAN only), ability to add Meraki MX as a node only when it's reachable via SNMP is not enough.

    I think it would be better if we had the option to add Meraki MX as a node with monitoring coming via API via dashboard + enrichment via SNMP. This would provide visibility for all Meraki MXs, all spares, uplinks and some additional information for devices reachable via SNMP.

Reply
  • I understand this is how it is working now, but for the reasons I highlighted in my initial post (Meraki MX behind a NAT, SNMP available via LAN only), ability to add Meraki MX as a node only when it's reachable via SNMP is not enough.

    I think it would be better if we had the option to add Meraki MX as a node with monitoring coming via API via dashboard + enrichment via SNMP. This would provide visibility for all Meraki MXs, all spares, uplinks and some additional information for devices reachable via SNMP.

Children