はじめに


Microsoft 365はマイクロソフト社が提供するサブスクリプションサービスです。Microsoft Officeの他に、Microsoft TeamsやPower BI、Intuneなど企業向けのアプリケーションも利用できますので、この記事を読まれている方も利用されているのではないでしょうか。企業によってはこれらのアプリケーションがビジネスの成長や成功に欠かせないものになっており、Microsoft 365が利用できなくなった場合にはいち早く知りたいとのお声をいただくことが少なくありません。

幸いにもHarry Kimpelが外形監視 (Synthetic) を利用してMicrosoft 365の健全性に関する情報を収集して監視する「How to monitor Microsoft 365: Getting started」を公開してくれています。

私のこの記事ではHarryのブログでは触れられていないMicrosoft Entra IDとNew Relic Syntheticの設定を補足し、迅速に監視を開始できるように紹介します。

Microsoft Entraでの操作


HarryのブログではNew Relic SyntheticのScripted APIを利用しています。このScripted APIのスクリプトではMicrosoft Entra IDの次の5つの認証情報をパラメータとして使用します。

パラメータ 取得元
パラメータMSFT_TENANT_ID 取得元Microsoft AzureのテナントID
パラメータMSFT_CLIENT_ID 取得元Microsoft Entra ID のエンタープライズアプリケーションのアプリケーションID
パラメータMSFT_CLIENT_SECRET 取得元Microsoft Entra ID のエンタープライズアプリケーションのクライアントシークレット
パラメータMSFT_USERNAME 取得元Microsoft Graph APIを実行するMicrosoftユーザーのID
パラメータMSFT_USER_PASSWORD 取得元Microsoft Graph APIを実行するMicrosoftユーザーのパスワード

ここではこれらの作成方法や確認方法などの一例を記載しています。詳細な操作や最新情報などはマイクロソフト社のドキュメントを参照してください。

エンタープライズアプリケーションの作成


ここでは新しくアプリケーションを作成し、MSFT_CLIENT_IDおよびMSFT_TENANT_IDを取得します。

  1. Azureサービスの [Microsoft Entra ID] を選択します。
  2. Microsoft Entra IDのメニューから [アプリの登録] を選択します。
  3. [新規登録] をクリックし、アプリケーションを新規登録します。
  4. 作成されたアプリケーションの概要ページに表示される 次の値を記録します。
    アプリケーションの概要

クライアント シークレットの作成


作成したアプリケーションのシークレットを作成し、MSFT_CLIENT_SECRETを取得します。
なお、シークレットは作成直後しか表示されないので注意してください。

  1. 作成したアプリケーションのメニューから [証明書とシークレット] を選択します。
  2. [新しいクライアント シークレット] をクリックし、クライアントシークレットを追加します。
  3. 追加されたクライアントシークレットのページに表示される、次の値を記録します。
    クライアントシークレット
      • MSFT_CLIENT_SECRET の値になります

APIへのアクセス許可の設定


作成されたアプリケーションにMicrosoft Graph APIからのアクセスを許可します。一部のアクセス許可は管理者の同意が必要となります。
ここでは、Scripted APIのスクリプト使用するAPIのアクセス許可を設定していますが、各社のセキュリティポリシーなどに応じて変更してください。

  1. 作成したアプリケーションのメニューから [APIのアクセス許可] を選択します。
  2. [アクセス許可の追加] をクリックします。
  3. よく使用される Microsoft API から [Microsoft Graph] をクリックします。
    Microsoft Graph
  4. [委任されたアクセス許可] をクリックし、アプリケーションを登録します。
  5. 次のAPIを検索し、□ をチェックします。
    • offline_access
    • openid
    • profile
    • Servicehealth.Read.All
    • User.Read (最初からチェックされています)
  6. [アクセス許可の追加] をクリックします。
  7. 追加したアクセス許可のうち Servicehealth.Read.All は管理者の同意を与えるため、[**** に管理者の同意を与えます] をクリックします。(****はテナント名)
  8. 確認のメッセージが表示されますので [はい] をクリックし、アクセス許可が付与できたことを確認します。
    アクセス許可

New Relic Syntheticでの操作


How to monitor Microsoft 365: Getting started」で提供されているスクリプトをNew Relic SyntheticのScripted APIとして登録します。Harryのブログに記載されているように最新のスクリプトはGitHubリポジトリを確認してください。

アカウントIDおよびAPI Keyの取得


スクリプト内ではNew RelicのアカウントIDとAPI Key (Ingest - License) を使用しています。
次のドキュメントおよびブログを参考に、それぞれの値を取得してください。

Secure credentials の追加

スクリプト内で使用する認証情報は Secure credentials で保護しています。Scripted APIを作成する前にSecure credentialsを追加します。
Secure credentialsの詳細についてはドキュメント「スクリプト化されたブラウザやAPIテストのための安全な認証情報の保存」を参照してください。

  1. New Relic のメニューから [Synthetic Monitoring] を選択します。
  2. Synthetic Monitoring のメニューから [Secure credentials] を選択します。
  3. 画面右上の [Create secure credential] をクリックします。
  4. それぞれのKEYとVALUEを追加し、[Save] をクリックします。
    KEY VALUE
    KEYMSFT_TENANT_ID VALUEディレクトリ(テナント)ID
    KEYMSFT_CLIENT_ID VALUEアプリケーション(クライアント)ID
    KEYMSFT_CLIENT_SECRET VALUEクライアントシークレットの値
    KEYMSFT_USERNAME VALUEMicrosoftユーザーのID
    KEYMSFT_USER_PASSWORD VALUEMicrosoftユーザーのパスワード
    KEYNEW_RELIC_ACCOUNT_ID VALUENew Relic アカウントID
    KEYNEW_RELIC_INSIGHTS_INSERT_KEY VALUENew RelicのAPI Key

Scripted APIモニターの作成


Synthetic Monitor のTypeの1つである Scripted API を作成します。
詳細はドキュメント「モニターの追加と編集」を参照にしてください。

  1. Synthetic Monitoring のメニューから [Monitors] を選択します。
  2. 画面右上の [Create monitor] をクリックします。
    1. Select monitor type タブでは [Endpoint availability - Scripted API] をクリックします。
    2. Configure monitor タブではモニター名や監視間隔を設定します。[Runtime] はデフォルトの "Node 16.10.0" を選択してください。
    3. Select locations タブではスクリプトを実行する地域を選択します。
    4. Write script タブでは GitHubリポジトリ で提供されているスクリプトを貼り付けます。
  3. 画面下部の [Validate] をクリックし、スクリプトが正常に実行されることと確認します。
    バリデーション
  4. [Save monitor] をクリックし、モニターを保存します。
     

ダッシュボードの作成


これでMicrosoft 365のサービスの状態を監視できるようになりました。収集されたデータはカスタムイベントである "M365ServiceOverview" に登録されますので、このデータを可視化するためのダッシュボードを作成してみます。
ダッシュボードは自由に作成していただければと思いますが、HarryがGitHubリポジトリでサンプルダッシュボードのJSONを公開しているので、ここではこのサンプルをインポートしてみます。

  • ダッシュボードを追加する前に、JSON内に記述されている "NR_ACCOUNT_ID" をNew RelicのアカウントIDに置換してください。
  • このダッシュボードでは Status Widget Pack と呼ばれるカスタムビジュアライゼーションが使われています。あらかじめこちらから追加してください。

その他、詳細はドキュメント「ダッシュボードでのカスタムデータ可視化の作成 - ダッシュボードのインポート」を参照してください。

  1. New Relic のメニューから [Dashboards] を選択します。
  2. 画面右上の [Import dashboard] をクリックします。
  3. [Paste your JSON code] に GitHubリポジトリで公開されているJSONを貼り付けます。 "NR_ACCOUNT_ID" の置換を忘れないでください
  4. [Import dashboard] をクリックします。
  5. 追加したダッシュボード "Microsoft 365 - Service Overview" にデータが表示されることを確認します。
    •  ダッシュボード右側の Status Table Widget にデータが表示されない場合、ここから Status Widget Pack を追加してください。
      Status Widget Pack

まとめ


New Relic SyntheticのScripted APIからMicrosoft Graph APIを実行することによりMicrosoft 365のサービス状態が確認できるようになりました。
これらのスクリプトやダッシュボードをカスタマイズして、皆さんの必要とする情報をさらに取得してみてください。

New Relic Synthetic ではScripted APIの他にも、ブラウザ画面の操作をシミュレートするScripted BrowserやSimple Browserなどがご利用いただけます。ぜひこれらも試してみたください。