Устранение неполадок с помощью службы Azure Resource Graph
При запросе ресурсов Azure с помощью Azure Resource Graph могут возникнуть ошибки. В этой статье описываются различные ошибки, которые могут возникнуть и как их устранить.
Поиск сведений об ошибке
Большинство ошибок возникают в результате неполадок при выполнении запроса с использованием Azure Resource Graph. При сбое запроса пакет SDK выводит сведения о сбое в обработке запроса. Эти сведения указывают на проблемы, которые нужно исправить, чтобы следующий запрос был выполнен успешно.
Общие ошибки
Сценарий: регулирование запросов
Проблема
Для заказчиков, отправляющих большие запросы ресурсов или отправляющих их часто, запросы регулируются.
Причина
Azure Resource Graph выделяет количественную квоту для каждого пользователя с учетом временного окна. Например, пользователь не может отправить более 15 запросов в течение 5 секунд, иначе применяется регулирование. Значение квоты определяется множеством факторов и может изменяться. Дополнительные сведения см. в разделе Регулирование в Azure Resource Graph.
Разрешение
Существует несколько способов работы с регулируемыми запросами.
- Группирование запросов
- Поочередная отправка запросов
- Параллельная отправка запросов
- Разбиение на страницы
Сценарий: слишком много подписок
Проблема
Заказчики, у которых есть доступ более чем к 1000 подпискам, включая подписки для нескольких арендаторов в Azure Lighthouse, не могут получать данные из всех подписок в рамках одного вызова Azure Resource Graph.
Причина
Azure CLI и PowerShell переадресуют только первые 1000 подписок в Azure Resource Graph. REST API для Azure Resource Graph принимает максимальное число подписок, для которых выполняется запрос.
Разрешение
Число запросов с набором подписок, добавляемых в пакет, не должно превышать 1000 подписок. Решение использует параметр Subscription в PowerShell.
# 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
Сценарий: неподдерживаемый заголовок REST типа контента
Проблема
Заказчики, запрашивающие REST API Azure Resource Graph, получают ответ 500 (Внутренняя ошибка сервера).
Причина
REST API Azure Resource Graph поддерживает только .Content-Type
application/json
Некоторые средства REST или агенты по умолчанию text/plain
не поддерживаются REST API.
Разрешение
Убедитесь, что средство или агент, который вы используете для запроса Azure Resource Graph, имеет заголовок Content-Type
REST API, настроенный для application/json
.
Сценарий: нет разрешения на чтение для всех подписок в списке
Проблема
Заказчики, которые явным образом передают список подписок с запросом Azure Resource Graph, получают ответ 403 (Запрещено).
Причина
Если у клиента нет разрешения на чтение для всех предоставленных подписок, запрос отклоняется из-за недостаточных прав доступа.
Разрешение
Добавьте хотя бы одну подписку в список подписок, чтобы предоставить заказчику, отправляющему запрос, хотя бы доступ для чтения. Дополнительные сведения см. в разделе Разрешения в Azure Resource Graph.
Сценарий: поля Azure Resource Graph не обновляются немедленно
Проблема
Существуют определенные поля при использовании Azure Resource Graph, которые обновляются при более медленной скорости. Эти поля будут конвергентны к истинным значениям с течением времени, если между ними нет обновлений.
Список затронутых полей
Внимание
- Эта концепция не ограничивается определенными свойствами. В следующем списке приведены примеры, которые могут быть отложены, но в конечном итоге будут обновлены.
- Существуют некоторые случаи, когда состояния виртуальной машины обновляются асинхронно, что означает, что текущее состояние не соответствует "состоянию цели" (требуемому состоянию, заданному клиентами). Однако эти поля виртуальной машины будут конвергентироваться со временем.
- properties.extended.instanceView.osName
- properties.extended.instanceView.osVersion
- properties.extended.instanceView.computerName
Причина
Некоторые поля отправляются из больших двоичных объектов агента, которые не имеют охвата уведомлений, поэтому обновления этих полей задерживаются.
Разрешение
Эти поля обновляются на более медленном уровне сегодня, но с течением времени будут конвергентны к истинным значениям, если между ними нет обновлений.
Следующие шаги
Если вы не видите своего варианта проблемы или вам не удается ее устранить, дополнительные сведения можно получить, посетив один из следующих каналов.
- Получите ответы специалистов Azure на форумах Azure.
- Подключитесь к @AzureSupport — официальной учетной записи Microsoft Azure, созданной для оптимизации работы клиентов благодаря возможности доступа к ресурсам сообщества Azure, включая ответы на вопросы, поддержку и консультации специалистов.
- Если вам нужна дополнительная помощь, отправьте запрос в службу поддержки Azure. Перейдите на сайт поддержки Azure и щелкните Получить поддержку.