Dynatrace Azure Cloud Platform Monitoring periodically scans your Azure topology and stores it in Smartscape on Grail. Each Azure resource within your Azure environment is represented as an entity in Dynatrace (in the form of a Smartscape node) containing the resource configuration, its tags, and its relationships to other resources (in the form of Smartscape edges).
When telemetry for resources in your Azure subscription is ingested in Dynatrace (Azure Monitor native platform metrics), it's linked to the Smartscape node representing the resource producing it, setting telemetry in context.
This provides you a complete view of your resources with their configuration and telemetry in
Clouds as well as the ability to perform advanced queries on your topology across all monitored Azure subscriptions via Dynatrace Query Language (DQL). Topology also powers Azure tag enrichment for your ingested telemetry.
Azure topology on Smartscape on Grail enables multiple powerful use cases, like:
Access the inventory of your resources across all your monitored Azure subscriptions, including its configuration, together with their telemetry in
Clouds.
Use DQL to query telemetry using topology context. For example, show PercentageCPU for all VM resources registered with a specific Azure Load Balancer or show DataDiskReadOperations_Sec and DataDiskWriteOperations_Sec for all the Azure Managed Disks attached to a given VM instance.
This helps with simplified observability with topology context as the context data (like load balancer or attached VM resources) is not available as Azure Monitor native platform metric dimensions.
Use DQL to query the configuration state of your resources across monitored Azure Subscriptions such as:
Dynatrace scans your Azure Subscriptions' topology by querying Azure Resource Graph to retrieve resource configuration and tag information.
Resources are then persisted as entities in Smartscape on Grail.
In addition to the Smartscape on Grail common attributes, all Azure entities have the following attributes:
azure.subscriptionazure.locationazure.resource.idazure.resource.groupazure.resource.nameazure.resource.typetagsSmartscape node types for Azure follow the resource type notation, making all letters uppercase and substituting . & / with _. For example, a Azure resource type microsoft.compute/virtualmachines would be persisted in Smartscape as node type AZURE_MICROSOFT_COMPUTE_VIRTUALMACHINES.
Smartscape nodes can be fetched via DQL in
Notebooks with the smartscapeNodes command as in this example:
smartscapeNodes "AZURE_MICROSOFT_COMPUTE_VIRTUALMACHINES"
Entities are produced from information from Azure Resource Graph and Azure Resource Manager APIs and contain the resource configuration in the azure.object attribute. The azure.object attribute is a JSON structure with the following format:
{"configuration": "<output_of_arg_or_arm_api>"}
While scanning Azure topology, Dynatrace also discovers relationships between resources and persists them in Smartscape on Grail as static edges.
For details, see Smartscape on Grail.
Dynatrace performs a full scan of your topology data on your Azure Subscriptions every 12 hours. In addition, Dynatrace refreshes tag information and listens for resource changes (using Azure Respource Graph) every 15 minutes.
You can see the timestamp when a given Smartscape node was updated looking at the lifetime.end attribute.
When querying topology, make sure you select at least the last hour on the query timeframe to list all active resources.
Dynatrace scans the topology of the Azure Regions that have been selected for monitoring.
You can access topology data via
Clouds to visualize entities and their telemetry or via
Notebooks to perform advanced DQL queries.
By using DQL in
Notebooks, you can perform advanced topology queries across all your monitored Azure Subscriptions. To help you get started, you can find some useful query examples below.
The following query gives you an overview of your Azure entities discovered by Dynatrace, broken down by Azure Subscription ID and Region, sorted by number of entities.
smartscapeNodes "AZURE*"| summarize count=count(), by:{azure.subscription, azure.location, type}| sort count desc
The following query fetches Smartscape nodes of type AZURE_MICROSOFT_COMPUTE_VIRTUALMACHINES that have the tag owner_team with value team-acme.
smartscapeNodes "AZURE_MICROSOFT_COMPUTE_VIRTUALMACHINES"| filter tags[owner_team]=="team-acme"
The following query fetches Smartscape nodes of type AZURE_MICROSOFT_COMPUTE_VIRTUALMACHINES, including the attributes managedDiskId, storageAccountType, and diskSizeGB.
smartscapeNodes "AZURE_MICROSOFT_COMPUTE_VIRTUALMACHINES"| parse azure.object, "JSON:azurejson"| fieldsAdd managedDiskId=azurejson[configuration][properties][storageProfile][osDisk][managedDisk][id],storageAccountType=azurejson[configuration][properties][storageProfile][osDisk][managedDisk][storageAccountType],diskSizeGB=azurejson[configuration][properties][storageProfile][osDisk][diskSizeGB]| fieldsRemove azure.object, azurejson
Fetches the count of relationship types by source resource type and target resource types discovered for your monitored Azure Subscriptions.
smartscapeEdges "*"| summarize count=count(), by: {edgeType=type, sourceType=source_type, targetType=target_type}
We recommend experimenting with our purpose-built Azure topology notebooks, which you can find linked in
Clouds. These notebooks contain multiple example DQL queries and use cases.