What is Topology?
Topology turns your metrics into entities โ things you can click on in Dynatrace. A device entity, interface entities, sensor entities โ each with their own page.
๐ก Without topology, your metrics are just numbers. With topology, they become clickable entities in Smartscape with relationships, screens, and alerting.
Real-World Topology Scale
Extension Entity Types Relationships Pattern
โโโโโโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโ โโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโโโโ
SNMP Generic Device 2 6 network:device + network:interface
Checkpoint Firewall 2 4 checkpoint:firewall + interface
F5 BIG-IP 15 20+ f5:instance, f5:pool, f5:pool:member, f5:virtualserver...
FortiGate (Python) 5 8 fortinet:fortigate, fortigate_vdom, interface, tunnel...
Juniper Networks 10 12+ juniper device, disk, FRU, routing engine, VLAN...
Naming convention: vendor:entity_type โ e.g. f5:pool, fortinet:fortigate_vdom, network:device.
Defining Entity Types (from snmp-generic-device)
topology:
types:
- name: network:device # vendor:entity_type convention
displayName: Network device
enabled: true
rules:
- idPattern: network_device_{device.address} # Must be globally unique
instanceNamePattern: "{sys.name}" # Display name in UI
iconPattern: host # host, network-interfaces, switch, cisco
sources:
- sourceType: Metrics
condition: $prefix(com.dynatrace.extension.snmp-generic-device)
requiredDimensions: # Entity only created when ALL present
- key: sys.name
- key: device.address
attributes: # Entity properties visible in UI
- key: dt.ip_addresses # SPECIAL: enables IP lookup in Dynatrace
pattern: "{device.address}"
displayName: Device Address
- key: dt.dns_names # SPECIAL: enables DNS lookup
pattern: "{device.name}"
- key: dt.listen_ports # SPECIAL: enables port display
pattern: "{device.port}"
- key: dt.security_context # SPECIAL: enables ABAC filtering
pattern: "{dt.security_context}"
- key: devDescription # Custom attribute
pattern: "{sys.description}"
displayName: Description
๐ก Special attributes: dt.ip_addresses, dt.dns_names, dt.listen_ports, and dt.security_context are magic keys that Dynatrace uses for IP resolution, DNS lookup, port display, and ABAC access control.
Relationships
topology:
relationships:
- typeOfRelation: CHILD_OF
fromType: my-ext:interface
toType: my-ext:device
sources:
- sourceType: Metrics
condition: $prefix(com.dynatrace.extension.my-ext.if)
โ ๏ธ The idPattern must be unique per entity instance. Use dimensions like {device.address} and {if.name} to guarantee uniqueness.
๐ Try it: Open the Smartscape app โ look for custom entity types created by extensions (they appear as new node types in the graph). Try: fetch dt.entity.custom_device | fields entity.name, entity.type | limit 10 in a Notebook.