はじめに
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を取得します。
- Azureサービスの [Microsoft Entra ID] を選択します。
- Microsoft Entra IDのメニューから [アプリの登録] を選択します。
- [新規登録] をクリックし、アプリケーションを新規登録します。
- 作成されたアプリケーションの概要ページに表示される 次の値を記録します。
- アプリケーション(クライアント)ID
- MSFT_CLIENT_ID の値になります
- ディレクトリ(テナント)ID
- MSFT_TENANT_ID の値になります
- アプリケーション(クライアント)ID
クライアント シークレットの作成
作成したアプリケーションのシークレットを作成し、MSFT_CLIENT_SECRETを取得します。
なお、シークレットは作成直後しか表示されないので注意してください。
- 作成したアプリケーションのメニューから [証明書とシークレット] を選択します。
- [新しいクライアント シークレット] をクリックし、クライアントシークレットを追加します。
- 追加されたクライアントシークレットのページに表示される、次の値を記録します。
- 値
- MSFT_CLIENT_SECRET の値になります
- 値
APIへのアクセス許可の設定
作成されたアプリケーションにMicrosoft Graph APIからのアクセスを許可します。一部のアクセス許可は管理者の同意が必要となります。
ここでは、Scripted APIのスクリプト使用するAPIのアクセス許可を設定していますが、各社のセキュリティポリシーなどに応じて変更してください。
- 作成したアプリケーションのメニューから [APIのアクセス許可] を選択します。
- [アクセス許可の追加] をクリックします。
- よく使用される Microsoft API から [Microsoft Graph] をクリックします。
- [委任されたアクセス許可] をクリックし、アプリケーションを登録します。
- 次のAPIを検索し、□ をチェックします。
- offline_access
- openid
- profile
- Servicehealth.Read.All
- User.Read (最初からチェックされています)
- [アクセス許可の追加] をクリックします。
- 追加したアクセス許可のうち Servicehealth.Read.All は管理者の同意を与えるため、[**** に管理者の同意を与えます] をクリックします。(****はテナント名)
- 確認のメッセージが表示されますので [はい] をクリックし、アクセス許可が付与できたことを確認します。
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) を使用しています。
次のドキュメントおよびブログを参考に、それぞれの値を取得してください。
- アカウントID | New Relic Documentation
- API Key生成方法について | New Relic
Secure credentials の追加
スクリプト内で使用する認証情報は Secure credentials で保護しています。Scripted APIを作成する前にSecure credentialsを追加します。
Secure credentialsの詳細についてはドキュメント「スクリプト化されたブラウザやAPIテストのための安全な認証情報の保存」を参照してください。
- New Relic のメニューから [Synthetic Monitoring] を選択します。
- Synthetic Monitoring のメニューから [Secure credentials] を選択します。
- 画面右上の [Create secure credential] をクリックします。
- それぞれの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 を作成します。
詳細はドキュメント「モニターの追加と編集」を参照にしてください。
- Synthetic Monitoring のメニューから [Monitors] を選択します。
- 画面右上の [Create monitor] をクリックします。
- Select monitor type タブでは [Endpoint availability - Scripted API] をクリックします。
- Configure monitor タブではモニター名や監視間隔を設定します。[Runtime] はデフォルトの "Node 16.10.0" を選択してください。
- Select locations タブではスクリプトを実行する地域を選択します。
- Write script タブでは GitHubリポジトリ で提供されているスクリプトを貼り付けます。
- 画面下部の [Validate] をクリックし、スクリプトが正常に実行されることと確認します。
- [Save monitor] をクリックし、モニターを保存します。
ダッシュボードの作成
これでMicrosoft 365のサービスの状態を監視できるようになりました。収集されたデータはカスタムイベントである "M365ServiceOverview" に登録されますので、このデータを可視化するためのダッシュボードを作成してみます。
ダッシュボードは自由に作成していただければと思いますが、HarryがGitHubリポジトリでサンプルダッシュボードのJSONを公開しているので、ここではこのサンプルをインポートしてみます。
- ダッシュボードを追加する前に、JSON内に記述されている "NR_ACCOUNT_ID" をNew RelicのアカウントIDに置換してください。
- このダッシュボードでは Status Widget Pack と呼ばれるカスタムビジュアライゼーションが使われています。あらかじめこちらから追加してください。
その他、詳細はドキュメント「ダッシュボードでのカスタムデータ可視化の作成 - ダッシュボードのインポート」を参照してください。
- New Relic のメニューから [Dashboards] を選択します。
- 画面右上の [Import dashboard] をクリックします。
- [Paste your JSON code] に GitHubリポジトリで公開されているJSONを貼り付けます。 "NR_ACCOUNT_ID" の置換を忘れないでください。
- [Import dashboard] をクリックします。
- 追加したダッシュボード "Microsoft 365 - Service Overview" にデータが表示されることを確認します。
- ダッシュボード右側の Status Table Widget にデータが表示されない場合、ここから Status Widget Pack を追加してください。
- ダッシュボード右側の Status Table Widget にデータが表示されない場合、ここから Status Widget Pack を追加してください。
まとめ
New Relic SyntheticのScripted APIからMicrosoft Graph APIを実行することによりMicrosoft 365のサービス状態が確認できるようになりました。
これらのスクリプトやダッシュボードをカスタマイズして、皆さんの必要とする情報をさらに取得してみてください。
New Relic Synthetic ではScripted APIの他にも、ブラウザ画面の操作をシミュレートするScripted BrowserやSimple Browserなどがご利用いただけます。ぜひこれらも試してみたください。
The views expressed on this blog are those of the author and do not necessarily reflect the views of New Relic. Any solutions offered by the author are environment-specific and not part of the commercial solutions or support offered by New Relic. Please join us exclusively at the Explorers Hub (discuss.newrelic.com) for questions and support related to this blog post. This blog may contain links to content on third-party sites. By providing such links, New Relic does not adopt, guarantee, approve or endorse the information, views or products available on such sites.