내 구독의 파란색 저장소 계정에 사용된 공간 확인
서브스크립션 리소스 그룹의 각 azure 스토리지 계정에서 사용한 공간을 확인하려면 어떻게 해야 합니까?
PowerShell, CLI, 포털을 통해 Azure 스토리지 계정에서 사용되는 공간을 확인할 수 없습니다.
Azure 스토리지 크기는 모두 4개의 서비스(Blob, Queue, File, Table)로 구성됩니다.제가 아는 한, 현재로선 모든 서비스의 총 크기를 계산할 방법이 없습니다.
그러나 Azure 메트릭을 사용하면 Portal에서 사용되는 blob 공간을 얻을 수 있습니다.[ Monitor ]-> [ Metrics ]를 선택합니다.
Azure 포털에서 스토리지 계정을 모니터하는 방법에 대한 자세한 내용은 이 링크를 참조하십시오.
또한 PowerShell을 사용하여 BLOB 사용을 가져올 수도 있습니다.사용할 수 있는 좋은 스크립트가 있습니다.
Azure Storage Explorer에는 '디렉토리 통계' 버튼이 있습니다.
폴더로 이동
단추를 클릭하십시오.
합계가 액티비티 패널에 표시됩니다.
많은 검색 결과 이 기사가 매우 적절하다는 것을 알게 되었습니다.
Azure Monitor를 사용하여 스토리지 계정의 용량을 확인합니다.순서:
- Azure 모니터로 이동합니다.
- 스토리지 계정을 클릭합니다.
- [ Capacity ]을 클릭합니다.모든 계정과 사용된 용량을 나란히 볼 수 있습니다.
여기 a가 있습니다..net core
최근 한 시간의 평균 메트릭 값을 사용하여 스토리지 계정 사용량을 나열하는 데 사용하는 스크립트입니다.
using System;
using System.Collections.Generic;
using System.IO;
using System.Threading;
using Microsoft.Azure.Management.CosmosDB.Fluent.Models;
using Microsoft.Azure.Management.Fluent;
using Microsoft.Azure.Management.Monitor;
using Microsoft.Azure.Management.Monitor.Models;
using Microsoft.Rest.Azure.Authentication;
namespace storagelist
{
class Program
{
static async System.Threading.Tasks.Task Main(string[] args)
{
// to generate my.azureauth file run the follow command:
// az ad sp create-for-rbac --sdk-auth > my.azureauth
var azure = Azure.Authenticate("my.azureauth").WithDefaultSubscription();
var accounts = azure.StorageAccounts.List();
// can get values from my.azureauth
var tenantId = "";
var clientId = "";
var clientSecret = "";
var serviceCreds = await ApplicationTokenProvider.LoginSilentAsync(tenantId, clientId, clientSecret);
MonitorManagementClient readOnlyClient = new MonitorManagementClient(serviceCreds);
var oneHour = System.TimeSpan.FromHours(1);
var startDate = DateTime.Now.AddHours(-oneHour.Hours).ToUniversalTime().ToString("o");
string endDate = DateTime.Now.ToUniversalTime().ToString("o");
string timeSpan = startDate + "/" + endDate;
List<string> fileContents = new List<string>();
foreach (var storage in accounts)
{
var response = await readOnlyClient.Metrics.ListAsync(
resourceUri: storage.Id,
timespan: timeSpan,
interval: oneHour,
metricnames: "UsedCapacity",
aggregation: "Average",
resultType: ResultType.Data,
cancellationToken: CancellationToken.None);
foreach (var metric in response.Value)
{
foreach (var series in metric.Timeseries)
{
foreach (var point in series.Data)
{
if (point.Average.HasValue)
{
fileContents.Add($"{storage.Id}, {point.Average.Value}");
break;
}
}
break;
}
break;
}
}
await File.WriteAllLinesAsync("./storage.csv", fileContents);
}
}
}
그러면 모든 구독의 각 리소스 그룹에 스토리지 계정 용량이 제공됩니다.
$sub = Get-AzSubscription | select Name
$sub | foreach {
Set-AzContext -Subscription $_.Name
$currentSub = $_.Name
$RGs = Get-AzResourceGroup | select ResourceGroupName
$RGs | foreach {
$CurrentRG = $_.ResourceGroupName
$StorageAccounts = Get-AzStorageAccount -ResourceGroupName $CurrentRG | select StorageAccountName
$StorageAccounts | foreach {
$StorageAccount = $_.StorageAccountName
$CurrentSAID = (Get-AzStorageAccount -ResourceGroupName $CurrentRG -AccountName $StorageAccount).Id
$usedCapacity = (Get-AzMetric -ResourceId $CurrentSAID -MetricName "UsedCapacity").Data
$usedCapacityInMB = $usedCapacity.Average / 1024 / 1024
"$StorageAccount,$usedCapacityInMB,$CurrentRG,$currentSub" >> ".\storageAccountsUsedCapacity.csv"
}
}
}
다음 페이지로 이동합니다.홈 > {storage account} > {container} > 속성 아래에 컨테이너 크기를 계산합니다.
클라우드 셸을 사용하는 것은 지금까지의 솔루션 중 가장 좋은 것 중 하나입니다.
- Cloud Shell에 powershell 파일 추가(아래 코드 확인)
- 스토리지 계정 및 리소스 그룹 이름으로 PS 명령 실행
코드
param($resourceGroup, $storageAccountName)
# usage
# Get-StorageAccountSize -resourceGroup <resource-group> -storageAccountName <storage-account-name>
# Connect to Azure
Connect-AzureRmAccount
# Get a reference to the storage account and the context
$storageAccount = Get-AzureRmStorageAccount `
-ResourceGroupName $resourceGroup `
-Name $storageAccountName
$ctx = $storageAccount.Context
# Get All Blob Containers
$AllContainers = Get-AzureStorageContainer -Context $ctx
$AllContainersCount = $AllContainers.Count
Write-Host "We found '$($AllContainersCount)' containers. Processing size for each one"
# Zero counters
$TotalLength = 0
$TotalContainers = 0
# Loop to go over each container and calculate size
Foreach ($Container in $AllContainers){
$TotalContainers = $TotalContainers + 1
Write-Host "Processing Container '$($TotalContainers)'/'$($AllContainersCount)'"
$listOfBLobs = Get-AzureStorageBlob -Container $Container.Name -Context $ctx
# zero out our total
$length = 0
# this loops through the list of blobs and retrieves the length for each blob and adds it to the total
$listOfBlobs | ForEach-Object {$length = $length + $_.Length}
$TotalLength = $TotalLength + $length
}
# end container loop
#Convert length to GB
$TotalLengthGB = $TotalLength /1024 /1024 /1024
# Result output
Write-Host "Total Length = " $TotallengthGB "GB"
https://gist.github.com/iamsunny/8718fb29146363af11da95e5eb82f245
이를 Powershell에 도입하는 것은 다소 번거로운 일이지만, 다른 사용자(오래된 백업 삭제 등)에게 도움이 될 수 있습니다.생각해 낸 것은 다음과 같습니다.적어도 AzureRM 모듈 6.13.0에서는 동작할 수 있습니다.
$azstorcontext = New-AzureStorageContext -StorageAccountName storageaccounthere -StorageAccountKey storageaccountkeyhere
$sizesOverall = @()
$containers = Get-AzureStorageContainer -Context $azstorcontext
foreach ($container in $containers)
{
Write-Output $container.Name
$contblobs = get-azurestorageblob -container $container.name -Context $azstorcontext
Write-Output " Blobs: $($contblobs.count)"
$containersize = ($contblobs | Measure-Object -Sum Length).Sum
Write-Output " Container Size: $containersize) (bytes)"
$sizesOverall
}
모든 구독에서 사용된 스토리지를 계산하는 python 스크립트를 만들었습니다.글쎄, 빠르진 않아.
- 제공된 권한을 통해 모든 구독을 요청해야 합니다.
- 목록/서브스크립션/리소스 그룹/스토리지 계정을 수신하도록 Azure 리소스 그래프 요청
- 구독 목록 생성(스토리지 계정이 있는 경우
- 모든 /subscription/resourcegroup/스토리지 계정에 대해 Azure Monitor를 요청하여 UsedCapacity를 받습니다.
from azure.mgmt.monitor import MonitorManagementClient
from azure.mgmt.subscription import SubscriptionClient
from msrestazure.azure_active_directory import ServicePrincipalCredentials
from azure.mgmt.resourcegraph import ResourceGraphClient
from azure.mgmt.resourcegraph.models import QueryRequest
credentials = ServicePrincipalCredentials(client_id, secret, tenant=tenant_id)
sub_object = SubscriptionClient(credentials)
rgraph_object = ResourceGraphClient(credentials)
storageaccount_pattern = "resources | where type == 'microsoft.storage/storageaccounts' | project id"
subs = [sub.as_dict() for sub in sub_object.subscriptions.list()]
subs_list = []
for sub in subs:
subs_list.append(sub.get('subscription_id'))
request_storageaccount = QueryRequest(subscriptions=subs_list, query=storageaccount_pattern)
rgraph_storageaccount = rgraph_object.resources(request_storageaccount).as_dict()
resource_ids = []
for element in rgraph_storageaccount['data']:
resource_ids.append(element['id'])
count_used_storage = 0
for resource_id in resource_ids:
sub = (resource_id.split('/'))[2]
monitor_object = MonitorManagementClient(credentials, subscription_id=sub)
metrics_data = monitor_object.metrics.list(resource_id)
for item in metrics_data.value:
for timeserie in item.timeseries:
for data in timeserie.data:
try:
count_used_storage = count_used_storage + data.average
except:
pass
print(count_used_storage)
최대 400개의 구독에 대해 최대 1100개의 스토리지 계정 스크립트가 약 600초 동안 작동합니다.
1개의 서브스크립션으로 훨씬 고속화 :)
Portal Storage Browser(포털 스토리지 브라우저)에 저장된 총 데이터가 표시됩니다.
Azure에 로그인합니다.
스토리지 계정으로 이동합니다.
왼쪽의 Storage Browser(스토리지 브라우저)를 클릭합니다.
언급URL : https://stackoverflow.com/questions/43629557/check-space-used-in-azure-storage-accounts-in-my-subscription
'programing' 카테고리의 다른 글
메시지를 다시 시도하기 전에 Azure 서비스 버스를 지연시킬 수 있습니까? (0) | 2023.04.21 |
---|---|
Asp.net WebApi 커스텀 인증 - 엉망진창? (0) | 2023.04.21 |
ImportError: win32com.client라는 이름의 모듈이 없습니다. (0) | 2023.04.21 |
DLL 파일이란 정확히 무엇이며 어떻게 작동합니까? (0) | 2023.04.21 |
Azure Cosmos DB - 파티션 키 이해 (0) | 2023.04.21 |