Select Page

Cleaning up Azure storage – an ongoing tale

Back to “Azure Grim Reaper” – flagging and deleting unused storage in Azure.

There is no “nice” way to do this – the Azure Metrics help a lot.

Here’s some code that enumerates a list of subscriptions and pulls out storage accounts, transactions over a period of time, count of storage containers, tables and queues – and reads tags.

It’s generic enough for use in most places.

# setup
#import-module az
#import-module az.storage
# creds
#connect-azaccount
#
# set up array of subs


$subs= ‘<subscription ID>’, ‘<subscription ID>’

# today
$nowdate = Get-Date


#initialise output


$stgdata =@()



Write-Host “Enumerating” $subs.count “subscription(s)”


# loop through the subscription(s)


foreach ($subscription in $subs) {
# in subscription, next read the storage accounts
#set context
write-host “Switching to subscription” $subscription
set-azcontext -subscription $subscription |out-null
write-host “enumerating storage accounts”
$stgacclist = get-azstorageaccount
write-host “Total of” $stgacclist.count “storage accounts in subscription” $subscription


# loop through each storage account


foreach ($stgacc in $stgacclist) {
# in storage account, get all storage containers, tables and queues
# stgacc entity has StorageAccountNme and ResourceGroupName and tags


set-azcurrentstorageaccount -Name $stgacc.StorageAccountName -ResourceGroupName $stgacc.ResourceGroupName


write-host “enumerating storage account ” $stgacc.StorageAccountName ” in resource group” $stgacc.ResourceGroupName
write-host “storage containers”
$stgcontainers = get-azstoragecontainer
write-host “table service”
$tblservice = get-azstoragetable
write-host “queue service”
$qservice = get-azstoragequeue



#get transactions


$transactions = Get-AzMetric -ResourceId $stgacc.id -TimeGrain 0.1:00:00 -starttime ((get-date).AddDays(-60)) -endtime (get-date) -MetricNames “Transactions” -WarningAction SilentlyContinue
write-host “60 days of transactions” $(($transactions.Data | Measure-Object -Property total -Sum).sum)


#reset usage array
$lastused = @()


#loop through each blob service container
foreach ($container in $stgcontainers) {
# in blob storage container
write-host “collecting blob storage data”


$lastused += [PSCustomObject]@{
Subscription = $subscription
ResourceGroup = $stgacc.ResourceGroupName
StorageAccount = $stgacc.StorageAccountName
StorageContainer = $container.name
LastModified = $container.lastmodified.Date
Age = ($nowdate – $container.LastModified.Date).Days


}


#let’s find any unmanaged disks in the container
$allblobs = get-azstorageblob -container $container.name
$vhdblobs = $allblobs | Where-Object {$_.BlobType -eq ‘PageBlob’ -and $_.Name.EndsWith(‘.vhd’)}


}


write-host “Total of ” $stgcontainers.count “containers. Minimum age ” ($lastused.Age |Measure -Minimum).minimum “maximum age” ($lastused.Age |Measure -Maximum).maximum


#append to the array


$stgdata += [PSCustomObject]@{
Subscription = $subscription
ResourceGroup = $stgacc.ResourceGroupName
StorageAccount = $stgacc.StorageAccountName
Transactions = $(($transactions.Data | Measure-Object -Property total -Sum).sum)
ContainerCount = $stgcontainers.Count
TableCount = $tblservice.Count
QueueCount = $qservice.Count
AgingMin = ($lastused.Age |Measure -Minimum).minimum
AgingMax = ($lastused.Age |Measure -Maximum).maximum
vhd = $vhdblobs.count
blobs = $allblobs.count


#tag metadata
itowner = $stgacc.tags.itowner
businessowner = $stgacc.tags.businessowner
application =$stgacc.tags.application
costcenter = $stgacc.tags.costcenter


}
}
}
#output to csv


$stgdata | export-csv <somelocation>\storageacc.csv -force -NoTypeInformation

COVID – week 47 – Feb 1 – Feb 7 2021

Weekend – much concern that the Oxford/AstraZeneca vaccine does not provide adequate protection against the “South Africa” variant. Variant breakout is a real challenge. Lockdown, vaccination are really having an effect on the UK rates. (Below, from The Guardian).

image

Hotspots of South Africa variant in the UK.

Weekend update for Washington State from The Seattle Times. Positive case rate is stable and is certainly trending downwards. Vaccine delivery is slow but picking up; almost 9% have first vaccine shot (compare to 18% in the UK).

Friday – UK variant now 6%+ of COVID cases; this is the more transmissible version.

Thursday – Good data from The Seattle Times on vaccine rates across the state, by race and ethnicity. (paywall) “Scarce doses of the COVID-19 vaccine have so far gone disproportionately to white Washington residents, new data from the state Department of Health (DOH) shows.”

Wednesday – Oxford/AstraZeneca vaccine being limited in multiple locations to 18-55; leaving limited choices for over 55, more at risk community.

Tuesday – another “worrying mutation” in the UK. This may be the pattern for the next year – as vaccinations roll out and some immunity builds; watching for mutations that escape.

Monday – travel bans, closed borders contrasted with re-opening and relaxed restrictions. Parts of Washington State move to “phase 2” – which means restaurants can start to re-open at 25% capacity.

The Guardian The Seattle Times
1 Feb here here
2 Feb here here
3 Feb here here
4 Feb here here
5 Feb here here
6 Feb here here
7 Feb here here

https://www.theguardian.com/world/series/coronavirus-live

https://www.seattletimes.com/tag/coronavirus/