GrafanaでのAzureの監視
Grafana に Azure Monitorのデータソースプラグイン があって、これを使うとAzure Monitor, Log Analytics, Application InsightsのデータをGrafanaで可視化できる。GrafanaであればAzure Monitorだけじゃなくて、Graphiteをはじめとしたいろんなデータソースを使うことができるので、モニタリングのダッシュボードをここに集約できてよさそうだ。グラフもかっこいいし。
環境構築
Azure MarketplaceからGrafanaをデプロイ
Azure Marketplaceで"Grafana"と検索すると以下のようにGrafana LabsのGrafanaが出てくるので、これを選んでデプロイする。デプロイは普通の仮想マシンとあまり変わらないので、仮想マシンのデプロイをしたことがあるなら困らないはず。

リソースグループにgrafana-nsgが作成されているが、デプロイした環境ではNetwork interfaceにもSubnetにもどこにも関連付けされていなかった。念のためデプロイ後に確認したほうがよさそう。InboundルールとしてGrafanaサーバアクセス用の3000/TCPが開放されている。

Grafanaのデータソース設定
ブラウザから http://<パブリックIP>:3000 または http://:3000 にアクセスして以下のようにGrafanaのログイン画面が出て来たらいったんデプロイ成功。

Marketplaceからのデプロイ時に設定した認証情報を入れてログインするとホーム画面が出てくる。Marketplaceからデプロイすると最初からAzure Monitorプラグインがセットされている。ここで "Add data source" を選択してデータソースの設定を行う。

データソースの設定のためには、ひと手間必要で、Azure Monitor等のリソースにGrafanaからアクセスするためのサービスプリンシパルっていうのを作成しないといけない。"サービス プリンシパルは、リソース/サービス レベルの無人操作を実行する目的でテナント内で作成する Azure Active Directory アプリケーション リソースです。" って公式ドキュメントに書いてあるが、簡単に言うとアプリのための代表のユーザーみたいなもん。
サービスプリンシパルの作り方や権限の与え方の公式ドキュメント に沿って作成する。Azure Monitorデータソースを使用するには、作ったサービスプリンシパルに対象のサブスクリプションまたはリソースグループまたはリソースに対しての"閲覧者(Reader)"ロールを割り当てる必要がある。ロールの割り当て方法は このページの通りの操作 (ロールはReaderを割り当て) で、下図のように設定することでできた。

Log Analyticsに関しては後日設定して投稿する予定。
Grafanaのデータソース設定画面では以下のように設定する。
| 項目 | 設定 |
|---|---|
| Name | データソース名 |
| Type | Azure Monitor |
Azure Monitor API Detailsでは以下のように設定する。
| 項目 | 設定 |
|---|---|
| Azure Cloud | Azure (GovernmentとかChinaのような個別クラウドも選択できる!) |
| Subscription Id | サブスクリプションのID |
| Tenant Id | Azure ADのディレクトリID |
| Client Id | サービスプリンシパルのApplication ID |
| Client Secret | サービスプリンシパルで作成したキー |
Log Analyticsのところで同じ資格情報を使いたい場合はSame details as Azure Monitor APIにチェックを入れればOK (今回はスキップ)。

Dashboardの作成
Azure Monitorのデータソース設定が完了したら、GrafanaのHomeに戻り、New Dashboardを選択。ダッシュボードに掲載するオブジェクトのタイプを聞かれるのでGraphを選択する。

Graphのオブジェクトが配置されるので、Panel TitleをクリックしてEditを選択すると、グラフの編集画面に遷移する。

Metricsタブで、Service箇所に作成したデータソースのAzure Monitorを選択し、Azureのリソースグループをはじめとした各種の監視対象を選択し、グラフ化したいMetricを選択(ここでは仮想マシンのPercentage CPUの指定期間での平均値)すると、図のようにグラフが表示される。

必要なメトリックで作ったグラフを並べて、監視ダッシュボードがこんな感じでできる。

次はLog Analyticsのほうを試してみる予定。
