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のほうを試してみる予定。