mirror of
https://github.com/matthansen0/Azure-VM-Diagnostics-Pruning.git
synced 2025-07-17 08:46:29 +00:00
init
This commit is contained in:
25
README.md
25
README.md
@ -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
|
||||
|
||||

|
||||

|
||||

|
||||
|
||||
## 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
BIN
images/screen01.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 12 KiB |
BIN
images/screen02.png
Normal file
BIN
images/screen02.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 44 KiB |
BIN
images/screen03.png
Normal file
BIN
images/screen03.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 16 KiB |
38
tableMetricsMaintenance.ps1
Normal file
38
tableMetricsMaintenance.ps1
Normal 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"
|
Reference in New Issue
Block a user