다음을 통해 공유


Azure Monitor의 Azure Resource Manager 메트릭

Azure에서 리소스를 만들고 관리할 때 요청은 Azure의 컨트롤 플레인인 Azure Resource Manager를 통해 오케스트레이션됩니다. 이 문서에서는 Azure에 대한 컨트롤 플레인 요청의 볼륨 및 대기 시간을 모니터링하는 방법을 설명합니다.

이러한 메트릭을 사용하면 구독 전체에서 컨트롤 플레인 요청에 대한 트래픽 및 대기 시간을 관찰할 수 있습니다. 예를 들어 이제 스로틀된 요청을 검사서버 오류를 검사하여 특정 상태 코드를 필터링하여 요청이 스로틀되거나 실패한 경우를 확인할 수 있습니다.

메트릭은 최대 3개월(93일)까지 사용할 수 있으며 동기 요청만 추적할 수 있습니다. VM 만들기와 같은 시나리오의 경우 메트릭은 장기 실행 비동기 작업의 성능 또는 안정성을 나타내지 않습니다.

Azure Resource Manager 메트릭 액세스

Azure Monitor REST API, SDK 및 Azure Portal을 통해 컨트롤 플레인 메트릭에 액세스할 수 있습니다("Azure Resource Manager" 메트릭을 선택하여). Azure Monitor에 대한 개요는 Azure Monitor 메트릭을 참조하세요.

컨트롤 플레인 메트릭에 액세스하기 위한 옵트인 또는 등록 프로세스가 없습니다.

전달자 토큰을 검색하고 Azure에 요청하는 방법에 대한 지침은 Azure REST API 참조를 참조하세요.

메트릭 정의

Azure Monitor의 Azure Resource Manager 메트릭에 대한 정의는 2017-12-01-preview API 버전을 통해서만 액세스할 수 있습니다. 정의를 검색하려면 구독 ID가 "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}}'

이 코드 조각은 메트릭 스키마에 대한 정의를 반환합니다. 특히 이 스키마에는 Monitor API를 사용하여 필터링할 수 있는 차원이 포함되어 있습니다.

차원 이름 설명
ResourceUri 특정 리소스에 대한 전체 리소스 ID입니다.
RequestRegion 컨트롤 플레인이 "EastUS2"와 같이 land를 요청하는 Azure Resource Manager 지역입니다. 이 지역은 리소스의 위치가 아닙니다.
StatusCode 컨트롤 플레인 요청에 대한 Azure Resource Manager의 응답 유형입니다. 가능한 값은 다음과 같습니다(단, 이에 국한되지 않음).
-0
200-
- 201
- 400
- 404
- 429
- 500
- 502
StatusCodeClass Azure Resource Manager에서 반환된 상태 코드의 클래스입니다. 가능한 값은 다음과 같습니다.
- 2xx
- 4xx
- 5xx
네임스페이스 리소스 공급자의 네임스페이스는 "MICROSOFT.COMPUTE"와 같은 모든 캡에 있습니다.
ResourceType 요청을 만들거나 보낸 Azure의 모든 리소스 유형은 "VIRTUALMACHINES"와 같은 모든 캡에 있습니다.
방법 Azure Resource Manager에 대한 요청에 사용되는 HTTP 메서드입니다. 가능한 값은 다음과 같습니다.
- GET
- HEAD
- PUT
- POST
- PATCH
- DELETE

예제

이제 Azure Resource Manager 메트릭을 탐색하는 데 도움이 되는 몇 가지 시나리오를 살펴보겠습니다.

Azure Portal을 통해 트래픽 및 대기 시간 컨트롤 플레인 메트릭 쿼리

먼저 포털 내에서 Azure Monitor 블레이드로 이동합니다.

Screenshot of navigating to the Azure portal's Monitor page with Explore Metrics highlighted.

메트릭 탐색을 선택한 후 단일 구독을 선택한 다음, Azure Resource Manager 메트릭을 선택합니다.

Screenshot of selecting a single subscription and the Azure Resource Manager metric in the Azure portal.

그런 다음, 적용을 선택한 후 사용자 지정 필터링 및 분할을 사용하여 트래픽 또는 대기 시간 컨트롤 플레인 메트릭을 시각화할 수 있습니다.

Screenshot of the metrics visualization in the Azure portal, showing options to filter and split by dimensions.

REST API를 통해 트래픽 및 대기 시간 컨트롤 플레인 메트릭 쿼리

Azure로 인증된 후 구독에 대한 컨트롤 플레인 메트릭을 검색하도록 요청할 수 있습니다. 스크립트에서 "00000000-0000-0000-0000-000000000000"을 구독 ID로 바꿉니다. 스크립트는 1일 간격으로 세분화된 2일 기간의 평균 요청 대기 시간(초)과 총 요청 수를 검색합니다.

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에 대한 성공적인 요청의 대기 시간에 집중하려면 2XX를 사용하여 StatusCodeClass 차원을 필터링해야 합니다.

Virtual Networks 및 Load Balancers와 같은 네트워킹 리소스에 대한 구독에서 요청한 수를 확인하려면 MICROSOFT.NETWORK에 대한 네임스페이스 차원을 필터링해야 합니다.

스로틀된 요청 검사

스로틀된 요청만 표시하려면 429개 상태 코드 응답만 필터링해야 합니다. REST API 호출의 경우 다음 코드 조각의 요청 끝에 표시된 것처럼 $filter=StatusCode eq '429'를 추가하여 $filter 속성 및 StatusCode 차원을 통해 필터링을 수행합니다.

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}}'

포털에서 직접 필터링할 수도 있습니다. Screenshot of filtering HTTP Status Code to 429 responses only in the Azure portal.

서버 오류 검사

스로틀된 요청을 보는 것과 유사하게 5xx 응답만 필터링하여 서버 오류 응답 코드를 반환한 모든 요청을 볼 수 있습니다. REST API 호출의 경우 다음 코드 조각의 요청 끝에 표시된 것처럼 $filter=StatusCodeClass eq '5xx'를 추가하여 $filter 속성 및 StatusCodeClass 차원을 통해 필터링을 수행합니다.

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'로 설정하여 포털 내에서 일반 서버 오류 필터링을 수행할 수도 있습니다.

다음 단계