你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

使用 Azure Resource Graph 排查错误

使用 Azure Resource Graph 查询 Azure 资源时,可能会遇到错误。 本文描述了可能会发生的各种错误及其解决方法。

查找错误详细信息

大多数错误都是关于使用 Azure Resource Graph 运行查询时出现的问题。 当查询失败时,SDK 会提供有关失败查询的详细信息。 此信息会指出存在的问题,以便可以修复问题并确保后续查询成功进行。

常规错误

场景:限制的请求数

问题

进行大量或频繁资源查询的客户受到了请求数限制。

原因

Azure Resource Graph 基于时段为每个用户分配配额数量。 例如,用户可以在每 5 秒的时段内最多发送 15 个查询,而不会受到限制。 配额值取决于多种因素并可能会发生更改。 有关详细信息,请参阅 Azure Resource Graph 中的限制

解决方法

有多种方法可处理请求受限问题:

场景:订阅过多

问题

有权访问 1,000 多个订阅(包括使用 Azure Lighthouse 的跨租户订阅)的客户无法通过对 Azure Resource Graph 的一次调用获取所有订阅的数据。

原因

Azure CLI 和 PowerShell 仅将前 1,000 个订阅转发到 Azure Resource Graph。 Azure Resource Graph 的 REST API 接受要对其执行查询的最大订阅数。

解决方法

对包含订阅子集的查询的请求进行批处理,让子集保持在 1,000 个订阅的限制以内。 解决方法是在 PowerShell 中使用 Subscription 参数。

# Replace this query with your own
$query = 'Resources | project type'

# Fetch the full array of subscription IDs
$subscriptions = Get-AzSubscription
$subscriptionIds = $subscriptions.Id

# Create a counter, set the batch size, and prepare a variable for the results
$counter = [PSCustomObject] @{ Value = 0 }
$batchSize = 1000
$response = @()

# Group the subscriptions into batches
$subscriptionsBatch = $subscriptionIds | Group -Property { [math]::Floor($counter.Value++ / $batchSize) }

# Run the query for each batch
foreach ($batch in $subscriptionsBatch){ $response += Search-AzGraph -Query $query -Subscription $batch.Group }

# View the completed results of the query on all subscriptions
$response

场景:不受支持的 Content-type REST 标头

问题

客户查询 Azure Resource Graph REST API 时,返回 500(内部服务器错误)响应。

原因

Azure Resource Graph REST API 仅支持 application/jsonContent-Type。 某些 REST 工具或代理默认为 text/plain,这不受 REST API 支持。

解决方法

验证用于查询 Azure Resource Graph 的工具或代理是否为 application/json 配置了 REST API 标头 Content-Type

场景:没有对列表中所有订阅的读取权限

问题

客户使用 Azure Resource Graph 查询显式传递订阅列表时,获得 403(禁止)响应。

原因

如果客户没有对提供的所有订阅的读取权限,则该请求将因缺乏相应安全权限而被拒绝。

解决方法

在订阅列表中至少包含一个订阅,运行查询的客户对其至少具有读取访问权限。 有关详细信息,请参阅 Azure Resource Graph 中的权限

场景:Azure Resource Graph 字段未即时更新

问题

使用 Azure Resource Graph 时,特定字段的更新速度较慢。 这些字段会随着时间的推移收敛到真实值,前提是其间没有更新。

受影响字段的列表

重要

  • 此概念并不局限于特定的属性。 以下列表是你可能会发现其存在延迟但最终会更新的示例。
  • 在某些情况下,VM 状态会异步更新,这意味着当前状态会与“目标状态”(客户设置的期望状态)不匹配。 然而,这些 VM 字段会随着时间的推移而收敛。
  • properties.extended.instanceView.osName
  • properties.extended.instanceView.osVersion
  • properties.extended.instanceView.computerName

原因

一些字段来自没有通知覆盖的代理 blob,因此这些字段的更新会延迟。

解决方法

这些字段现在更新速度较慢,但会随着时间的推移收敛到真实值,前提是其间没有更新。

后续步骤

如果你的问题未在本文中列出,或者无法解决问题,请访问以下渠道之一获取更多支持:

  • 请通过 Azure 论坛获取 Azure 专家的解答。
  • 连接到 @AzureSupport – Microsoft Azure 官方帐户,它可以将 Azure 社区引导至适当的资源来改进客户体验:提供解答、支持和专业化服务。
  • 如需更多帮助,可以提交 Azure 支持事件。 请转到 Azure 支持站点并选择 获取支持