https://learn.microsoft.com/ja-jp/cli/azure/storage/container?view=azure-cli-latest
https://learn.microsoft.com/ja-jp/cli/azure/storage/account/keys?view=azure-cli-latest
[Azure][Azure CLI][Storage Account]全てのBlob Storageのプロパティ情報を取得
- all-blob-size.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
#!/bin/bash # 出力ファイルの設定 output_file="all_storage_sizes.csv" # ヘッダーを出力ファイルに追加 echo "Storage Account,Size (MB)" > "$output_file" # Azureサブスクリプション内の全ストレージアカウントを取得 storage_accounts=$(az storage account list --query "[].name" -o tsv) # 各ストレージアカウントに対してサイズ計算 for storage_account in $storage_accounts do # ストレージアカウントのキーを取得 account_key=$(az storage account keys list --account-name "${storage_account}" --query "[0].value" -o tsv) # 全コンテナをループ処理 total_size=0 for container in $(az storage container list --account-name "${storage_account}" --account-key "${account_key}" --query "[].name" -o tsv) do # コンテナ内の全Blobのサイズを取得して合計 for blob in $(az storage blob list --container-name "${container}" --account-name "${storage_account}" --account-key "${account_key}" --query "[].properties.contentLength" -o tsv) do total_size=$((total_size + blob)) done done # 合計サイズをMBに変換 total_size_mb=$(echo "scale=2; $total_size / 1024 / 1024" | bc) # 合計サイズをCSVファイルに追加 echo "$storage_account,$total_size_mb" >> "${output_file}" done # 完了メッセージ echo "Storage sizes have been written to $output_file" |
- all_storage_sizes.csv
1 2 3 4 5 |
torage Account,Size (MB) hoge1,10 hoge2,100 hoge3,1000 ~省略~ |
https://learn.microsoft.com/ja-jp/azure/storage/scripts/storage-blobs-container-calculate-size-cli
1 回のリスト呼び出しで返される BLOB の最大数は 5,000 です。 5,000 を超える BLOB を返す必要がある場合は、継続トークンを使用して追加の結果セットを要求してください。
と思ったら、SDKかページングを使って実装しないといけないので、Azureコンソールからメトリクスで確認する方がベスト。以下monitor metrics list で直した。
- all-blob-size.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
#!/bin/bash # CSVファイルの設定 outputFile="all_storage_accounts_average_used_capacity.csv" # CSVヘッダー echo "StorageAccountName,AverageUsedCapacityGB" > $outputFile # 開始時刻と終了時刻の設定 startTime=$(date -v-24H '+%Y-%m-%dT%H:%MZ') # macOSの場合、24時間前の日付を取得 endTime=$(date '+%Y-%m-%dT%H:%MZ') # 現在時刻を取得 interval="PT1H" # 許可されている時間粒度を使用 aggregation="Average" # 利用可能な全てのサブスクリプションIDを取得 subscriptions=$(az account list --query [].id --output tsv) for subscriptionId in $subscriptions do # 現在のサブスクリプションを設定 az account set --subscription "$subscriptionId" # 現在のサブスクリプションの全リソースグループを取得 resourceGroups=$(az group list --query [].name --output tsv) for resourceGroupName in $resourceGroups do # 現在のリソースグループの全ストレージアカウントを取得 storageAccounts=$(az storage account list --resource-group "$resourceGroupName" --query [].name --output tsv) for storageAccountName in $storageAccounts do # リソースIDの構築 resourceId="/subscriptions/$subscriptionId/resourceGroups/$resourceGroupName/providers/Microsoft.Storage/storageAccounts/$storageAccountName" # 使用容量(Used Capacity)の全データポイント取得 az monitor metrics list \ --resource "$resourceId" \ --metric "UsedCapacity" \ --start-time $startTime \ --end-time $endTime \ --interval $interval \ --aggregation $aggregation \ --query "value[0].timeseries[0].data[].average" \ --output tsv > temp_data.tsv # 平均値を計算し、CSVファイルへの出力 if [ -s temp_data.tsv ]; then averageUsedCapacityGB=$(awk '{ total += $1; count++ } END { if (count > 0) print total/count/1073741824; else print 0 }' temp_data.tsv) echo "$storageAccountName,$averageUsedCapacityGB" >> $outputFile fi done done done rm temp_data.tsv # 一時ファイルの削除 echo "CSVファイルが出力されました: $outputFile" |
- all_storage_accounts_average_used_capacity.csv
1 2 3 4 |
AccountName,AverageUsedCapacityGB hoge1,xxxx.xxx hoge2,xxx.xx ~省略~ |
Was this helpful?
0 / 0
1989年生まれのFindy/SRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWSでのインフラ構築、Docker開発環境の提供、IaC、新技術の検証、リファクタリング、セキュリティ強化、分析基盤の運用などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTA/TechBullで未経験者にインフラのコーチング/コミュニティマネージャーとして立ち上げと運営をしている。また、過去「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。