Azure Metrics

A DMC Azure VM scan collects weeks of real performance history from Azure Monitor, VM configuration from the ARM APIs, and, when guest access is configured, software inventory, network dependencies, and SQL Server instances from inside each VM. This page explains exactly what is captured and how to interpret it.

DMC collects only data needed for migration planning. No personally identifiable information, no application-level content. All collected data can be reviewed locally before uploading to Dr Migrate.

What you get

The data DMC collects depends on whether guest VM access is configured alongside the Service Principal.

Data categoryWithout guest accessWith guest access
VM configuration (size, location, OS, disks, NICs)Yes: Azure Resource Manager APIsYes: Azure Resource Manager APIs
Azure Monitor performance metricsYes: configurable 1–90 day lookback (default: 7 days)Yes: configurable 1–90 day lookback (default: 7 days)
Guest performance metrics (point-in-time from inside the VM)NoYes
Software inventory and installed applicationsNoYes
Active network connections and listening portsNoYes
SQL Server instance discoveryNoYes
Azure Resource Inventory (networking, storage, databases, etc.)Yes: Reader role, ARM APIs onlyYes: Reader role, ARM APIs only

Metric-only scanning (no guest access) still provides comprehensive VM sizing data. CPU, memory, disk, and network performance over your chosen lookback period is sufficient for right-sizing decisions in many environments. Guest access adds application-layer context for deeper assessments.

Performance metrics

DMC pulls historical performance data from Azure Monitor for every VM, regardless of whether guest access is configured. The lookback period and granularity are configurable, so you can tune how much history is captured based on your assessment requirements.

SettingOptionsDefault
Lookback period1–90 days7 days
Granularity5 min, 15 min, 30 min, 1 hr, 6 hr, 12 hr, 1 day15 minutes
Aggregations fetchedAverage and MaximumBoth
Computed statisticsAverage, Peak (max), P95 (via linear interpolation)All three

For migration assessments, 30 days at 15-minute granularity captures typical weekly usage patterns, monthly batch jobs, and end-of-month peaks. The default of 7 days is a good starting point, but extend it if your workloads have monthly or seasonal patterns.

Batch optimisation: When collecting metrics for large environments, DMC prefetches Azure Monitor data for up to 50 VMs per API call, grouped by region. This significantly reduces API call volume and scan time for subscriptions with many VMs.

CPU

FieldAzure Monitor sourceUnitDescription
cpu.metric_valuePercentage CPU%Average CPU utilisation over the lookback period
cpu.metric_value_peakPercentage CPU%Peak (maximum) CPU utilisation
cpu.metric_value_p95Percentage CPU%95th percentile CPU utilisation
cpu.data_pointsPercentage CPUcountNumber of non-null data points collected
cpu.powered_on_hoursDerived from data pointshoursHours the VM was running during the metric window
cpu.powered_on_percentDerived%Percentage of the metric window the VM was powered on

Memory

FieldAzure Monitor sourceUnitDescription
memory_pct.metric_valueAvailable Memory Bytes%Average memory utilisation (derived from available bytes and VM total memory)
memory_pct.metric_value_p95Available Memory Bytes%95th percentile memory utilisation
memory_pct.data_pointsAvailable Memory BytescountNumber of non-null data points collected

Azure Monitor does not expose a direct memory utilisation percentage metric. DMC derives it from Available Memory Bytes and the total memory value from the VM size lookup. This means memory metrics are only available for VMs that were running during the lookback period.

Disk

Disk performance metrics are stored under disk_data.disk_metrics.aggregate and represent aggregate throughput and IOPS across all attached disks.

FieldAzure Monitor sourceUnitDescription
read_avg_kbpsDisk Read BytesKB/sAverage disk read throughput
read_p95_kbpsDisk Read BytesKB/s95th percentile disk read throughput
write_avg_kbpsDisk Write BytesKB/sAverage disk write throughput
write_p95_kbpsDisk Write BytesKB/s95th percentile disk write throughput
read_iopsDisk Read Operations/SecIOPSAverage read operations per second
read_iops_p95Disk Read Operations/SecIOPS95th percentile read IOPS
write_iopsDisk Write Operations/SecIOPSAverage write operations per second
write_iops_p95Disk Write Operations/SecIOPS95th percentile write IOPS

Network

Network performance metrics are stored under network_data.metrics.aggregate.

FieldAzure Monitor sourceUnitDescription
net.received.averageNetwork In TotalKB/sAverage inbound network throughput
net.received.p95Network In TotalKB/s95th percentile inbound throughput
net.received.total_gbNetwork In TotalGBTotal inbound data over the lookback period
net.transmitted.averageNetwork Out TotalKB/sAverage outbound network throughput
net.transmitted.p95Network Out TotalKB/s95th percentile outbound throughput
net.transmitted.total_gbNetwork Out TotalGBTotal outbound data over the lookback period

VM configuration

VM configuration is always collected via Azure Resource Manager APIs, regardless of guest access. This includes everything Azure knows about the VM: size, OS image, disk attachments, NIC configuration, and current power state.

FieldSourceDescription
server_nameARM Compute APIVM display name
OSNameARM Compute APIOS name: populated with the full name when guest access is available; Unknown otherwise
vm_sizeARM Compute APIAzure VM size (e.g. Standard_B4ms)
number_of_coresARM (VM size lookup)Number of vCPUs
memoryARM (VM size lookup)Total memory in MB
number_of_disksARM Compute APINumber of attached disks (OS + data)
number_of_nw_adaptersARM Compute APINumber of attached NICs
server_typeStaticAlways Virtual for Azure VMs
hypervisorStaticAlways Azure
boot_typeARM Compute APIBoot type: BIOS or UEFI
bios_uuidARM Compute APIAzure VM unique identifier (GUID)
power_stateARM Instance ViewCurrent power state: running, stopped, or deallocated
azure_regionARM Compute APIAzure region (e.g. eastus, australiasoutheast)
azure_resource_groupARM Compute APIResource group name
disk_dataARM Compute API + guestDisk configuration and performance: see below
network_dataARM Network API + Azure MonitorNIC configuration and network performance

Disk data structure

The disk_data object contains both configuration details (always available) and performance metrics and filesystem details (when guest access is configured).

FieldDescription
disksMap of attached disks, each with: disk_name, capacity_gb, disk_type (os or data), storage_type (e.g. Premium_LRS), and optional lun
disk_metrics.aggregateAggregate disk performance: see Disk metrics above
filesystemsGuest access only: array of filesystems with mount_point, size_gb, used_gb, fs_type, and physical_device
collection_start_timeStart of the metric collection window
collection_end_timeEnd of the metric collection window

Network data structure

FieldDescription
ip_addressesPrivate IP addresses from all attached NICs
adaptersNetwork adapter details
metrics.aggregateNetwork performance: see Network metrics above
collection_start_timeStart of the metric collection window
collection_end_timeEnd of the metric collection window

Guest-level data

When guest access is available (via Managed Run Command, WinRM, or SSH), DMC executes collection scripts inside each VM to gather data that Azure Monitor cannot provide: installed software, active network connections, and SQL Server instances. The data collected varies by OS:

  • Windows Metrics: software inventory, OS details, server roles, active processes, and network dependency map
  • Linux Metrics: package inventory, system information, and network dependency map
  • SQL Server Metrics: SQL Server instance discovery and database configuration details

If no guest access method is available, DMC marks the scan as partial. Azure Monitor performance data and VM configuration are still collected and exported.

Azure Resource Inventory

Resource Inventory uses the ARM API with Reader role only, with no guest access or VM credentials needed. It maps the broader Azure estate your VMs depend on, covering networking, databases, storage, messaging, and more. This is particularly valuable for understanding migration dependencies beyond just the VMs themselves.

Some resource types (Private Endpoints and VNet Gateways) require a resource group filter to be set during scan configuration because Azure has no subscription-wide list API for them. Without a filter, these types are automatically excluded from the scan.

Common fields (all resource types)

FieldDescription
azure_resource_idFull Azure resource ID path
nameResource name
resource_groupResource group the resource belongs to
locationAzure region
typeAzure resource type (e.g. Microsoft.Network/virtualNetworks)
tagsAzure resource tags (key-value pairs)

Supported resource types

CategoryResource typesKey attributes collected
NetworkingNetwork InterfacesMAC address, IP configurations (private/public IPs, subnets), NSG association, VM association, accelerated networking, IP forwarding, DNS servers
Network Security GroupsSecurity rules (direction, priority, access, protocol, port ranges, source/destination), default rules, associated NICs and subnets
Virtual NetworksAddress prefixes, DNS servers, subnets (address range, NSG, route table), VNet peerings, DDoS protection
Public IP AddressesIP address, allocation method (static/dynamic), FQDN, SKU, idle timeout
Private EndpointsSubnet ID, private link service connections, NIC IDs
Application GatewaysSKU (tier, capacity), frontend/backend configurations, HTTP listeners, request routing rules, WAF status
Load BalancersSKU, frontend IP configs, backend pools, load balancing rules, health probes
VNet GatewaysGateway type (VPN/ExpressRoute), VPN type, SKU, BGP settings, IP configurations
NAT GatewaysSKU, idle timeout, public IP associations, subnet associations, zones
Azure FirewallsSKU (tier), threat intel mode, IP configurations, firewall policy ID
Front Door ProfilesSKU, frontend endpoints, routing rules, health probe settings
ComputeVirtual MachinesVM size, OS type, image reference (publisher/offer/SKU), disk mappings, NIC mappings, availability set/zone
Managed DisksSize GB, SKU (tier), encryption type, IOPS/MBps capabilities, managed-by VM, creation time
VM Scale SetsSKU (name, tier, capacity), upgrade policy, OS profile, network profile, zones
AKS ClustersKubernetes version, node pools (count, VM size, OS type), network profile (plugin, service CIDR, DNS), RBAC enabled
StorageStorage AccountsKind, SKU, access tier, HTTPS enforcement, network rules (default action, IP rules, VNet rules), blob/file/table/queue endpoints
WebApp Service PlansSKU (name, tier, size), reserved (Linux), elastic scale max workers, per-site scaling, worker count
Web & Function AppsKind (web/function/linux), state, HTTPS-only, app service plan, VNet integration, default hostname
ContainersContainer InstancesContainer specs (image, CPU, memory, ports), restart policy, OS type
Container RegistriesSKU, login server, admin enabled, zone redundancy, creation date
SecurityKey VaultsSKU, soft delete enabled/retention, purge protection, RBAC authorisation, network ACLs
DatabasesSQL Servers & DatabasesFQDN, version, state, admin login, public network access, min TLS; databases include SKU, collation, max size, elastic pool ID
Cosmos DB AccountsKind, consistency level, failover policies, multi-region write, virtual network rules, IP rules
SQL Managed InstancesSKU (name, tier, family), vCores, storage size GB, licence type, public endpoint enabled
PostgreSQL Flexible ServersSKU (name, tier), version, storage size GB, backup retention, geo-redundant backup, high availability mode
MySQL Flexible ServersSKU (name, tier), version, storage size GB, backup retention, geo-redundant backup, high availability mode
RecoveryRecovery Services VaultsSKU (name, tier)
MessagingEvent Hub NamespacesSKU (name, tier, capacity), auto-inflate enabled/max throughput, zone redundant, Kafka enabled
Service Bus NamespacesSKU (name, tier), zone redundant, minimum TLS version
CacheRedis CachesSKU (name, family, capacity), hostname, port, SSL port, TLS version, shard count, linked servers
DNSDNS ZonesZone type, nameservers, record set count
Private DNS ZonesRecord set count, VNet links, auto-registration enabled
MonitoringLog Analytics WorkspacesSKU, retention days, daily cap GB, workspace ID, public network access
Application InsightsApplication type, ingestion endpoint, instrumentation key, retention days, daily cap GB, workspace resource ID

SQL parent-child relationships: SQL Servers and their databases are linked. When SQL Servers are inventoried, their databases are automatically enumerated. Each database record includes a server_id field linking to its parent server.

© 2025 Altra Technologies