3 years ago
Manual topology mapping
After years of suffering with the horrific (and broken) topology mapping, how about just giving us the ability to create our own dependencies/maps, similar to The Dude or MangeEngine's OpManager?
After years of suffering with the horrific (and broken) topology mapping, how about just giving us the ability to create our own dependencies/maps, similar to The Dude or MangeEngine's OpManager?
This is currently being worked on. We recognize the need to be able to fill in the gaps and correct things to get complete maps and facilitate RCA. I'm hesitant to post mockups here, but if you'd like to see the design we're working on I'd love to get some time on any of your calendar's to show you and get some feedback. Your CSM can arrange this if you just ask them for some time with Michael to see the "manual mapping" concept.
As it stands now, you'd be able to drag and drop one node onto another. This would bring up a dialog that would let you input the edge type, direction, and in some cases allow you to search for an instance on the dragged device. But big picture, the goal is to allow you to create edges without having to write code, or even leave the mapping canvas.
Agreed, this needs a simple UI designer.
Check out the learning bytes in the training portal. There's one called "Manual Topology Mapping". Maybe one of these days i'll make a UI where you can pick and choose the things you want related and it'll just spit out the topology source...
As it stands now, you'd be able to drag and drop one node onto another. This would bring up a dialog that would let you input the edge type, direction, and in some cases allow you to search for an instance on the dragged device. But big picture, the goal is to allow you to create edges without having to write code, or even leave the mapping canvas.
I wanted to give this a bump here: This isn’t functioning if it is supposed to be in place.
at best, the “Manual Mapping” option lets you attempt to create a line between two objects, but when you do make this attempt a prompt appears stating: “Both Source and Target should have External Resource ID (ERI) defined.” or, when both have an ERI defined: “The selected source node doesn't have valid instance available, manual edge can not be created.”
So multiple Edges on devices with ERI’s can’t be created due to this.
While I understand that this feature, in particular, is currently in testing… The entire community has voiced that the Topology feature, as it stands, is in dire need of revision and Dev attention.
Version 1.86 has only made things worse.
From our Support Docs…
Topology Mapping Overview | LogicMonitor
https://www.logicmonitor.com/support/forecasting/topology-mapping/topology-mapping-overview
LogicMonitor’s topology mapping capabilities are focused on layer 2 and layer 3 mapping. Specifically, the LogicMonitor platform leverages Link Layer Discovery Protocol (LLDP), Cisco Discovery Protocol (CDP), Border Gateway Protocol (BGP), Open Shortest Path First (OSPF), and Enhanced Interior Gateway Routing Protocol (EIGRP) to dynamically generate network topology maps that show how data flows among the many resources (switches, hosts, firewalls, routers, and other network components) in your environment.
Look in exchange for L3X4CH "Manual topology mapping"
Set 'manual.upstream.deviceid' as a property, and give it the Device ID number(s) of the parent resource(s) separated by a comma.
In cases where topo.namespace by the upstream device(s) you must provide the namespace(s) of the upstream device(s) using 'manual.upstream.namespace' separated by a comma. Use "none" if no namespace is required for one of a subset of device/namespaces e.g. namespace1,none,namespace2
Just tag devices from bottom up and it done! ie DB -> Web -> LoadBalancer
>> Look in exchange for L3X4CH "Manual topology mapping"
Michael_BakerJust to make sure that I'm not being lame, you're saying there's a manual topology mapping module we can download from Exchange? I ask because in looking, I'm not seeing one.
That may be one way. Another way is to use the built in manual mapping option.
I did find that module in the exchange. It was built before LM had the aforementioned manual option. It's probably still valid though.
This is basically what you need for the configsource for CDP, but I can see why they didn’t do it. The problem is IP address reusage. This toposource outputs the mac address of the queried device as the “from” node and outputs the IP addresses of its neighbors as the “to” nodes. The problem is that the IP address needs to be an ERI on the neighbor in LM. So, an ERI source would have to go along with this to make the IP addresses into ERIs on the device. At that point you run the risk of ERI collision/merging issues if IP addresses are reused somewhere else in the network. I suppose topo.namespace would be the way to mitigate this. Basically each customer (for MSPs) would have to have a namespace, then each IP network would have to have a sub-namespace (combination of the customer namespace and the network’s namespace).
import com.santaba.agent.groovyapi.snmp.Snmp
import groovy.json.*
Oid = "1.3.6.1.4.1.9.9.23.1.2.1.1"
wildvalueTerms = 2
def host = hostProps.get('system.hostname')
def props = hostProps.toProperties()
int timeout = 10000 // 10 sec timeout.
def eris = hostProps.get('predef.externalResourceID')
eri = eris.tokenize(",")[0]
eri = eri.split("::")[-1]
def snmpMapToTable(snmpmap, int wildvalueTerms = 1) {
rows = [:]
snmpmap.each {k,v ->
splits = k.tokenize(".")
col = splits.dropRight(wildvalueTerms).join(".")
wildvalue = splits.takeRight(wildvalueTerms).join(".")
if (!(rows.containsKey(wildvalue))) { rows[wildvalue] = [:] }
rows[wildvalue][col] = v
}
return rows
}
try {walkResult = Snmp.walkAsMap(host, Oid, props, timeout)}
catch (Exception e) {println(e);return 1}
try {entryRaw = snmpMapToTable(walkResult, wildvalueTerms)}
catch (Exception e) {println(e);return 2}
output = ["edges": entryRaw.collect{k,v-> ["type": "Network", "from": eri, "to": v["4"].tokenize(":").collect{address -> Integer.parseInt(address, 16)}.join(".")]}]
println(new JsonBuilder(output).toPrettyString())
return 0
Not sure how else I can help here.
My understanding is that we support building maps out based on LLDP and CDP data. I’ve asked the TopologySource SME to confirm. We actually can get a lot more when these protocols are enabled. Often, users will disable them for security reasons.
Were there other issues you were referring to that were introduced in 187?
Were there other issues you were referring to that were introduced in 187?
Specifically, it seems when trying to export a saved Topology Map to a dashboard for reporting, the saved map is basically not reflective of what the dashboard appears under.
Add to the existing issues in 1.86 where moving items in the map is now basically impossible. Dynamic maps, even custom-made ones, just reset mere moments after the devices are moved, and reset whenever any property of any single device is changed.
For example, selecting “network” devices on an edge device, say a Floor Switch in HQ which is attached to the main switch to show its connected devices, will reset the entire map to a default, or randomized, dynamic map.
Essentially it either takes the way that LM displays the Topology in one of its default settings or nothing.
This wasn’t the case before, as we were once able to edit the placement of devices under Hierarchal modes and dynamic modes alike in order to better represent the network topology.
After 1.85 Hierarchal maps are no longer editable, and from that point forward we’ve been unable to build a legible topology map of our core network.
Agree, at every enterprise I've worked, manual topology mapping has been the only way to accurately describe an IT service.