Azure WorkBooksでオリジナルのレポート作る

# Azure WorkBooksとは
Azure WorkBooksはAzure内のデータを使ってグラフ等の視覚的にわかりやすいレポートを作れるサービス。とざっくり理解しています。

公式ドキュメント

https://learn.microsoft.com/ja-jp/azure/azure-monitor/visualize/workbooks-overview

WorkBooksの画面へはAzure Portalの色々なところから遷移できます。
Monitor、Advisor、Application Insights等。
Azure Monitorから遷移するのがわかりやすいですかね。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604991/64f09f95-7f71-de66-5c21-770685c99634.png)



# レポート作成
VMの稼働状態を一覧表示するレポートを作ってみます。
Advisorに停止VMの一覧表示するWorkBooksがあるのでそちらを参考にします。

参考

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604991/56919822-3524-a256-9bbd-a3acaf9debf3.png)

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604991/fe8fdb6b-d175-dae2-10e6-e1da3b37539a.png)

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604991/46e7b4da-46fa-c906-6b0e-70efe718e446.png)

---

まずはブックの作成。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604991/07025c59-d71f-c3b3-0ee9-7426b90415f9.png)


一覧の対象サブスクリプションを選択ができるようにします。
パラメータの追加をし、サブスクリプションの設定をします。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604991/3eb193b2-21cd-53e6-c8e9-a96653d81b9a.png)

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604991/4e2ec659-4843-dc74-8f5c-df0b7cd7769b.png)


一覧表示させる内容はまとめたいため、グループを追加し、その中にパラメータを追加していきます。
リソースグループ、タグでフィルタリングできるようにしていきます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604991/53b0c384-c015-27fc-e639-da373cb99365.png)


次にVMの稼働状態のフィルタリングのパラメータ設定。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604991/3aec3e4b-83bd-dd3e-49a1-245756bee012.png)

VMの一覧を表示するオブジェクトを作ります。
こちらはクエリの追加。
どのデータソースを使うか、どう表示するかの設定をします。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604991/506ebf6f-5eaa-cf42-73b0-72b2fc7af2c7.png)


KQL全文はこちら。
今まで設定したパラメータをKQLで呼び出すようにします。

```plaintext

resources 
| where type =~ 'microsoft.compute/virtualmachines' and tostring(properties.extended.instanceView.powerState.displayStatus) in~ ({vmstatus})
| where resourceGroup in ({ResourceGroup})
| extend  PowerState=tostring(properties.extended.instanceView.powerState.displayStatus), VMLocation=location, resourceGroup=strcat('/subscriptions/',subscriptionId,'/resourceGroups/',resourceGroup), VMSize = properties.hardwareProfile.vmSize
| order by id asc
| project id, PowerState, VMLocation, resourceGroup, subscriptionId, VMSize
| join kind = innerunique(
    resources
    | extend replaced_tags = replace('{}', 'null', tostring(tags))
    | extend replaced_tags = parse_json(replaced_tags)
    | mv-expand replaced_tags
    | extend tagName = tostring(bag_keys(replaced_tags)[0])
    | extend tagValue = tostring(replaced_tags['{TagName}'])
    | where tagName has '{TagName}' and tagValue has '{TagValue}'
    | distinct id
    )
    on id
    | project-away id1

```


別のオブジェクトで各状態の合計数も表示するようにします。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604991/85d76153-4c1c-a9aa-b9a9-c3016edc8c8f.png)


```plaintext
resources 
| where type =~ 'microsoft.compute/virtualmachines' 
| extend stat = tostring(properties.extended.instanceView.powerState.displayStatus)
| summarize count() by stat

```

# レポートの表示

全体像は以下のような感じです。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604991/1672d6de-68b8-2597-4fa2-4cf760c1ea05.png)


VMの状態のフィルタリングを触ってみます。

稼働中

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604991/4466b5dc-426c-b3ce-f8a2-3281cb012bdd.png)


停止（割当解除）

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604991/d15e8779-426d-fa77-d4bf-18862202662f.png)



停止

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/604991/407c0c7e-f9c3-4239-e83c-3c2ca09e8e23.png)




# おわりに
設定が大変ですが好みの情報を表示できるのは良いですね。
今後も活用していきたいと思います。