TopologySource Overview

Last updated on 26 September, 2022

TopologySources are a type of LogicModule devoted specifically to topology mapping and take a form similar to scripted DataSources. TopologySources use ERIs to define the connections between vertices. The successful output of a TopologySource is a JSON object consisting of vertices and edges. As with DataSources, TopologySources are created to run out of the box and rarely require any custom configurations. See Topology Mapping Overview.

For most networking topology, TopologySources leverage layer 2 and layer 3 discovery protocols to gather information that is used to define logical relationships among the many monitored devices in your network. For example, information about VLANs is contained in certain OIDs, WMI classes, and API calls. For VMware, TopologySources access the vCenter API to gather relationship information and leverage the VMMoRefIds.

Scripted TopologySources

Topology relationships can be defined using embedded Groovy and PowerShell scripts. See Embedded Groovy Scripting and Embedded PowerShell Scripting.

Property-based TopologySources

You can define Topology relationships based on existing host properties without writing code in Groovy or PowerShell.

Property Name

The name of a host property on the AppliedTo device. This property should contain the ERI of the device you want to link these hosts to. For example, if we’re making a TopologySource to map AWS EC2 VMs to their mapped EBS volumes, we would apply our TopologySource to all AWS EC2, and we’d use the ERI of the EBS for this propertyname.

Example: An EC2 device has the property, system.aws.blockDeviceMappings. This property contains the volume ID we need to identify the EBS resources also in LM.

Property Type

This setting indicates what type of property you want to match against. Property Type can be:

  • Regular String
  • String Array
  • JSON
  • JSON Array

If you select JSON or JSON Array, you’ll see another option JSON Field ERI which is the JSON selector to tell LogicMonitor which key to look at in the JSON value. Provide a selector for one JSON object even if you have an array to map it to each available object.

If you select Regular String or String Array property types, the process is the same, but LogicMonitor checks either the entire value or each item in the array as an entire value.

Example: Our block device property’s value is a JSON Array. After selecting JSON Array for the Property Type, specify the JSON Field ERI as volumeId.

[{"volumeId":"vol-086983d352e47a3a6","deleteOnTermination":true,"deviceName":"/dev/sda1","attachTime":1618918178000,"status":"attached"}]

Note: The JSON Array is indicated by the square brackets around the JSON object. If it has no square brackets, it’s just JSON. A string array is similar to the value for system.categories, where strings are separated by commas.

Edge Type

This setting defines the edge type label that shows up on the line in the topology map. You can put anything here, but it should describe the relationship.

Example: Continuing the previous example, you can name the Edge Type “Storage”.

Edge Direction

This setting defines which direction the topology relationship should go relative to the device this TopologySource is applied to.

 Example: Select Inbound for the direction, since we want the EBS volumes to appear to belong to their EC2 instances.

In This Article