This commit is contained in:
Matt Hansen
2023-04-07 11:31:37 -04:00
parent 7605510060
commit 3c72ab1290
5 changed files with 61 additions and 2 deletions

View File

@ -1,2 +1,23 @@
# Azure-VM-Diagnostics-Pruning
This repo has a script that automates mass pruning of old Azure VM Diagnostic Metrics data in Azure Table Storage.
# Azure VM Diagnostic Metric Pruning
This repo has a script that automates mass pruning of old Azure VM Diagnostic Metrics data in Azure Table Storage. Across a fleet of VMs that are running for multiple years, diagnostic metrics can consume significant table storage capacity. This script is targeted at clearing a year's-worth of those metrics at a time for a particular storage account.
I have personally run this against a storage account used by a single VM and cleared almost 300 GB of storage from metrics that I no longer need to store.
**Prerequisites:**
1. Tenant ID
2. Subscription ID
3. Resource Group Name
4. Storage Account Name
![screenshot01](./images/screen01.png)
![screenshot02](./images/screen02.png)
![screenshot03](./images/screen03.png)
## Contributing
Contributions are welcome, please submit an issue or PR!
## Disclaimer
This script is provided as-is without any warranty or support. Use this script at your own risk. I am not responsible for any damages or data loss that may occur as a result of running this script. Before running this script, make sure to read and understand the code, and test it in a non-production environment.

BIN
images/screen01.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

BIN
images/screen02.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

BIN
images/screen03.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

View File

@ -0,0 +1,38 @@
## Set information & Connect
$TenantId = Read-Host -Prompt "Input the primary tenant ID"
$SubscriptionId = Read-Host -Prompt "Input the primary subscription ID"
Connect-AzAccount
Set-AzContext -Tenant $TenantId -Subscription $SubscriptionId
$resourceGroup = Read-Host -Prompt "Resource Group Name"
$storageAccountName = Read-Host -Prompt "Storage Account Name"
$storageAccount = get-AzStorageAccount -ResourceGroupName $resourceGroup -Name $storageAccountName
$ctx = $storageAccount.Context
# List & Count all tables & capacity in context
Get-AzStorageTable -Context $ctx
Write-Host "Total tables in this storage account:"
(Get-AzStorageTable -Context $ctx -Name "WADMetrics*").count
# Filter the results by year and retrieve count
$year = Read-Host -Prompt "Filter by year (e.g. 2018)"
$year = "WADMetrics*" + $year + "*"
$tables = Get-AzStorageTable -Context $ctx -Name $year
$count = $tables.Count
Write-Host "Total tables when filtering by specified year: $count"
# Prompt the user to continue with deletion or cancel
Write-Host "Do you want to remove all of the table entries for the specified year? Press 'y' to continue, otherwise press 'n' to cancel this script." -ForegroundColor Yellow
$key = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown")
if ($key.Character -eq "y") {
Write-Host "Continuing with script..." -ForegroundColor Green
}
else {
Write-Host "Cancelling script..." -ForegroundColor Red
return
}
# Remove all WADMetrics tables with the year in their name without confirmation, then re-count
$deletedTables = Get-AzStorageTable -Context $ctx -Name $year
$deletedTables | Remove-AzStorageTable -Force
Write-Host "Total tables after deleting specified year: $count"