Check space used in azure storage accounts in my subscription

前端 未结 6 579
面向向阳花
面向向阳花 2021-01-17 07:36

How can I check how much space I used in each of my azure storage accounts in my subscription resource group wise.

I am not able to find a way to check space used in

6条回答
  •  南方客
    南方客 (楼主)
    2021-01-17 08:18

    I have created python script to calculate used storage in all subscriptions. Well, it''s not quickly:
    - need to request all subscriptions via provided permissions
    - request Azure resource Graph to receive list /subscription/resourcegroup/storageaccount
    - generate list of subscription, where storageaccount exists
    - request Azure Monitor for every /subscription/resourcegroup/storageaccount to receive 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']['rows']:
        resource_ids.append(element[0])
    
    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)
    

    For ~400 subscriptions, ~1100 storageaccounts script works about 600 secs.

    For one subscription it's much faster :)

提交回复
热议问题