Метрики Azure Resource Manager в Azure Monitor
Когда вы создаете ресурсы в Azure и управляете ими, оркестрация ваших запросов осуществляется на уровне управления Azure — в Azure Resource Manager. В этой статье описывается, как выполнять мониторинг объема и задержки запросов уровня управления в Azure.
Эти метрики позволяют наблюдать за трафиком и задержкой для запросов уровня управления во всех подписках. Например, теперь можно выяснить, когда запросы были отрегулированы или завершились сбоем, отфильтровав определенные коды состояния путем проверки регулируемых запросов и ошибок сервера.
Метрики доступны в течение трех месяцев (93 дней) и отслеживают только синхронные запросы. В таком сценарии, как создание виртуальной машины, метрики не отражают производительность и надежность длительной асинхронной операции.
Доступ к метрикам Azure Resource Manager
Получить доступ к метрикам уровня управления можно с помощью REST API Azure Monitor, пакетов SDK и портала Azure (выбрав метрику "Azure Resource Manager"). Общие сведения о Azure Monitor см. в статье Метрики Azure Monitor.
Для доступа к метрикам уровня управления не существует процедуры согласия или регистрации.
Инструкции по получению маркера носителя и выполнению запросов в Azure см. в справке по REST API Azure.
Определение метрики
Определение метрик Azure Resource Manager в Azure Monitor доступно только в версии API 2017-12-01-preview. Чтобы получить определение, можно выполнить следующий фрагмент, заменив "00000000-0000-0000-0000-000000000000" на ИД своей подписки:
curl --location --request GET 'https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/microsoft.insights/metricDefinitions?api-version=2017-12-01-preview&metricnamespace=microsoft.resources/subscriptions' \
--header 'Authorization: bearer {{bearerToken}}'
Этот фрагмент кода возвращает определение для схемы метрик. Эта схема включает измерения, по которым можно выполнять фильтрацию с помощью API Monitor.
Название измерения | Описание |
---|---|
ResourceUri | Полный ИД ресурса для определенного ресурса. |
RequestRegion | Регион Azure Resource Manager, в который поступают запросы уровня управления, например "EastUS2". Этот регион не является расположением ресурса. |
StatusCode | Тип отклика Azure Resource Manager для запроса уровня управления. Возможные значения (некоторые): - 0 - 200 - 201 - 400 - 404 - 429 - 500 - 502 |
StatusCodeClass | Класс кода состояния, возвращаемого Azure Resource Manager. Возможны следующие значения: - 2xx - 4xx - 5xx |
Пространство имен | Пространство имен для поставщика ресурсов (прописными буквами, например, MICROSOFT.COMPUTE). |
ResourceType | Любой тип ресурса в Azure, который вы создали или к которому отправили запрос (прописными буквами, например, VIRTUALMACHINES). |
Метод | Метод HTTP, используемый в запросе, отправленном к Azure Resource Manager. Возможны следующие значения: - GET - HEAD - PUT - POST - PATCH - DELETE |
Примеры
Теперь рассмотрим некоторые сценарии, которые помогут ознакомиться с метриками Azure Resource Manager.
Запрос метрик уровня управления "Трафик" и "Задержка" на портале Azure
Сначала перейдите к колонке Azure Monitor на портале:
Нажмите Ознакомиться с метриками, выберите одну подписку, а затем выберите метрику Azure Resource Manager.
Затем нажмите Применить. Теперь можно визуализировать метрики уровня управления "Трафик" или "Задержка" с помощью настраиваемой фильтрации и разделения:
Запрос метрик уровня управления "Трафик" и "Задержка" с помощью REST API
После проверки подлинности в Azure можно выполнить запрос на получение метрик уровня управления для подписки. В скрипте замените "00000000000-0000-0000-00000000000000" на идентификатор подписки. Скрипт получит среднюю задержку запроса (в секундах) и общее количество запросов за два дня, разбитое на интервалы в один день:
curl --location --request GET "https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/microsoft.insights/metrics?api-version=2021-05-01&interval=P1D&metricnames=Latency&metricnamespace=microsoft.resources/subscriptions®ion=global&aggregation=average,count×pan=2021-11-01T00:00:00Z/2021-11-03T00:00:00Z" \
--header "Authorization: bearer {{bearerToken}}"
В случае с метриками Azure Resource Manager можно получить объем трафика путем использования метрики "Задержка" и включения агрегата count. Вы увидите ответ JSON для запроса:
{
"cost": 5758,
"timespan": "2021-11-01T00:00:00Z/2021-11-03T00:00:00Z",
"interval": "P1D",
"value": [
{
"id": "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Insights/metrics/Latency",
"type": "Microsoft.Insights/metrics",
"name": {
"value": "Latency",
"localizedValue": "Latency"
},
"displayDescription": "Latency data for all requests to Azure Resource Manager",
"unit": "Seconds",
"timeseries": [
{
"metadatavalues": [],
"data": [
{
"timeStamp": "2021-11-01T00:00:00Z",
"count": 1406.0,
"average": 0.19345163584637273
},
{
"timeStamp": "2021-11-02T00:00:00Z",
"count": 1517.0,
"average": 0.28294792353328935
}
]
}
],
"errorCode": "Success"
}
],
"namespace": "microsoft.resources/subscriptions",
"resourceregion": "global"
}
Если нужно получить только объем трафика, можно использовать метрику "Трафик" с агрегатом count:
curl --location --request GET 'https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/microsoft.insights/metrics?api-version=2021-05-01&interval=P1D&metricnames=Traffic&metricnamespace=microsoft.resources/subscriptions®ion=global&aggregation=count×pan=2021-11-01T00:00:00Z/2021-11-03T00:00:00Z' \
--header 'Authorization: bearer {{bearerToken}}'
Ответ на запрос выглядит следующим образом:
{
"cost": 2879,
"timespan": "2021-11-01T00:00:00Z/2021-11-03T00:00:00Z",
"interval": "P1D",
"value": [
{
"id": "subscriptions/00000000-0000-0000-0000-000000000000/providers/Microsoft.Insights/metrics/Traffic",
"type": "Microsoft.Insights/metrics",
"name": {
"value": "Traffic",
"localizedValue": "Traffic"
},
"displayDescription": "Traffic data for all requests to Azure Resource Manager",
"unit": "Count",
"timeseries": [
{
"metadatavalues": [],
"data": [
{
"timeStamp": "2021-11-01T00:00:00Z",
"count": 1406.0
},
{
"timeStamp": "2021-11-02T00:00:00Z",
"count": 1517.0
}
]
}
],
"errorCode": "Success"
}
],
"namespace": "microsoft.resources/subscriptions",
"resourceregion": "global"
}
Для метрик с поддержкой измерений необходимо указать значение измерения, чтобы увидеть соответствующие значения метрик. Например, если вы хотите просмотреть задержку для успешно выполненных запросов к ARM, необходимо выполнить фильтрацию по измерению StatusCodeClass со значением 2XX.
Если вы хотите посмотреть количество запросов, выполненных в вашей подписке для сетевых ресурсов, таких как виртуальные сети и подсистемы балансировки нагрузки, необходимо выполнить фильтрацию по измерению Namespace со значением MICROSOFT.NETWORK.
Регулируемые запросы
Чтобы просмотреть только регулируемые запросы, необходимо отфильтровать только ответы с кодом состояния 429. Для вызовов REST API фильтрация выполняется с помощью свойства $filter и измерения StatusCode путем добавления: $filter=StatusCode eq '429', как показано в конце запроса в следующем фрагменте:
curl --location --request GET 'https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/microsoft.insights/metrics?api-version=2021-05-01&interval=P1D&metricnames=Latency&metricnamespace=microsoft.resources/subscriptions®ion=global&aggregation=count,average×pan=2021-11-01T00:00:00Z/2021-11-03T00:00:00Z&$filter=StatusCode%20eq%20%27429%27' \
--header 'Authorization: bearer {{bearerToken}}'
Вы также можете выполнить фильтрацию непосредственно на портале:
Ошибки сервера
Так же как и при анализе регулируемых запросов, для просмотра всех запросов, возвративших код ответа ошибки сервера, можно выполнить фильтрацию только по ответам 5xx. Для вызовов REST API фильтрация выполняется с помощью свойства $filter и измерения StatusCodeClass путем добавления: $filter=StatusCodeClass eq '5xx', как показано в конце запроса в следующем фрагменте:
curl --location --request GET 'https://management.azure.com/subscriptions/00000000-0000-0000-0000-000000000000/providers/microsoft.insights/metrics?api-version=2021-05-01&interval=P1D&metricnames=Latency&metricnamespace=microsoft.resources/subscriptions®ion=global&aggregation=count,average×pan=2021-11-01T00:00:00Z/2021-11-03T00:00:00Z&$filter=StatusCodeClass%20eq%20%275xx%27' \
--header 'Authorization: bearer {{bearerToken}}'
Вы также можете выполнить фильтрацию универсальных ошибок сервера на портале, задав для свойства фильтра значение StatusCodeClass и значение 5xx, как в примере регулирования.