Azure Monitor 자동 스케일링 문제 해결
Azure Monitor 자동 크기 조정을 사용하면 애플리케이션의 부하를 처리하기 위해 적절한 양의 리소스가 실행되도록 할 수 있습니다. 그러면 늘어난 부하를 처리하기 위해 리소스를 추가하고 유휴 상태의 리소스를 제거하여 비용을 절약할 수 있습니다. 예약, 고정 날짜-시간 또는 선택한 리소스 메트릭에 따라 스케일링할 수 있습니다. 자세한 내용은 크기 자동 조정 개요를 참조하세요.
자동 스케일링 서비스는 어떤 스케일링 작업이 발생했고 그러한 작업이 유발된 조건 평가는 무엇인지 해석할 수 있는 메트릭과 로그를 제공합니다. 다음과 같은 질문에 대한 답을 찾을 수 있습니다.
- 서비스가 스케일 아웃 또는 스케일 인된 이유는 무엇인가요?
- 서비스가 스케일링되지 않는 이유는 무엇인가요?
- 자동 크기 조정 작업이 실패하는 이유는 무엇인가요?
- 자동 크기 조정 작업의 스케일링에 시간이 걸리는 이유는 무엇인가요?
Flex Virtual Machine Scale Sets
자동 크기 조정 크기 조정 작업은 특정 가상 머신 작업 집합에 대한 Flex Microsoft.Compute/VMSS(virtualMachineScaleSets) 리소스에 수동 크기 조정 작업이 적용된 후 최대 몇 시간까지 지연됩니다.
예를 들면 Azure VM CLI 삭제 또는 개별 VM에서 작업이 수행되는 Azure VM Rest API 삭제입니다.
이러한 경우 자동 크기 조정 서비스는 개별 VM 작업을 인식하지 못합니다.
이 시나리오를 방지하려면 동일한 작업을 사용하되 V가상 머신 확장 집합 수준에서 사용합니다. 예를 들면 Azure VMSS CLI 삭제 인스턴스 또는 Azure VMSS Rest API 삭제 인스턴스입니다. 자동 크기 조정은 가상 머신 확장 집합의 인스턴스 수 변경을 감지하고 적절한 크기 조정 작업을 수행합니다.
자동 크기 조정 메트릭
자동 스케일링은 작업을 해석할 수 있는 4가지 메트릭을 제공합니다.
- 관찰된 메트릭 값: 자동 스케일링 엔진에서 표시 또는 계산한 대로 스케일링 작업을 수행하기 위해 사용자가 선택한 메트릭의 값입니다. 단일 자동 스케일링 설정에 여러 규칙이 있고 그에 따라 메트릭 원본이 여럿일 수 있으므로 “메트릭 원본”을 차원으로 사용하여 필터링할 수 있습니다.
- 메트릭 임계값: 스케일링 작업을 수행하기 위해 사용자가 설정한 임계값입니다. 단일 자동 스케일링 설정에 여러 규칙이 있고 그에 따라 메트릭 원본이 여럿일 수 있으므로 “메트릭 규칙”을 차원으로 사용하여 필터링할 수 있습니다.
- 관찰된 용량: 자동 스케일링 엔진에 표시되는 대상 리소스의 활성 인스턴스 수입니다.
- 크기 조정 작업 시작: 자동 크기 조정 엔진에서 시작된 스케일 아웃 및 스케일 인 작업의 수입니다. 스케일 아웃 및 스케일 인 작업별로 필터링할 수 있습니다.
메트릭 탐색기를 사용하여 위의 메트릭을 모두 한 곳에서 차트로 만들 수 있습니다. 차트에는 다음이 표시됩니다.
- 실제 메트릭.
- 자동 스케일링 엔진에서 보거나 계산한 메트릭.
- 스케일링 작업에 대한 임계값.
- 용량 변경.
예제 1: 자동 스케일링 규칙 분석
가상 머신 확장 집합에 대한 자동 스케일링 설정:
- 집합의 평균 CPU 백분율이 10분 동안 70%를 넘으면 스케일 아웃됩니다.
- 집합의 평균 CPU 백분율이 10분 넘게 5% 미만이면 스케일 인됩니다.
자동 스케일링 서비스의 메트릭을 살펴보겠습니다.
다음 차트는 가상 머신 확장 집합에 대한 CPU 비율 메트릭을 보여 줍니다.
다음 차트는 자동 스케일링 설정에 대해 관찰된 메트릭 값 메트릭을 보여 줍니다.
마지막 차트는 메트릭 임계값 및 관찰된 용량 메트릭을 보여 줍니다. 스케일 아웃 규칙의 맨 위에 있는 메트릭 임계값 메트릭은 70입니다. 맨 아래에 있는 관찰된 용량 메트릭은 활성 인스턴스의 수를 표시하며 현재 3개입니다.
참고 항목
스케일 아웃 임계값을 확인하기 위한 메트릭 트리거 규칙 차원 스케일 아웃(증가) 규칙과 스케일 인(감소) 규칙을 기준으로 메트릭 임계값을 필터링할 수 있습니다.
예제 2: 가상 머신 확장 집합에 대한 고급 스케일링
자동 스케일링 설정을 통해 가상 머신 확장 집합 리소스가 자체 아웃바운드 흐름 메트릭에 따라 스케일 아웃할 수 있습니다. 메트릭 임계값에 대해 인스턴스 수로 메트릭 나누기 옵션이 선택되어 있습니다.
스케일링 작업 규칙은 인스턴스당 아웃바운드 흐름의 값이 10보다 크면 자동 스케일링 서비스에서 1개의 인스턴스를 스케일 아웃해야 합니다.
이 경우 자동 스케일링 엔진의 관찰된 메트릭 값은 실제 메트릭 값을 인스턴스 수로 나누어 계산합니다. 관찰된 메트릭 값이 임계값보다 작으면 스케일 아웃 작업을 시작하지 않습니다.
다음 스크린샷은 두 개의 메트릭 차트를 보여 줍니다.
평균 아웃바운드 흐름 차트는 아웃바운드 흐름 메트릭의 값을 보여 줍니다. 실제 값은 6입니다.
다음 차트에는 몇 가지 값이 나와 있습니다.
- 활성 인스턴스 2개가 있고 6을 2로 나누면 3이므로 중간에 있는 관찰된 메트릭 값 메트릭은 3입니다.
- 맨 아래 있는 관찰된 용량 메트릭은 자동 스케일링 엔진에서 볼 수 있는 인스턴스 수를 보여 줍니다.
- 맨 위에 있는 메트릭 임계값 메트릭은 10으로 설정됩니다.
여러 스케일링 작업 규칙이 있으면 메트릭 탐색기 차트에서 분할 또는 필터 추가 옵션을 사용하여 특정 원본 또는 규칙별로 메트릭을 확인할 수 있습니다. 메트릭 차트 분할에 대한 자세한 내용은 메트릭 차트의 고급 기능 - 분할을 참조하세요.
예제 3: 자동 스케일링 이벤트 이해
자동 크기 조정 설정 화면에서 실행 기록 탭으로 이동하여 가장 최근의 스케일링 작업을 확인합니다. 이 탭에서는 시간 경과에 따른 관찰된 용량 변화도 보여줍니다. 자동 스케일링 설정 업데이트/삭제 등과 같은 작업을 포함하여 자동 스케일링 작업에 대한 세부 정보는 자동 스케일링 작업별 활동 로그와 필터를 확인하세요.
자동 스케일링 리소스 로그
자동 스케일링 서비스는 리소스 로그를 제공합니다. 로그 범주는 두 가지입니다.
- 자동 스케일링 평가: 자동 스케일링 엔진은 검사를 수행할 때마다 모든 단일 조건 평가에 대한 로그 항목을 기록합니다. 항목에는 관찰된 메트릭 값에 대한 세부 정보, 평가된 규칙, 평가 결과가 스케일링 작업인지 여부가 포함됩니다.
- 자동 스케일링 작업: 엔진은 자동 스케일링 서비스가 시작한 스케일링 작업 이벤트와 그러한 스케일링 작업의 결과(성공, 실패, 자동 스케일링 서비스에서 확인한 스케일링 크기)를 기록합니다.
모든 Azure Monitor 지원 서비스에서처럼 진단 설정을 사용하여 이 로그를 다음 위치로 라우팅할 수 있습니다.
- 자세한 분석을 위해 Log Analytics 작업 영역.
- Azure Event Hubs를 거쳐 비 Azure 도구.
- 보관을 위한 Azure Storage 계정.
위의 스크린샷은 Azure Portal 자동 스케일링 진단 설정 창을 보여 줍니다. 여기에서 탭을 선택하고 로그 수집 및 라우팅을 사용하도록 설정할 수 있습니다. 리소스 형식을 Microsoft.Insights/AutoscaleSettings로 선택하여 진단 설정에 대한 REST API, the Azure CLI, PowerShell 및 Azure Resource Manager 템플릿으로 같은 작업을 수행할 수도 있습니다.
자동 스케일링 로그를 사용하여 문제 해결
최상의 문제 해결 환경을 위해 자동 스케일링 설정을 만들 때 작업 영역을 통해 로그를 Azure Monitor 로그(Log Analytics)에 라우팅하는 것이 좋습니다. 이 프로세스는 이전 섹션의 스크린샷에 나와 있습니다. Log Analytics를 사용하여 평가 및 스케일링 작업의 유효성을 더 나은 방식으로 검사할 수 있습니다.
자동 스케일링 로그를 Log Analytics 작업 영역으로 보내도록 구성했으면 다음 쿼리를 실행하여 로그를 확인할 수 있습니다.
시작하려면 이 쿼리를 사용하여 가장 최근의 자동 크기 조정 평가 로그를 확인합니다.
AutoscaleEvaluationsLog
| limit 50
또는 다음 쿼리로 가장 최근의 스케일링 작업 로그를 확인합니다.
AutoscaleScaleActionsLog
| limit 50
다음 섹션을 사용하여 이러한 질문에 답변합니다.
예상치 못한 스케일링 작업 발생
먼저 스케일링 작업에 대해 쿼리를 실행하여 문제의 스케일링 작업을 찾습니다. 최신 스케일링 작업인 경우 다음 쿼리를 사용합니다.
AutoscaleScaleActionsLog
| take 1
스케일링 작업 로그에서 CorrelationId
필드를 선택합니다. CorrelationId
를 사용하여 올바른 평가 로그를 찾습니다. 다음 쿼리를 실행하면 평가되고 해당 스케일링 작업으로 이어진 모든 규칙과 조건이 표시됩니다.
AutoscaleEvaluationsLog
| where CorrelationId = "<correliationId>"
어떤 프로필 때문에 스케일링 작업이 발생하나요?
스케일링 작업이 발생했으나 겹치는 규칙과 프로필이 있어 어느 것이 작업을 발생시킨 것인지 추적해야 합니다.
예제 1에 설명된 대로 스케일링 작업의 CorrelationId
를 찾습니다. 그런 다음, 평가 로그에서 쿼리를 실행하여 프로필에 대해 자세히 알아봅니다.
AutoscaleEvaluationsLog
| where CorrelationId = "<correliationId_Guid>"
| where ProfileSelected == true
| project ProfileEvaluationTime, Profile, ProfileSelected, EvaluationResult
다음 쿼리를 사용하여 전체 프로필 평가를 더 잘 해석할 수도 있습니다.
AutoscaleEvaluationsLog
| where TimeGenerated > ago(2h)
| where OperationName contains == "profileEvaluation"
| project OperationName, Profile, ProfileEvaluationTime, ProfileSelected, EvaluationResult
스케일링 작업이 일어나지 않음
스케일링 작업을 예상했으나 발생하지 않았습니다. 스케일링 작업 이벤트 또는 로그가 없는 것 같습니다.
메트릭 기반 스케일링 규칙을 사용하는 경우 자동 스케일링 메트릭을 검토합니다. 관찰된 메트릭 값 또는 관찰된 용량 값이 사용자의 예상과 달라 스케일링 규칙이 실행되지 않았을 수 있습니다. 평가는 계속 표시되지만 스케일 아웃 규칙은 표시되지 않습니다. 휴지 시간에 스케일링 작업이 발생하지 않도록 할 수도 있습니다.
스케일링 작업이 발생될 것으로 예상하는 기간 중의 자동 스케일링 평가 로그를 검토합니다. 모든 평가를 검토하여 스케일링 작업을 트리거하지 않도록 결정하게 된 이유를 파악합니다.
AutoscaleEvaluationsLog
| where TimeGenerated > ago(2h)
| where OperationName == "MetricEvaluation" or OperationName == "ScaleRuleEvaluation"
| project OperationName, MetricData, ObservedValue, Threshold, EstimateScaleResult
스케일링 작업 실패
자동 스케일링 서비스가 스케일링 작업을 취했으나 시스템이 스케일링을 하지 않게 결정했거나 스케일링 작업을 완료하지 못했을 수 있습니다. 이 쿼리를 사용하여 실패한 스케일링 작업을 확인할 수 있습니다.
AutoscaleScaleActionsLog
| where ResultType == "Failed"
| project ResultDescription
자동 크기 조정 작업 또는 실패에 대한 알림을 받기 위한 경고 규칙을 만듭니다. 자동 크기 조정 이벤트에 대한 알림을 받는 경고 규칙을 만들 수도 있습니다.
자동 크기 조정 리소스 로그의 스키마
자세한 내용은 자동 스케일링 리소스 로그를 참조하세요.
다음 단계
자동 크기 조정 모범 사례에 대한 정보를 읽습니다.