如何在Azure中快速排查资源的诊断日志设置关联情况?
Azure诊断日志配置排查的简便方法
1. Azure门户原生工具
- 资源组批量检视:进入目标资源组,左侧菜单选择「诊断设置」(部分场景在「监控」子菜单下),可直接查看组内所有支持诊断日志的资源状态——标注「已启用」的是已配置资源,「未启用」则未配置。点击对应资源的诊断设置,就能查看具体配置的日志类别、目标存储账户/事件中心/Log Analytics工作区等选项。
- Azure Policy合规校验:使用内置的「诊断日志应在资源上启用」类策略,通过合规性仪表板批量筛选未配置诊断日志的资源,直接查看合规状态对应的资源详情,还可一键触发修正。
2. Azure Resource Graph高效查询
这是比PowerShell/AZ CLI更快捷的批量查询方式,无需逐资源遍历:
- 查询未配置诊断日志的资源:
Resources | where type !in ('microsoft.resources/subscriptions', 'microsoft.resources/resourcegroups') | extend diagnosticSettings = parse_json(properties.diagnosticSettings) | where isempty(diagnosticSettings) or array_length(diagnosticSettings) == 0 | project name, type, resourceGroup, subscriptionId
- 查询已配置资源的具体设置:
Resources | where type !in ('microsoft.resources/subscriptions', 'microsoft.resources/resourcegroups') | extend diagnosticSettings = parse_json(properties.diagnosticSettings) | where isnotempty(diagnosticSettings) | mv-expand diagnosticSettings | project name, type, resourceGroup, subscriptionId, settingName = diagnosticSettings.name, logsEnabled = diagnosticSettings.logs, metricsEnabled = diagnosticSettings.metrics, destinations = strcat(diagnosticSettings.storageAccountId, " | ", diagnosticSettings.eventHubAuthorizationRuleId, " | ", diagnosticSettings.workspaceId)
在Azure门户的「Resource Graph Explorer」中执行上述查询,可快速获取跨资源组/订阅的批量结果。
3. Log Analytics反向验证(针对已流入日志的资源)
若已有部分资源的诊断日志发送至Log Analytics,可通过查询AzureDiagnostics表反向验证配置状态(仅覆盖已发送日志的资源,适合补充校验):
AzureDiagnostics | summarize by ResourceId, ResourceType | join kind=leftouter ( Resources | where type !in ('microsoft.resources/subscriptions', 'microsoft.resources/resourcegroups') | project ResourceId, name, resourceGroup ) on ResourceId | project name, ResourceType, resourceGroup, hasDiagnosticLogs = iif(isnotempty(ResourceId), "已配置", "未确认")
补充:你之前尝试的Microsoft Graph并非不可行,大概率是权限或查询路径问题——需具备Monitoring.Read权限,可调用GET /subscriptions/{subscriptionId}/providers/microsoft.insights/diagnosticSettings批量获取订阅内所有诊断设置,或针对单个资源调用GET /subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/{resourceProviderNamespace}/{resourceType}/{resourceName}/providers/microsoft.insights/diagnosticSettings获取详情。
内容的提问来源于stack exchange,提问作者John Wilmar Herrera Gil
相关产品推荐
相关产品推荐

