Как получить размер учетной записи хранения Azure в Azure CLI или Bash Script?
Я хочу получить размер учетной записи хранения Azure без использования портала (метрики). Как я могу получить метрики учетной записи хранения с помощью Azure CLI или сценария bash? Есть ли способ сделать это с помощью лазурного интерфейса командной строки или каких-либо сценариев bash?
3 ответа
Глядя на команды интерфейса командной строки AZ, я считаю, что в настоящее время нет доступных команд, которые напрямую предоставили бы вам эту информацию.
Что вам нужно сделать, так это использовать az rest
и призывать Metrics - List
REST API и проанализируйте ответ.
Вот команда, которую вы хотите выполнить:
az rest --uri https://management.azure.com/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/providers/Microsoft.Insights/metrics?api-version=2018-01-01&metricnames=UsedCapacity&aggregation=Average
Вы получите такой ответ:
{
"cost": 59,
"interval": "PT1H",
"namespace": "Microsoft.Storage/storageAccounts",
"resourceregion": "resource-location",
"timespan": "2021-10-27T05:12:06Z/2021-10-27T06:12:06Z",
"value": [
{
"displayDescription": "The amount of storage used by the storage account. For standard storage accounts, it's the sum of capacity used by blob, table, file, and queue. For premium storage accounts and Blob storage accounts, it is the same as BlobCapacity or FileCapacity.",
"errorCode": "Success",
"id": "/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.Storage/storageAccounts/<storage-account-name>/providers/Microsoft.Insights/metrics/UsedCapacity",
"name": {
"localizedValue": "Used capacity",
"value": "UsedCapacity"
},
"resourceGroup": "cerebrata",
"timeseries": [
{
"data": [
{
"average": 9078827149.0,//This is the value you would want to extract
"timeStamp": "2021-10-27T05:12:00Z"
}
],
"metadatavalues": []
}
],
"type": "Microsoft.Insights/metrics",
"unit": "Bytes"
}
]
}
Чтобы рассчитать размер учетной записи хранения, вам нужно найти размер контейнеров в учетной записи хранения, а затем просуммировать полученный размер с размером учетной записи хранения.
Пример получения длины контейнера с помощью Azure CLI
#!/bin/bash
export AZURE_STORAGE_ACCOUNT=<storage-account-name>
export AZURE_STORAGE_ACCESS_KEY=<storage-account-key>
# Create a resource group
az group create --name myResourceGroup --location eastus
# Create a container
az storage container create --name mycontainer
# Create sample files to upload as blobs
for i in `seq 1 3`; do
echo $RANDOM > container_size_sample_file_$i.txt
done
# Upload sample files to container
az storage blob upload-batch \
--pattern "container_size_sample_file_*.txt" \
--source . \
--destination mycontainer
# Calculate total size of container. Use the --query parameter to display only
# blob contentLength and output it in TSV format so only the values are
# returned. Then pipe the results to the paste and bc utilities to total the
# size of the blobs in the container.
bytes=`az storage blob list \
--container-name mycontainer \
--query "[*].[properties.contentLength]" \
--output tsv |
paste --serial --delimiters=+ | bc`
# Display total bytes
echo "Total bytes in container: $bytes"
# Delete the sample files created by this script
rm container_size_sample_file_*.txt
Обратитесь к этому документу для получения более подробной информации:
Пример использования PowerShell
Get-AzureStorageBlob -Container "ContainerName" | %{ $_.Length } | measure -Sum
Для получения более подробной информации обратитесь к этой теме SO
Вы можете инициировать удаление на портале Azure, и он сообщит вам приблизительный объем данных, имеющихся в каждом объекте. Он не будет удален, пока вы не подтвердите дважды.
Сильно страшно?