この記事は更新から24ヶ月以上経過しているため、最新の情報を別途確認することを推奨いたします。
パーソルプロセス&テクノロジーの内田です。今回はAzure Policyを用いて仮想マシンに対して監視を構成するためのエージェントを自動で構成する手順を紹介いたします。
Azure Policyの初歩的なことについては、弊ブログのこちらの記事を参考にしてください。
Azure Virtual Machinesの監視概要
本題に入る前に、そもそもAzure VMにおける監視をどのように実装するのか説明いたします。
Virtual Machinesリソースに限らずAzureのリソースであればメトリックとログの2種類が存在しており、これらをAzure Monitorと連携させることによって監視を構成しています。
メトリックとはAzureのプラットフォームのメトリックのことを指し、追加の構成などは必要なくメトリック データベースに書き込まれます。書き込まれたメトリックはメトリック エクスプローラー(Azure Monitor)で確認することが可能です。(Log AnalyticsやStorage Account、Event Hubに転送することも可能)
一方ログとはAzureリソースの内部操作に関する分析情報を取得することができますが、診断設定にてログの収集先を構成する必要があります。
ここまではあくまでAzureのプラットフォーム側から取得できる範囲に限られるため、ディスクの空き容量やメモリ使用率などのオペレーティング システム上のデータは含まれません。
オペレーティング システム上の何かしらのデータを取得するためには、VMにエージェントを構成する必要があります。

画像では青、水色、緑の3色の機能にわかれており、それぞれデータの収集先が異なることがわかります。
Metricsで収集した場合は、対象となるAzureリソースのメトリックに対して閾値を設定することで監視を構成できます。
Logsで収集した場合は、指定したLog Analytics Workspaceリソースに対してクエリを実行することで監視を構成できます。
それぞれについての詳しい説明については割愛いたしますが、共通して言えることはVMに対してエージェントを構成する必要があるということです。
エージェントを手動で構成する
今回はVMにLog Analytics Agentを構成し、Log Analytics Workspaceでオペレーティング システムの各種ログを収集して監視を構成しようと考えています。
対象となるLog Analytics Workspaceリソースの[ワークスペースのデータ ソース]-[仮想マシン]を選択すると、構成することができます。現在は接続されていないことが確認できます。

仮想マシンをクリックするとページが遷移するので、接続をクリックすればOKです。

数分後、先ほどの画面のステータスが更新していることが確認できました。

Azure Policyにてエージェントの構成を自動化する
前段が長くなりましたが、ここからが本題です。
先ほどの設定は仮想マシン単位で行う必要がありますが、数十台、数百台を手動で設定するのは現実的ではありませんし、また仮想マシンを新たに作成した際に忘れずに設定しなければならないのは面倒です。
Azure Policyサービスを利用すれば、Log Analytics Agentが構成されていないVMに対して、自動的にそれを構成するというポリシーを作成することが可能です。それでは実際にやっていきましょう。
今回はビルトインの「VM 用 Azure Monitorを有効にする」イニシアティブ(複数ポリシーのセット)を使います。
- Azure Policyサービスにてイニシアティブの割当を選択

- 基本タブにてスコープとイニシアティブ定義を選択
スコープではサブスクリプション/リソースグループを選択できます。

- パラメータータブにて対象となるLog Analytics Workspaceを選択

- 修復タブにて必要に応じて「修復タスクを作成する」にチェックを入れる
チェックを入れた場合、既存のリソースに対してポリシーが評価されます。

- 確認および作成タブにて作成を選択する

イニシアティブの割当が完了したので、早速VMを新しく作成してみたいと思います。

VMが作成された後しばらくしたら自動的に接続されていることが確認できました。

デプロイの一覧を確認してみると、VM作成のデプロイが完了した約10分後にポリシーが評価されて、エージェントのデプロイ処理が発生していることも確認できました。
なお今回は即座に反映していましたが、公式ページに記載があるとおり新たに割当てたポリシー/イニシアティブは有効になるまで30分ほどかかるそうです。
ポリシーまたはイニシアティブがスコープに新たに割り当てられる。 定義されたスコープに割り当てが適用されるまで、約 30 分かかります。 適用されると、新たに割り当てられたポリシーまたはイニシアティブに従って、そのスコープ内のリソースに対する評価サイクルが開始されます。リソースは、ポリシーまたはイニシアティブによって使用されている効果に応じて、準拠、非準拠、または適用除外としてマークされます。 大きなスコープのリソースに対する大きなポリシーまたはイニシアティブの評価には時間がかかることがあります。 そのため、評価サイクルがいつ完了するかを事前に予想することはできません。 完了すると、更新されたコンプライアンス結果をポータルと SDK で使用できるようになります。
https://docs.microsoft.com/ja-jp/azure/governance/policy/how-to/get-compliance-data#evaluation-triggers
今回はこれで以上です。Azure Policyを利用すれば他にも様々なことを自動化することが可能ですので、お試しください。