プロビジョニングを Azure Monitor ログと統合する方法の概要

プロビジョニングは、Azure Monitor ログおよび Log Analytics と統合されています。 Azure Monitoring を使用すると、ブック (ダッシュボードとも呼ばれます) の作成、プロビジョニング ログの 30 日以上の保存、カスタム クエリとアラートの作成などを行うことができます。 この記事では、プロビジョニング ログを Azure Monitor ログと統合する方法について説明します。 プロビジョニング ログの全般的なしくみの詳細については、プロビジョニング ログに関するページを参照してください。

プロビジョニング ログの有効化

Azure Monitoring と Log Analytics については既に理解している必要があります。 そうでない場合は、別のページでそれらについて学習してから、このページに戻ってアプリケーションのプロビジョニング ログについて学習してください。 Azure Monitoring の詳細については、「Azure Monitor の概要」を参照してください。 Azure Monitor ログと Log Analytics の詳細については、「Azure Monitor のログ クエリの概要」を参照してください。

Azure Monitoring を構成すると、アプリケーションのプロビジョニングのログを有効にすることができます。 このオプションは、 [診断設定] ページにあります。

Access diagnostic settings

Enable application provisioning logs

Note

最近ワークスペースをプロビジョニングしたばかりの場合は、ログを送信できるようになるまでに時間がかかることがあります。 サブスクリプションが microsoft.insights を使用するように登録されていないというエラーを受け取った場合は、数分後にもう一度確認してください。

データの説明

プロビジョニングからログ ビューアーに送信される基のデータ ストリームはほぼ同じです。 Azure Monitor ログには、Azure portal UI および Azure API とほぼ同じストリームが取得されます。 次の表に示すように、ログ フィールドにはわずかな違いしかありません。 これらのフィールドの詳細については、「provisioningObjectSummary を一覧表示する」を参照してください。

Azure Monitor ログ Azure portal UI Azure API
errorDescription reason resultDescription
status resultType resultType
activityDateTime TimeGenerated TimeGenerated

Azure Monitor ブック

Azure Monitor ブックには、データ分析用の柔軟なキャンバスが用意されています。 また、Azure portal 内で上質なビジュアル レポートを作成することもできます。 詳細については、Azure Monitor ブックの概要に関するページを参照してください。

アプリケーションのプロビジョニングには、あらかじめ構築された一連のブックが付属しています。 これらは、[ブック] ページで確認できます。 データを表示するには、すべてのフィルター (timeRange、jobID、appName) を設定する必要があります。 また、アプリがプロビジョニングされていることも確認します。プロビジョニングされていないと、ログにはデータがありません。

Application provisioning workbooks

Application provisioning dashboard

カスタム クエリ

カスタム クエリを作成し、Azure ダッシュボードにデータを表示することができます。 方法については、Log Analytics データのダッシュボードの作成と共有に関するページを参照してください。 また、Azure Monitor のログ クエリの概要に関するページも参照してください。

アプリケーション プロビジョニングを始めるためのいくつかのサンプルを次に示します。

ソース システムの ID に基づいて、ユーザーのログに対してクエリを実行する:

AADProvisioningLogs
| extend SourceIdentity = parse_json(SourceIdentity)
| where tostring(SourceIdentity.Id) == "49a4974bb-5011-415d-b9b8-78caa7024f9a"

ErrorCode あたりの集計数:

AADProvisioningLogs
| summarize count() by ErrorCode = ResultSignature

アクション別の 1 日あたりのイベント数の集計:

AADProvisioningLogs
| where TimeGenerated > ago(7d)
| summarize count() by Action, bin(TimeGenerated, 1d)

100 イベントとプロジェクト キーのプロパティを取得する:

AADProvisioningLogs
| extend SourceIdentity = parse_json(SourceIdentity)
| extend TargetIdentity = parse_json(TargetIdentity)
| extend ServicePrincipal = parse_json(ServicePrincipal)
| where tostring(SourceIdentity.identityType) == "Group"
| project tostring(ServicePrincipal.Id), tostring(ServicePrincipal.Name), ModifiedProperties, JobId, Id, CycleId, ChangeId, Action, SourceIdentity.identityType, SourceIdentity.details, TargetIdentity.identityType, TargetIdentity.details, ProvisioningSteps
| take 100

参照の解決に問題があるため、スキップされたメンバーがあるグループを取得します。

AADProvisioningLogs
| where TimeGenerated >= ago(10d)
| where JobId == "Azure2Azure.73f0883f-d67d-4af1-ac8a-45367f8982e0.5ef3be57-f45f-451g-88c4-68a7fda680bb" // Customize by adding a specific app JobId
| extend SourceIdentity = parse_json(SourceIdentity)
| extend ProvisioningSteps = parse_json(ProvisioningSteps)
| where tostring(SourceIdentity.identityType) == "Group"
| where ProvisioningSteps matches regex "UnableToResolveReferenceAttributeValue"
| parse tostring(ProvisioningSteps.[2].description) with "We were unable to assign " userObjectId " as the members of " groupDisplayName "." *
| project groupDisplayName, userObjectId,  JobId
| take 100

アプリケーション別にアクションを要約します。

AADProvisioningLogs
| where TimeGenerated > ago(30d)
| where JobId == "Azure2Azure.73f0883f-d67d-4af1-ac8a-45367f8982e0.5ef3be57-f45f-451g-88c4-68a7fda680bb" // Customize by adding a specific app JobId
| extend ProvisioningSteps = parse_json(ProvisioningSteps)
| extend eventName = tostring(ProvisioningSteps.[-1].name)
| summarize count() by eventName, JobId
| order by JobId asc
| take 5

特定の操作の急増を特定します。

AADProvisioningLogs
| where TimeGenerated > ago(30d)
| where JobId == "scim.73f0883f-d67d-4af1-ac8a-45367f8982e0.5ef3be57-f45f-451g-88c4-68a7fda680bb" // Customize by adding a specific app JobId
| extend ProvisioningSteps = parse_json(ProvisioningSteps)
| extend eventName = tostring(ProvisioningSteps.[-1].name)
| summarize count() by eventName, bin(TimeGenerated, 1d)
| render timechart

カスタム アラート

Azure Monitor を使用すると、プロビジョニングに関連する主要なイベントに関する通知を受け取ることができるように、カスタム アラートを構成することができます。 たとえば、障害が急増した場合にアラートを受け取ることができます。 また、無効または削除が急増することもあります。 アラートが必要なもう 1 つの例として、プロビジョニングがないことがあります。これは、何かがうまく行っていないことを示します。

アラートについて詳しくは、Azure Monitor のログ アラートに関するページをご覧ください。

障害が急増した場合にアラートを発します。 jobID は、お使いのアプリケーションの jobID に置き換えてください。

Alert when there's a spike in failures.

プロビジョニング サービスが動作しなくなる原因となった問題が存在する可能性があります。 次のアラートを使用して、特定の期間にプロビジョニング イベントがないことを検出します。

There may be an issue that caused the provisioning service to stop running.

無効または削除が急増した場合にアラートを発します。

Alert when there's a spike in disables or deletes.

コミュニティからの投稿

Microsoft では、アプリケーションのプロビジョニングのクエリとダッシュボードに対して、オープン ソースとコミュニティベースのアプローチを採用しています。 ぜひ、他のユーザーに役立つと思われるクエリ、アラート、またはブックを作成し、Azure Monitor コミュニティの GitHub リポジトリに公開してください。 そして、リンクを含むメールを Microsoft までお送りください。 Microsoft がクエリとダッシュボードをレビューしてサービスに公開し、他のユーザーも利用できるようにします。 provisioningfeedback@microsoft.com までお問い合わせください。

次のステップ