どれくらいリソースを使用したのかを手っ取り早く調査
利用時間やデータ転送量に応じて料金が課金されるクラウドサービスを使っていると「現在の処理フローでどれくらいのリソースを使用しているのか?」「もし、処理フローを変えたら、リソースの使用量はどれくらい変化するのか?」が気になる場面が少なからずありますよね。特に、定常的に1日に何回も繰り返されるような操作であれば、なおさらです。
ここでは、Azure CLI を使って、Azure の使用量を取得する方法の一つをご紹介します。今回は、ARM (Azure Resource Manager) を対象にしています。
■下準備
まずは、
https://azure.microsoft.com/ja-jp/documentation/articles/xplat-cli-install/
を参考に、Azure CLI をインストールしましょう。Azure CLI は、Windows に限らず、Max OS X でも Linux でも実行できます。各プラットフォーム用にインストーラが用意されています。
インストールが終わったら、
https://azure.microsoft.com/ja-jp/documentation/articles/xplat-cli-connect/
を参考に、Azure サブスクリプションにログインします。
基本的なパターンは、コマンドラインから、
>azure login
ログインができたら、モードを ARM に切り替えます。
>azure config mode arm
エラーが出なければ、ここまでは成功です。
■使用量データの取得方法の基本形
たとえば、2015年12月06日から2015年12月08日の使用量データを取得する場合は、
>azure usage list --reportedStartTime 2015-12-06 --reportedEndTime 2015-12-08 --json
取得されるデータはJSON形式で、時刻は UTC です。デフォルトでは、粒度は1日単位になります。
下記は、取得できるデータのサンプルの、ごく一部分です。
このサンプルからは、samplestorage と言う名前の Storage Account で、12月07日から12月08日にかけてネットワーク送信データ転送が 0.005966 GB あったことがわかります。
このような形で、使用量を計っているメーターごとに出力されます。
{
"id": "/subscriptions/XXX/providers/Microsoft.Commerce/UsageAggregates/Daily_BRSDT_20151206_0000",
"name": "Daily_BRSDT_20151206_0000",
"type": "Microsoft.Commerce/UsageAggregate",
"properties": {
"meterId": "YYY",
"usageStartTime": "2015-12-07T00:00:00+00:00",
"usageEndTime": "2015-12-08T00:00:00+00:00",
"quantity": 0.005966,
"unit": "GB",
"meterName": "Data Transfer Out (GB)",
"meterCategory": "Networking",
"meterRegion": "Zone 2",
"infoFields": {},
"instanceData": "{\"Microsoft.Resources\":{\"resourceUri\":\"/subscriptions/XXX/resourceGroups/g-tokyoiaas/providers/Microsoft.Storage/storageAccounts/samplestorage\",\"location\":\"JA East\"}}"
}
■オプションを加えることで、粒度を1時間単位に
たとえば、2015年12月06日から2015年12月08日の使用量データを、粒度を1時間単位にして取得する場合は、
>azure usage list --granularity hourly --reportedStartTime 2015-12-06 --reportedEndTime 2015-12-08 --json
下記は、取得できるデータのサンプルの、ごく一部分です。
このサンプルからは、samplestorage と言う名前の Storage Account で、12月07日23時から12月08日00時にかけてネットワーク送信データ転送が 0.000187 GB あったことがわかります。
{
"id": "/subscriptions/XXX/providers/Microsoft.Commerce/UsageAggregates/Hourly_BRSDT_20151206_0000",
"name": "Hourly_BRSDT_20151206_0000",
"type": "Microsoft.Commerce/UsageAggregate",
"properties": {
"meterId": "YYY",
"usageStartTime": "2015-12-07T23:00:00+00:00",
"usageEndTime": "2015-12-08T00:00:00+00:00",
"quantity": 0.000187,
"unit": "GB",
"meterName": "Data Transfer Out (GB)",
"meterCategory": "Networking",
"meterRegion": "Zone 2",
"infoFields": {},
"instanceData": "{\"Microsoft.Resources\":{\"resourceUri\":\"/subscriptions/XXX/resourceGroups/g-tokyoiaas/providers/Microsoft.Storage/storageAccounts/samplestorage\",\"location\":\"JA East\"}}"
}
■UTC ではなく JST (日本時間)で見るには
取得できるデータはいずれにせよ UTC なのですが、たとえば、日本時間 12月08日 午前11:00 までの数時間にわたるデータを狙って調査したい場合、
>azure usage list --granularity hourly --reportedStartTime 2015-12-06 --reportedEndTime 2015-12-08T11:00:00+09:00 --json
下記のような、日本時間 12月08日 午前11:00 までのデータが最後に記録されますので、狙い撃ちしやすくなります。
このサンプルからは、samplestorage と言う名前の Storage Account で、日本時間 12月08日 午前10時から午前11時にかけてネットワーク送信データ転送が 0.000331 GB あったことがわかります。
{
"id": "/subscriptions/XXX/providers/Microsoft.Commerce/UsageAggregates/Hourly_BRSDT_20151206_0000",
"name": "Hourly_BRSDT_20151206_0000",
"type": "Microsoft.Commerce/UsageAggregate",
"properties": {
"meterId": "YYY",
"usageStartTime": "2015-12-08T01:00:00+00:00",
"usageEndTime": "2015-12-08T02:00:00+00:00",
"quantity": 0.000331,
"unit": "GB",
"meterName": "Data Transfer Out (GB)",
"meterCategory": "Networking",
"meterRegion": "Zone 2",
"infoFields": {},
"instanceData": "{\"Microsoft.Resources\":{\"resourceUri\":\"/subscriptions/XXX/resourceGroups/g-tokyoiaas/providers/Microsoft.Storage/storageAccounts/samplestorage\",\"location\":\"JA East\"}}"
}
なお、使用量は即時反映されるわけではなく、また、メーターによって反映までに要する時間は異なることに留意下さい。
### usage, 利用料, 課金, 従量制