AzureのリソースコストをExcelを使って詳細に分析する。
概要
Azureはパブリッククラウドなのでもちろんお金はかかるのだが、実際にどのリソースにどれだけのお金がかかっているかを分析している記事がほとんどなかったので、これを期に書いてみた。
例えばストレージアカウントなんかは、データの保管金額しかかかってないと思いこんでいる人が多いかもしれない。
例えばGRSのストレージアカウントはデータの保管金額だけでなく、リージョン間のデータ転送費用なんかもかかっている。
実はストレージアカウントにこんなに課金項目が存在しているというのは、実際にリソースを作成してみないと気づかないことだと思う。
意外と転送費用がすごく高くなってたとか、そういうことを見つけることが出来る。
そこから各リソースのオプションを変更してみようだったり、チューニングしてみようとなるかもしれないので、今回はあくまでその一例を提示する。
コストダウンロード
AzureポータルでCost Managementに移動する。
左メニューからコスト分析を選択する。
以下を設定し、ダウンロードをクリックする。
(画像はわざと何もないところを表示している。)
- 表示 : AccumulatedCosts
- 範囲 : 任意の期間
- フィルター : 必要があればリソースタイプなどを設定
- グループ化 : ResourceId(日本語だとリソース)
- 細分性 : 日単位
Excelを選択して、データのダウンロードをクリックする。
Excel整形
ダウンロードしたExcelを開くと、Dataシートがある。
これを見ると1つのリソースに対して、Meterという課金項目があることがわかる。
これをピボットテーブルにすることで簡単に分析が出来る。
リソース名抽出
このままではリソースIDしかなくリソース名がわかりにくいので、リソース名を抽出する。
C列を選択し、挿入をクリックする。
別にC列じゃなくてもいいが、個人的にリソースIDの隣にある方が見た目が綺麗と思って、
C1セルはResourceNameとか好きな名前にする。
C2セルに以下を入力する。
=RIGHT(B2,LEN(B2)-FIND("●",SUBSTITUTE(B2,"/","●",LEN(B2)-LEN(SUBSTITUTE(B2,"/","")))))
B2のように検索セルに存在しない記号(今回であれば●)を使う。
ないとは思うが、もしB2に●が使われていたら別の記号を使うこと。
ざっくり言うと、find関数で、B2セルに●が含まれていない時、B2セルに入力されている文字列の最後の/が何文字目かを取得する。
その最後の/の位置までの文字列をB2の文字列から引いて、right関数でそれより右の値を抽出する。
C2セルを最後の行までコピーする。
ピボットテーブル作成
DataシートのA1セルを選択し、挿入リボンのピボットテーブルをクリックする。
テーブル範囲は自動で選択されている値のまま、OKをクリックする。
分析例
ここからは分析したい内容で色々いじりながら、自分が欲しいデータにしていく。
例えばフィールドには以下を選択する。
- ResourceName
- Meter
- Cost
参考例
- フィルターにResourceTypeを追加しリソース種類ごと(VMやストレージアカウントごと)にしてみる
- Meterをフィルターに移動させ、特定の課金対象だけ抜き出したりフィルターをかけてみる
- UsageDateを追加し、1日ごとの課金額を見てみる
そのへんは調査の目的によって異なるが、ピボットテーブルまで作成できればあとは色々いじるだけ。
ちなみにRIで購入したものは空白となっているっぽいので、なんの値だろうと思ったら多分RIだと思う。
Discussion