Метрики 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 с выделенным элементом

Нажмите Ознакомиться с метриками, выберите одну подписку, а затем выберите метрику Azure Resource Manager.

Снимок экрана: выбор одной подписки и метрики azure Resource Manager в портал Azure.

Затем нажмите Применить. Теперь можно визуализировать метрики уровня управления "Трафик" или "Задержка" с помощью настраиваемой фильтрации и разделения:

Снимок экрана: визуализация метрик в портал Azure с параметрами фильтрации и разделения по измерениям.

Запрос метрик уровня управления "Трафик" и "Задержка" с помощью 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&region=global&aggregation=average,count&timespan=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&region=global&aggregation=count&timespan=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&region=global&aggregation=count,average&timespan=2021-11-01T00:00:00Z/2021-11-03T00:00:00Z&$filter=StatusCode%20eq%20%27429%27' \
--header 'Authorization: bearer {{bearerToken}}'

Вы также можете выполнить фильтрацию непосредственно на портале: снимок экрана: фильтрация кода состояния HTTP по 429 ответам только в портал Azure.

Ошибки сервера

Так же как и при анализе регулируемых запросов, для просмотра всех запросов, возвративших код ответа ошибки сервера, можно выполнить фильтрацию только по ответам 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&region=global&aggregation=count,average&timespan=2021-11-01T00:00:00Z/2021-11-03T00:00:00Z&$filter=StatusCodeClass%20eq%20%275xx%27' \
--header 'Authorization: bearer {{bearerToken}}'

Вы также можете выполнить фильтрацию универсальных ошибок сервера на портале, задав для свойства фильтра значение StatusCodeClass и значение 5xx, как в примере регулирования.

Дальнейшие действия