Azure 최적화 엔진 사용자 지정
AOE(Azure 최적화 엔진)는 Azure 사용량 및 성능 데이터를 수집, 수집 및 분석하여 비용 최적화 권장 사항을 제공하는 Azure Automation Runbook 집합입니다. 엔진은 유연하고 사용자 지정 가능하도록 설계되어 조직의 요구에 맞게 동작을 조정할 수 있습니다. 이 문서에서는 엔진의 설정을 사용자 지정하는 방법에 대한 지침을 제공합니다. 여기에는 임계값 조정, 일정 변경 및 엔진 범위 확장이 포함됩니다.
엔진 범위 확장
기본적으로 Azure Automation 관리 ID에는 해당 구독에 대해서만 읽기 권한자 역할이 할당됩니다. 그러나 다른 구독에 동일한 읽기 권한자 역할을 부여하거나 더 간단하게 최상위 관리 그룹으로만 권장 사항의 범위를 확장할 수 있습니다.
보강된 VM(가상 머신) 적절한 크기 권장 사항의 컨텍스트에서 여러 작업 영역에 보고하는 VM이 있을 수 있습니다. AOE에서 사용하는 주요 작업 영역 외에 다른 작업 영역을 포함해야 하는 경우 권장 사항 범위에서 해당 작업 영역 ID AzureOptimization_RightSizeAdditionalPerfWorkspaces
를 변수에 추가하면 됩니다(작업 영역 구성에 대한 자세한 정보 참조).
다중 테넌트 고객인 경우 AOE의 범위를 배포된 테넌트가 아닌 테넌트로 확장할 수 있습니다. 이 확장을 달성하려면 다음 필수 구성 요소를 확인해야 합니다.
- 보조 테넌트에 서비스 주체(앱 등록) 및 비밀을 만듭니다.
- 보조 테넌트에서 서비스 주체, 즉 Azure 구독/관리 그룹의 읽기 권한자 및 Microsoft Entra ID의 전역 읽기 권한자에게 필요한 권한을 부여합니다.
- AOE의 Automation 계정에 Automation 자격 증명을 만듭니다. 서비스 주체의 클라이언트 ID를 사용자 이름으로 설정하고 암호를 암호로 설정합니다.
- AOE가
Register-MultitenantAutomationSchedules.ps1
배포된 구독의 컨텍스트에서 스크립트를 실행합니다(AOE 루트 폴더에서 사용 가능). 이 스크립트는 각 내보내기 Runbook에 대한 새 작업 일정을 만들고 보조 테넌트 쿼리를 구성합니다. 다음 구문을 사용하여 스크립트를 호출하면 됩니다.
./Register-MultitenantAutomationSchedules.ps1 -AutomationAccountName <AOE automation account> -ResourceGroupName <AOE resource group> -TargetSchedulesSuffix <suffix to append to every new job schedules, e.g., Tenant2> -TargetTenantId <secondary tenant GUID> -TargetTenantCredentialName <name of the Automation credential created in the previous step> [-TargetSchedulesOffsetMinutes <offset in minutes relative to original schedules, defaults to 0>] [-TargetAzureEnvironment <AzureUSGovernment|AzureGermanCloud|AzureCloud>] [-ExcludedRunbooks <An array of runbook names to exclude from the process>] [-IncludedRunbooks <An array of runbook names to include in the process>]
일정 조정
기본적으로 AOE Automation 일정의 기본 시간은 배포 시간으로 설정됩니다. 초기 배포가 완료된 직후 내보내기, 수집 및 권장 사항 Runbook은 엔진의 기본 일정에 따라 실행됩니다. 예를 들어 월요일 오전 11시 00분에 AOE를 배포하는 경우 매주 월요일 오후 2시 30분에 새 권장 사항을 받습니다. 어떤 이유로 이 일정이 요구 사항에 맞지 않는 경우 스크립트(AOE 루트 폴더에서 사용 가능)를 사용하여 Reset-AutomationSchedules.ps1
더 적합한 시간으로 다시 설정할 수 있습니다. 다음 스크립트를 호출하기만 하면 됩니다. 구문을 따르고 입력 요청에 응답합니다.
./Reset-AutomationSchedules.ps1 -AutomationAccountName <AOE automation account> -ResourceGroupName <AOE resource group> [-AzureEnvironment <AzureUSGovernment|AzureGermanCloud|AzureCloud>]
선택한 기본 시간은 UTC여야 하며 권장 사항을 생성하려는 요일 및 시간에 따라 정의되어야 합니다. 선택한 시간부터 3h30m를 추론해야 합니다. 기본 시간은 권장 사항이 생성되기 전에 실행해야 하는 모든 종속 자동화 Runbook에 대한 일정을 정의하기 때문입니다. 예를 들어 매주 월요일 오전 8시 30분에 권장 사항을 생성한다고 가정해 보겠습니다. 기본 시간은 월요일 오전 5시로 떨어지는 다음 달력 날짜입니다. 예를 들어 2022-01-03 05:00:00
선택한 날짜의 형식은 YYYY-MM-dd HH:mm:ss여야 합니다.
또한 스크립트는 필요한 경우 Runbook을 실행하려는 Hybrid Worker 그룹을 입력하도록 요청합니다(다음 하위 섹션 참조).
Hybrid Worker를 사용하여 AOE Runbook 크기 조정
기본적으로 AOE Automation Runbook은 Azure Automation 샌드박스의 컨텍스트에서 실행됩니다. Automation 샌드박스의 메모리 제한으로 인해 성능 문제가 발생할 수 있습니다. 또는 AOE의 보안을 강화하기 위해 스토리지 계정 또는 SQL Database에 대한 프라이빗 엔드포인트를 구현하기로 결정할 수 있습니다. 두 경우 모두 Hybrid Worker에서 Runbook을 실행해야 합니다. Automation Hybrid Worker 확장을 사용하는 Azure 또는 온-프레미스 Virtual Machine입니다. AOE Runbook의 실행 컨텍스트를 변경하려면 스크립트를 Reset-AutomationSchedules.ps1
사용해야 합니다. 이전 하위 섹션에서 스크립트를 사용하는 방법을 참조하세요. Runbook 실행 기본 시간을 설정한 후 Runbook을 실행할 Hybrid Worker 그룹 이름을 입력합니다.
Important
- Hybrid Worker 컴퓨터에 필요한 PowerShell 모듈이 설치되어 있어야 합니다.
upgrade-manifest.json
파일에는 필수 모듈 목록이 포함되어 있습니다. - Runbook 실행 컨텍스트를 Hybrid Worker로 변경한 후에는 AOE를
DoPartialUpgrade
업그레이드할 때마다 항상 플래그를 사용해야 합니다. 그렇지 않으면 Runbook 일정 설정을 잃고 기본 샌드박스 구성으로 되돌려야 합니다. - Azure, Microsoft Entra ID 및 청구 계정 범위에 대해 인증하는 데 사용되는 관리 ID는 여전히 Azure Automation에서 사용합니다. Hybrid Worker 컴퓨터에 관리 ID가 할당된 경우에도 사용됩니다(세부 정보 참조). 사용자가 할당한 관리 ID는 다음 경우에만 Hybrid Worker의 컨텍스트에서 지원됩니다.
- Automation 계정에는 연결된 관리 ID가 없습니다. 즉, Hybrid Worker 컴퓨터만 사용자 할당 관리 ID를 가질 수 있습니다.
- 모든 Runbook은 Hybrid Worker의 컨텍스트에서 실행됩니다. 이 경우 사용자가 할당한 관리 ID 클라이언트 ID를
AzureOptimization_UAMIClientID
값으로 사용하여 Automation 변수를 만들어야 합니다. AzureOptimization_AuthenticationOption
Automation 변수 값이 .로UserAssignedManagedIdentity
업데이트됩니다.
임계값 조정
Advisor 비용 권장 사항의 경우 AOE의 기본 구성은 백분위수 99번째 VM 메트릭 집계를 생성하지만 덜 보수적으로 조정할 수 있습니다. 맞춤 점수를 계산하는 데 사용되는 조정 가능한 메트릭 임계값도 있습니다. 기본 임계값은 CPU의 경우 30%(종료 권장 사항의 경우 5%), 메모리의 경우 50%(종료의 경우 100%), 네트워크 대역폭의 경우 750Mbps(종료 시 10Mbps)입니다. 조정 가능한 모든 구성은 Azure Automation 변수로 사용할 수 있습니다. 다음 표의 정보는 가장 관련성이 큰 구성 변수를 강조 표시합니다. 액세스하려면 Automation 계정 공유 리소스 - 변수 메뉴 옵션으로 이동합니다.
변수 | 설명 |
---|---|
AzureOptimization_AdvisorFilter |
모든 비 Cost Advisor 기둥에 대한 권장 사항을 가져오는 데 관심이 없는 경우 기둥 수준 필터(다음 값 HighAvailability,Security,Performance,OperationalExcellence 중 하나 이상이 있는 쉼표로 구분된 목록)를 지정할 수 있습니다. 기본값은 모든 핵심 요소입니다. |
AzureOptimization_AuthenticationOption |
Automation Runbook의 기본 인증 방법은 .입니다 RunAsAccount . 그러나 Azure VM에서 Hybrid Worker를 사용하는 경우 변경할 ManagedIdentity 수 있습니다. |
AzureOptimization_ConsumptionOffsetDays |
Azure Consumption 데이터 수집 Runbook은 매일 7일 전에 발생한 청구 이벤트를 쿼리합니다(기본값). 더 가까운 오프셋으로 변경할 수 있지만 일부 구독 유형(예: MSDN)은 더 낮은 값을 지원하지 않습니다. |
AzureOptimization_PerfPercentileCpu |
CPU 메트릭 집계의 기본 백분위수는 99입니다. 백분위수 값이 낮아짐에 따라 VM 오른쪽 크기 맞춤 점수 알고리즘은 덜 보수적으로 조정됩니다. |
AzureOptimization_PerfPercentileDisk |
디스크 IO/처리량 메트릭 집계의 기본 백분위수는 99입니다. 백분위수 값이 낮아짐에 따라 VM 오른쪽 크기 맞춤 점수 알고리즘은 덜 보수적으로 조정됩니다. |
AzureOptimization_PerfPercentileMemory |
메모리 메트릭 집계의 기본 백분위수는 99입니다. 백분위수 값이 낮아짐에 따라 VM 오른쪽 크기 맞춤 점수 알고리즘은 덜 보수적으로 조정됩니다. |
AzureOptimization_PerfPercentileNetwork |
네트워크 메트릭 집계의 기본 백분위수는 99입니다. 백분위수 값이 낮아짐에 따라 VM 오른쪽 크기 맞춤 점수 알고리즘은 덜 보수적으로 조정됩니다. |
AzureOptimization_PerfPercentileSqlDtu |
SQL DB DTU 메트릭에 사용할 기본 백분위수입니다. 백분위수 값이 낮아짐에 따라 SQL Database 오른쪽 크기 알고리즘은 덜 보수적으로 조정됩니다. |
AzureOptimization_PerfThresholdCpuPercentage |
CPU 임계값(% 프로세서 시간)입니다. 그 위에 VM 오른쪽 크기 맞춤 점수가 감소합니다. 그 아래에는 Azure Virtual Machine Scale Set(확장 집합) 적절한 크기의 비용 권장 사항이 트리거됩니다. |
AzureOptimization_PerfThresholdCpuShutdownPercentage |
CPU 임계값(% 프로세서 시간)입니다. 위의 VM 오른쪽 크기 맞춤 점수는 감소합니다(종료 권장 사항만 해당). |
AzureOptimization_PerfThresholdCpuDegradedMaxPercentage |
CPU 임계값(%Processor Time에서 관찰된 최대값)입니다. 그 위에서 확장 집합의 적절한 크기 성능 권장 사항이 트리거됩니다. |
AzureOptimization_PerfThresholdCpuDegradedAvgPercentage |
CPU 임계값(%Processor Time에서 관찰된 평균)입니다. 그 위에서 확장 집합의 적절한 크기 성능 권장 사항이 트리거됩니다. |
AzureOptimization_PerfThresholdMemoryPercentage |
메모리 임계값(사용된 메모리 % )입니다. 그 위에 VM 오른쪽 크기 맞춤 점수가 감소합니다. 그 아래에는 크기 집합의 적절한 크기 비용 권장 사항이 트리거됩니다. |
AzureOptimization_PerfThresholdMemoryShutdownPercentage |
메모리 임계값(사용된 메모리 % )입니다. 위의 VM 오른쪽 크기 맞춤 점수는 감소합니다(종료 권장 사항만 해당). |
AzureOptimization_PerfThresholdMemoryDegradedPercentage |
메모리 임계값(사용된 메모리 % )입니다. 그 위에서 확장 집합의 적절한 크기 성능 권장 사항이 트리거됩니다. |
AzureOptimization_PerfThresholdNetworkMbps |
네트워크 임계값(총 Mbps)입니다. 그 위에 VM 오른쪽 크기 맞춤 점수가 감소합니다. |
AzureOptimization_PerfThresholdNetworkShutdownMbps |
네트워크 임계값(총 Mbps)입니다. 위의 VM 오른쪽 크기 맞춤 점수는 감소합니다(종료 권장 사항만 해당). |
AzureOptimization_PerfThresholdDtuPercentage |
DTU 사용 비율 임계값입니다. 그 아래에서 SQL Database 인스턴스는 활용도가 낮은 것으로 간주됩니다. |
AzureOptimization_RecommendAdvisorPeriodInDays |
Log Analytics 리포지토리에서 Advisor 권장 사항을 찾는 간격(기본값은 7)이며 Advisor 권장 사항은 일주일에 한 번 수집됩니다. |
AzureOptimization_RecommendationAADMaxCredValidityYears |
서비스 주체 자격 증명/인증서 유효성에 대한 최대 연도 수입니다. 이 간격을 초과하는 유효성은 보안 권장 사항을 생성합니다. 기본값은 2입니다. |
AzureOptimization_RecommendationAADMinCredValidityDays |
서비스 주체 자격 증명/인증서가 만료되기 전의 최소 일 수입니다. 이 간격 미만의 유효성은 운영 우수성 권장 사항을 생성합니다. 기본값은 30입니다. |
AzureOptimization_RecommendationLongDeallocatedVmsIntervalDays |
삭제를 권장하기 전에 VM이 할당 취소된 연속 일 수입니다(가상 머신은 디스크에 비용이 계속 발생하는 오랫동안 할당이 취소되었습니다). 기본값은 30입니다. |
AzureOptimization_RecommendationVNetSubnetMaxUsedPercentageThreshold |
서브넷 IP 공간 사용에 허용되는 최대 백분율입니다. 기본값은 80입니다. |
AzureOptimization_RecommendationVNetSubnetMinUsedPercentageThreshold |
서브넷 IP 공간 사용의 최소 백분율 - 이 값 아래의 모든 사용량은 낮은 IP 공간을 사용하는 것으로 각 서브넷에 플래그를 지정합니다. 기본값은 5입니다. |
AzureOptimization_RecommendationVNetSubnetEmptyMinAgeInDays |
빈 서브넷에 플래그를 지정하기 위한 최소 기간(일)으로, 새로 만든 서브넷에 플래그를 지정하지 않습니다. 기본값은 30입니다. |
AzureOptimization_RecommendationVNetSubnetUsedPercentageExclusions |
서브넷 사용 비율 권장 사항에서 제외해야 하는 서브넷 이름의 쉼표로 구분된 작은따옴표로 묶인 목록입니다(예: 'gatewaysubnet' )'azurebastionsubnet' . 기본값은 'gatewaysubnet' 입니다. |
AzureOptimization_RecommendationRBACAssignmentsPercentageThreshold |
RBAC 할당의 최대 비율은 사용량을 제한합니다. 기본값은 80입니다. |
AzureOptimization_RecommendationResourceGroupsPerSubPercentageThreshold |
구독당 리소스 그룹 수의 최대 백분율은 사용량을 제한합니다. 기본값은 80입니다. |
AzureOptimization_RecommendationRBACSubscriptionsAssignmentsLimit |
구독당 RBAC 할당의 최대 한도입니다. 현재 2000으로 설정됩니다(설명된 대로). |
AzureOptimization_RecommendationRBACMgmtGroupsAssignmentsLimit |
관리 그룹당 RBAC 할당에 대한 최대 한도입니다. 현재 500으로 설정됩니다(설명된 대로). |
AzureOptimization_RecommendationResourceGroupsPerSubLimit |
구독당 리소스 그룹 수에 대한 최대 제한입니다. 현재 980으로 설정됩니다(설명된 대로). |
AzureOptimization_RecommendationStorageAcountGrowthThresholdPercentage |
스토리지에 보존 정책이 없는 것으로 플래그를 지정하는 데 필요한 최소 스토리지 계정 증가율입니다. |
AzureOptimization_RecommendationStorageAcountGrowthMonthlyCostThreshold |
스토리지에 보존 정책이 없는 것으로 플래그를 지정하는 데 필요한 최소 월별 비용(EA/MCA 통화)입니다. |
AzureOptimization_RecommendationStorageAcountGrowthLookbackDays |
스토리지 계정 증가를 분석하기 위한 조회 기간(일)입니다. |
AzureOptimization_ReferenceRegion |
사용 가능한 SKU 목록을 가져오기 위한 참조로 사용되는 Azure 지역(기본값:)입니다 westeurope . |
AzureOptimization_RemediateRightSizeMinFitScore |
수정이 수행되려면 VM에 적합한 크기의 권장 사항이 있어야 하는 최소 맞춤 점수입니다. |
AzureOptimization_RemediateRightSizeMinWeeksInARow |
수정이 수행되려면 VM 적절한 크기 권장 사항이 행의 최소 주 수에 완료되어야 합니다. |
AzureOptimization_RemediateRightSizeTagsFilter |
수정이 수행되려면 VM에 적합한 크기의 권장 사항이 있어야 하는 태그 이름/값 쌍입니다. 예: [ { "tagName": "a", "tagValue": "b" }, { "tagName": "c", "tagValue": "d" } ] |
AzureOptimization_RemediateLongDeallocatedVMsMinFitScore |
최소 맞춤 점수는 수정이 수행되려면 할당 취소된 긴 VM 권장 사항이 있어야 합니다. |
AzureOptimization_RemediateLongDeallocatedVMsMinWeeksInARow |
수정이 수행되려면 장기 할당 취소된 VM 권장 사항을 행의 최소 주 수로 완료해야 합니다. |
AzureOptimization_RemediateLongDeallocatedVMsTagsFilter |
태그 이름/값 쌍은 수정이 수행되려면 할당 취소된 긴 VM 권장 사항이 있어야 합니다. 예: [ { "tagName": "a", "tagValue": "b" }, { "tagName": "c", "tagValue": "d" } ] |
AzureOptimization_RemediateUnattachedDisksMinFitScore |
수정이 수행되려면 연결되지 않은 디스크 권장 사항에 대한 최소 맞춤 점수가 있어야 합니다. |
AzureOptimization_RemediateUnattachedDisksMinWeeksInARow |
수정이 수행되려면 연결되지 않은 디스크 권장 사항을 행의 최소 주 수로 완료해야 합니다. |
AzureOptimization_RemediateUnattachedDisksAction |
연결되지 않은 디스크 권장 사항 수정(Delete 또는 Downsize )에 적용할 작업입니다. |
AzureOptimization_RemediateUnattachedDisksTagsFilter |
태그 이름/값 쌍은 수정이 수행되려면 연결되지 않은 디스크 권장 사항이 있어야 합니다. 예: [ { "tagName": "a", "tagValue": "b" }, { "tagName": "c", "tagValue": "d" } ] |
AzureOptimization_RightSizeAdditionalPerfWorkspaces |
VM 메트릭을 찾을 다른 Log Analytics 작업 영역 ID의 쉼표로 구분된 목록입니다(작업 영역 구성 참조). |
AzureOptimization_PerfThresholdDiskIOPSPercentage |
디스크 IOPS 사용량 백분율 임계값입니다. 그 아래에는 사용량이 낮은 프리미엄 SSD 디스크 권장 사항이 트리거됩니다. |
AzureOptimization_PerfThresholdDiskMBsPercentage |
디스크 처리량 사용 비율 임계값입니다. 그 아래에는 사용량이 낮은 프리미엄 SSD 디스크 권장 사항이 트리거됩니다. |
AzureOptimization_RecommendationsMaxAgeInDays |
권장 사항을 SQL 데이터베이스에 보관할 최대 기간(일)입니다. 기본값: 365. |
AzureOptimization_RetailPricesCurrencyCode |
예약 소매 가격을 수집하는 데 사용되는 통화 코드(예: EUR, USD 등)입니다. |
AzureOptimization_PriceSheetMeterCategories |
불필요한 데이터를 수집하지 않도록 가격표 필터링에 사용되는 쉼표로 구분된 미터 범주입니다. 기본값은 "Virtual Machines,Storage" 입니다. |
AzureOptimization_ConsumptionScope |
소비 내보내기의 범위: Subscription (기본값), BillingProfile (MCA만 해당) 또는 BillingAccount (MCA의 경우 AOE 관리 ID에 청구 계정 읽기 권한자 역할을 추가해야 합니다). 자세한 내용을 참조하세요. |
관련 콘텐츠
관련 제품:
관련 솔루션: