了解预配与 Azure Monitor 日志的集成方式

预配与 Azure Monitor 日志和 Log Analytics 集成。 借助 Azure 监视,可以创建工作簿(也称为仪表板)、将预配日志存储 30 天以上,以及创建自定义查询和警报等。 本文介绍预配日志与 Azure Monitor 日志的集成方式。 若要详细了解预配日志的一般工作原理,请参阅预配日志

启用预配日志

你应该已熟悉 Azure 监视和 Log Analytics。 如果不熟悉,请跳转以了解相关信息,然后再返回了解应用程序预配日志。 若要详细了解 Azure 监视,请参阅 Azure Monitor 概述。 若要详细了解 Azure Monitor 日志和 Log Analytics,请参阅 Azure Monitor 中的日志查询概述

配置 Azure 监视后,可以为应用程序预配启用日志。 选项位于“诊断设置”页上。

Access diagnostic settings

Enable application provisioning logs

注意

如果最近刚预配了工作区,则可能需要一些时间才能向其发送日志。 如果收到错误消息,指出订阅未注册为使用 microsoft.insights,请在几分钟后再返回查看。

了解数据

预配发送给日志查看器的基础数据流几乎完全相同。 Azure Monitor 日志获取与 Azure 门户 UI 和 Azure API 几乎相同的流。 下表列出的日志字段仅有少数差异。 若要详细了解这些字段,请参阅列出 provisioningObjectSummary

Azure Monitor 日志 Azure 门户 UI Azure API
errorDescription reason resultDescription
status resultType resultType
activityDateTime TimeGenerated TimeGenerated

Azure Monitor 工作簿

Azure Monitor 工作簿为数据分析提供了一个灵活的画布。 它们还提供在 Azure 门户中创建丰富的可视化报表的功能。 若要了解详细信息,请参阅 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

按操作汇总每天的事件计数:

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,可以配置自定义警报,以便可以收到有关与预配相关的关键事件的通知。 例如,你可能希望收到有关故障高峰的警报。 或者收到有关禁用高峰或删除高峰的警报。 可能希望收到的警报的另一个示例是缺少预配,这表明出现了问题。

有关警报的详细信息,请参阅 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.

社区参与

我们正在为应用程序预配查询和仪表板采用一种开源的、基于社区的方法。 生成你认为对其他人有用的查询、警报或工作簿,然后将其发布到 AzureMonitorCommunity GitHub 存储库。 向我们发送带有链接的电子邮件。 我们会查看查询和仪表板并将其发布到服务,以便其他人也能从中受益。 请通过 provisioningfeedback@microsoft.com 联系我们。

后续步骤