Skip to main content
Splunk Lantern

Inventory of unattached Azure managed disks

You might want to identify and delete any unattached disks when doing the following:

Prerequisites 

In order to execute this procedure in your environment, the following data, services, or apps are required:

Example

When you delete a virtual machine (VM) in Azure, by default, any disks that are attached to the VM aren't deleted. This helps to prevent data loss due to the unintentional deletion of VMs. However, after a VM is deleted, you continue to pay for unattached disks. You want to identify and delete any unattached disks so you can reduce unnecessary costs.

To optimize the search shown below, you should specify an index and a time range.

  1. Run the following search: 
sourcetype="azure:compute:disk"
|search properties.diskState="Unattached"
|dedup id 
|stats latest(location) AS Location latest(managedBy) AS managedBy latest(name) AS name latest(properties.creationData.imageReference.id) AS imageReference latest(properties.diskSizeGB) AS diskSize latest(properties.diskState) AS diskState latest(properties.osType) AS osType latest(properties.provisioningState) AS provisioningState latest(sku.name) AS skuName latest(sku.tier) AS skuTier BY id 
|table name diskState diskSize osType provisioningState skuName skuTier 
|rename name AS Name diskState AS "Disk State" diskSize AS "Disk Size (GB)" osType AS "OS Type" provisioningState AS "Provisioning State" skuName AS "SKU Name" skuTier AS "SKU Tier"

Search explanation

The table provides an explanation of what each part of this search achieves. You can adjust this query based on the specifics of your environment.

Splunk Search Explanation

sourcetype="azure:compute:disk"

Search only Azure managed disk data. 

|search properties.diskState="Unattached"

Filter the results to only include those with a disk state of “Unattached”.

|dedup id 

Remove results with duplicate IDs.

|stats latest(location) AS Location latest(managedBy) AS managedBy latest(name) AS name latest(properties.creationData.imageReference.id) AS imageReference latest(properties.diskSizeGB) AS diskSize latest(properties.diskState) AS diskState latest(properties.osType) AS osType latest(properties.provisioningState) AS provisioningState latest(sku.name) AS skuName latest(sku.tier) AS skuTier BY id 

Return the latest value for the field. Simplify the field names for better readability. 

|table name diskState diskSize osType provisioningState skuName skuTier 

Display the results in a table with columns in the order shown.

|rename name AS Name diskState AS "Disk State" diskSize AS "Disk Size (GB)" osType AS "OS Type" provisioningState AS "Provisioning State" skuName AS "SKU Name" skuTier AS "SKU Tier"

Rename the fields as shown for better readability.

Result

Sample results for this search are shown in the table below. The value of this data is getting a list of unattached disks that may be eligible for deletion or archival to reduce cost. When working with cloud infrastructure, it is important to search for and find things that may no longer be in use by your organization but may still be incurring charges. For a search that will help you calculate costs of unattached storage, click here. 

Name Disk State Disk Size (GB) OS Type Provisioning State SKU Name SKU Tier

Test_OsDisk_1_32e1685f3eb247659c42cee472ce0b90

Unattached

127

Windows

Succeeded

StandardSSD_LRS

Standard

SupplierDB_OsDisk_1_860790bb55994899b1da4ef8ef87bd57

Unattached

127

Windows

Succeeded

StandardSSD_LRS

Standard

brewer_disk1_96f7bb62aaca41c482ea7154996a91ff

Unattached

30

Linux

Succeeded

Premium_LRS

Premium

test_OsDisk_1_f4433b58935a4a57bea498f0ef1ea0d2

Unattached

30

Linux

Succeeded

StandardSSD_LRS

Standard

  • Was this article helpful?