Delen via


Azure-optimalisatie-engine aanpassen

De Azure Optimization Engine (AOE) is een set Azure Automation-runbooks die Azure-verbruiks- en prestatiegegevens verzamelen, opnemen en analyseren om aanbevelingen voor kostenoptimalisatie te bieden. De engine is ontworpen om flexibel en aanpasbaar te zijn, zodat u het gedrag ervan kunt aanpassen aan de behoeften van uw organisatie. Dit artikel bevat richtlijnen voor het aanpassen van de instellingen van de engine. Het omvat het aanpassen van drempelwaarden, het wijzigen van planningen en het uitbreiden van het bereik van de engine.


Het bereik van de engine breder maken

Standaard wordt de rol Lezer alleen aan de beheerde identiteit van Azure Automation toegewezen binnen het respectieve abonnement. U kunt het bereik van de aanbevelingen echter uitbreiden door dezelfde lezerrol toe te kennen aan andere abonnementen of, nog eenvoudiger, aan een beheergroep op het hoogste niveau.

In de context van aanbevelingen voor het optimaliseren van virtuele machine-groottes (VM) kunt u uw VM's naar meerdere werkruimten laten rapporteren. Als u andere werkruimten moet opnemen, naast de belangrijkste werkruimte die AOE gebruikt, moet u in het aanbevelingenbereik alleen hun werkruimte-id's toevoegen aan de AzureOptimization_RightSizeAdditionalPerfWorkspaces variabele (zie meer informatie over het configureren van werkruimten).

Als u meerdere entra-id-mappen (ook wel tenants genoemd) hebt, kunt u het bereik van AOE uitbreiden naar een andere tenant dan de map waar deze is geïmplementeerd. Hiervoor hebt u twee opties, elk met de voor- en nadelen:

Service principal in tweede tenant Implementatie van Azure Lighthouse
Biedt de breedste functiedekking (zie de onderstaande beperkingen) Biedt een bijna volledige functiedekking (zie de onderstaande beperkingen)
Maakt gebruik van een minder veilige en onbeheerde verificatieoptie, op basis van geheimen Biedt robuuste verificatie, waarbij de beheerde identiteit van de engine opnieuw wordt gebruikt
Biedt geen ondersteuning voor het hergebruik van prestatiemetrieken uit werkruimten van Log Analytics in de secundaire tenant bij het aanvullen van aanbevelingen voor de juiste grootte van VM's. Biedt geen ondersteuning voor Microsoft Entra-objecten, wat van invloed is op de volledigheid van de werkmap Identiteiten en rollen en aanbevelingen met betrekking tot Microsoft Entra-id's. Het overzichtstabblad Beleidsnalevingswerkmap bevat geen gegevens van de secundaire tenant; alleen de gedetailleerde beleidsanalyse wordt ondersteund.
Implementatie is gebaseerd op de uitvoering van een PowerShell-helperscript Implementatie is gebaseerd op de implementatie van een Azure Resource Manager-sjabloon
Meer schaalbare ondersteuning van secundaire tenant, door simpelweg machtigingen te verlenen aan de service-principal op een hoger niveau. Implementatie wordt uitgevoerd per abonnement in secundaire tenant; heeft Azure Policy nodig om te schalen
Minder kosteneffectief, omdat taakplanningen worden gedupliceerd voor de secundaire tenant Rendabeler, omdat bestaande taakplanningen automatisch betrekking hebben op de secundaire tenant

Multitenant met service-principal in secundaire omgeving

Als u het bereik van de engine wilt uitbreiden met behulp van de service-principal-benadering, moet u zorgen voor de volgende vereisten:

  • Maak een service-principal (app-registratie) en een geheim in de secundaire tenant.
  • Verleen de vereiste machtigingen aan de service-principal in de secundaire tenant, namelijk Lezer in Azure-abonnementen/-beheergroepen en Globale lezer in Microsoft Entra ID.
  • Maak een automatiseringsreferentie in het automatiseringsaccount van de AOE. Stel de client-id van de service-principal in als gebruikersnaam en het geheim als wachtwoord.
  • Voer het Register-MultitenantAutomationSchedules.ps1 script uit (beschikbaar in de AOE-hoofdmap) in de context van het abonnement waarin AOE is geïmplementeerd. Met dit script maakt u nieuwe taakplanningen voor elk van de exportrunbooks en configureert u deze om een query uit te voeren op de secundaire tenant. U hoeft alleen het script aan te roepen met behulp van de volgende syntaxis:
./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>]

Multitenant met Azure Lighthouse

Als u het bereik van de engine wilt breder maken met behulp van de op Azure Lighthouse gebaseerde benadering, moet u de volgende vereisten garanderen:

  • Bereid de Azure Resource Manager-sjabloon voor om te worden geïmplementeerd in de secundaire tenant. U kunt as-is de referentiesjabloon opnieuw gebruiken in onze opslagplaats (lighthouse-template.json bestand dat beschikbaar is in de AOE-hoofdmap).
  • Als u de sjabloon voor één abonnement implementeert, hoeft u alleen de stappen te volgen die hier worden beschreven hier, door de bovenstaande referentiesjabloon te gebruiken en de waarden voor sjabloonparameters op te geven (als afzonderlijk parameterbestand of rechtstreeks in de Interface van Azure Portal).
  • Als u op schaal moet implementeren voor meerdere abonnementen, kunt u Gebruikmaken van Azure Policy door de instructies te volgen die hier beschikbaar zijn en de code voor beleidsdefinities aan te passen om de bovenstaande referentiesjabloon te volgen.
  • Ongeacht de implementatiebenadering zijn de sjabloonparameters die u moet opgeven het volgende:
    • managedByTenantId - Microsoft Entra-tenant-id van de tenant waarin AOE is geïmplementeerd.
    • principalId - Microsoft Entra-object-id van de door het AOE Automation-accountsysteem beheerde identiteit.
    • principalIdDisplayName - AOE Automation-accountnaam.

Schema's aanpassen

Standaard wordt de basistijd voor de AOE Automation-planningen ingesteld als de implementatietijd. Kort nadat de eerste implementatie is voltooid, worden de exports, ingests en aanbevelingen runbooks uitgevoerd volgens de standaardschema's van de engine. Als u bijvoorbeeld AOE op maandag om 11:00 uur implementeert, krijgt u elke maandag om 2:30 uur nieuwe aanbevelingen. Als dit schema om een of andere reden niet aan uw behoeften voldoet, kunt u deze opnieuw instellen op het tijdstip dat beter bij u past, met behulp van het Reset-AutomationSchedules.ps1 script (beschikbaar in de AOE-hoofdmap). U hoeft alleen het volgende script aan te roepen. Volg de syntaxis en beantwoord de invoeraanvragen:

./Reset-AutomationSchedules.ps1 -AutomationAccountName <AOE automation account> -ResourceGroupName <AOE resource group> [-AzureEnvironment <AzureUSGovernment|AzureGermanCloud|AzureCloud>]

De basistijd die u kiest, moet in UTC zijn en moet worden gedefinieerd op basis van de dag van de week en het uur dat u aanbevelingen wilt genereren. U moet 3h30m afleiden van de tijd die u kiest. Dit komt doordat de basistijd de planningen definieert voor alle afhankelijke automation-runbooks die moeten worden uitgevoerd voordat de aanbevelingen worden gegenereerd. Stel dat u elke maandag om 8u30 aanbevelingen wilt genereren; de basistijd is de volgende kalenderdag die op maandag om 5u00 valt. De notatie van de datum die u kiest, moet bijvoorbeeld JJJJ-MM-dd UU:mm:ss 2022-01-03 05:00:00zijn.

In het script wordt u ook gevraagd om, indien nodig, de Hybrid Worker-groep in te voeren waarin u de runbooks wilt uitvoeren (zie de volgende subsectie).


AOE-runbooks schalen met Hybrid Worker

AOE Automation-runbooks worden standaard uitgevoerd in de context van de Azure Automation-sandbox. Mogelijk ondervindt u prestatieproblemen vanwege de geheugenlimieten van de Automation-sandbox. U kunt ook besluiten om privé-eindpunten voor het opslagaccount of SQL Database te implementeren om de beveiliging van AOE te beperken. In beide gevallen moet u runbooks uitvoeren vanuit een Hybrid Worker. Het is een azure- of on-premises virtuele machine met de Automation Hybrid Worker-extensie. Als u de uitvoeringscontext voor de AOE-runbooks wilt wijzigen, moet u het Reset-AutomationSchedules.ps1 script gebruiken. Lees hoe u het script in de vorige subsectie gebruikt. Nadat u de uitvoeringsbasistijd van runbooks hebt ingesteld, voert u de naam van de Hybrid Worker-groep in waarin u de runbooks wilt uitvoeren.

Belangrijk

  • Op de Hybrid Worker-machine moeten de vereiste PowerShell-modules zijn geïnstalleerd. Het upgrade-manifest.json bestand bevat de lijst met vereiste modules.
  • Zodra u de uitvoeringscontext van het runbook wijzigt in Hybrid Worker, moet u altijd de DoPartialUpgrade vlag gebruiken wanneer u AOE bijwerkt, anders verliest u de planningsinstellingen van het runbook en keert u terug naar de standaard sandbox-configuratie.
  • De beheerde identiteit die wordt gebruikt om te verifiëren bij Azure, Microsoft Entra ID en factureringsrekening, is nog steeds de identiteit die door Azure Automation wordt gebruikt. Deze wordt gebruikt, zelfs als aan de Hybrid Worker-machine een beheerde identiteit is toegewezen (zie details). Door de gebruiker toegewezen beheerde identiteiten worden alleen ondersteund in de context van Hybrid Workers als:
    • Het Automation-account heeft geen gekoppelde beheerde identiteit, dus alleen de Hybrid Worker-machine kan een door de gebruiker toegewezen beheerde identiteit hebben.
    • Alle runbooks worden uitgevoerd in de context van de Hybrid Worker. In dit geval moet u een AzureOptimization_UAMIClientID automation-variabele maken met de gebruikerstoegedeelde client-id van de beheerde identiteit als waarde.
    • De waarde van de AzureOptimization_AuthenticationOption Automation-variabele wordt bijgewerkt naar UserAssignedManagedIdentity.

Drempelwaarden aanpassen

Voor kostenaanbevelingen van Advisor produceert de standaardconfiguratie van de AOE aggregaties van de 99e percentiel van metrische gegevens van virtuele machines, maar u kunt deze aanpassen om minder conservatief te zijn. Er zijn ook aanpasbare drempelwaarden voor metrische gegevens die worden gebruikt om de score passend te maken. De standaardwaarden voor drempelwaarden zijn 30% voor CPU (5% voor aanbevelingen voor afsluiten), 50% voor geheugen (100% voor afsluiten) en 750 Mbps voor netwerkbandbreedte (10 Mbps voor afsluiten). Alle aanpasbare configuraties zijn beschikbaar als Azure Automation-variabelen. De informatie in de volgende tabel markeert de meest relevante configuratievariabelen. Als u deze wilt openen, gaat u naar de menuoptie Gedeelde Resources - Variabelen van het Automation-account.

Variabele Beschrijving
AzureOptimization_AdvisorFilter Als u niet geïnteresseerd bent in het verkrijgen van aanbevelingen voor alle niet-Cost Advisor-pijlers, kunt u een filter op pijlerniveau opgeven (door komma's gescheiden lijst met ten minste een van de volgende waarden: HighAvailability,Security,Performance,OperationalExcellence). Standaard ingesteld op alle pijlers.
AzureOptimization_AuthenticationOption De standaardverificatiemethode voor Automation-runbooks is RunAsAccount. Maar u kunt dit wijzigen naar ManagedIdentity als u een Hybrid Worker op een Azure-VM gebruikt.
AzureOptimization_ConsumptionOffsetDays Het runbook voor het verzamelen van azure-verbruiksgegevens voert elke dag query's uit voor factureringsgebeurtenissen die zeven dagen geleden zijn opgetreden (standaard). U kunt overschakelen naar een dichtere offset, maar houd er rekening mee dat sommige abonnementstypen (bijvoorbeeld MSDN) geen lagere waarde ondersteunen.
AzureOptimization_PerfPercentileCpu Het standaard percentiel voor metrische CPU-aggregaties is 99. Naarmate het percentiel lager wordt, wordt het algoritme voor de passendheidsscore van de juiste grootte van de virtuele machine minder conservatief aangepast.
AzureOptimization_PerfPercentileDisk Het standaard percentiel voor metrische gegevens voor schijf-IO/doorvoer is 99. Naarmate het percentiel lager wordt, wordt het algoritme voor de passendheidsscore van de juiste grootte van de virtuele machine minder conservatief aangepast.
AzureOptimization_PerfPercentileMemory Het standaard percentiel voor metrische geheugenaggregaties is 99. Naarmate het percentiel lager wordt, wordt het algoritme voor de passendheidsscore van de juiste grootte van de virtuele machine minder conservatief aangepast.
AzureOptimization_PerfPercentileNetwork Het standaard percentiel voor metrische netwerkaggregaties is 99. Naarmate het percentiel lager wordt, wordt het algoritme voor de passendheidsscore van de juiste grootte van de virtuele machine minder conservatief aangepast.
AzureOptimization_PerfPercentileSqlDtu Het standaard percentiel dat moet worden gebruikt voor metrische SQL DB DTU-gegevens. Naarmate het percentiel lager wordt, wordt het rechtergrootte-algoritme van SQL Database minder conservatief aangepast.
AzureOptimization_PerfThresholdCpuPercentage De CPU-drempelwaarde (in % processortijd). Daarboven neemt de juiste maat-score van de VM af. Onder de Azure Virtual Machine Scale Set (schaalset) wordt de kostenaanbeveling voor de juiste grootte van de schaalset getriggerd.
AzureOptimization_PerfThresholdCpuShutdownPercentage De CPU-drempelwaarde (in % processortijd). Daarboven neemt de juiste maatvoering van de VM-score af (aanbevelingen voor afsluiten alleen).
AzureOptimization_PerfThresholdCpuDegradedMaxPercentage De CPU-drempelwaarde (maximaal waargenomen in % processortijd). Daarboven wordt de aanbeveling voor prestaties van de juiste grootte van de schaalset geactiveerd.
AzureOptimization_PerfThresholdCpuDegradedAvgPercentage De CPU-drempelwaarde (gemiddeld waargenomen in % processortijd). Bovenaan worden de aanbevelingen voor de juiste schaalgrootte van prestaties geactiveerd.
AzureOptimization_PerfThresholdMemoryPercentage De geheugendrempelwaarde (in % gebruikt geheugen). Daarboven neemt de juiste maat-score van de VM af. Daaronder worden de kostenaanbevelingen voor de juiste grootte van de schaalset geactiveerd.
AzureOptimization_PerfThresholdMemoryShutdownPercentage De geheugendrempelwaarde (in % gebruikt geheugen). Daarboven neemt de juiste maatvoering van de VM-score af (aanbevelingen voor afsluiten alleen).
AzureOptimization_PerfThresholdMemoryDegradedPercentage De geheugendrempelwaarde (in % gebruikt geheugen). Daarboven worden de prestatieaanbevelingen geactiveerd door een goed afgestemde schaalset.
AzureOptimization_PerfThresholdNetworkMbps De netwerkdrempel (in totaal Mbps). Daarboven neemt de juiste maat-score van de VM af.
AzureOptimization_PerfThresholdNetworkShutdownMbps De netwerkdrempel (in totaal Mbps). Daarboven neemt de juiste maatvoering van de VM-score af (aanbevelingen voor afsluiten alleen).
AzureOptimization_PerfThresholdDtuPercentage De drempelwaarde voor DTU-gebruikspercentage. Daaronder wordt een SQL Database-exemplaar beschouwd als onderbenut.
AzureOptimization_RecommendAdvisorPeriodInDays Het interval in dagen om te zoeken naar Advisor-aanbevelingen in de Log Analytics-opslagplaats: de standaardwaarde is 7, omdat Advisor-aanbevelingen eenmaal per week worden verzameld.
AzureOptimization_RecommendationAADMaxCredValidityYears Het maximum aantal jaren voor de geldigheid van referenties/certificaten van een service-principal: elke geldigheid boven dit interval genereert een beveiligingsaanbeveling. De standaardwaarde is 2.
AzureOptimization_RecommendationAADMinCredValidityDays Het minimum aantal dagen voor een referentie/certificaat van een service-principal voordat het verloopt. Elke geldigheid onder dit interval genereert een aanbeveling voor Operational Excellence. De standaardwaarde is 30.
AzureOptimization_RecommendationLongDeallocatedVmsIntervalDays Het aantal opeenvolgende dagen dat een virtuele machine is vrijgemaakt voordat deze wordt aanbevolen voor verwijdering (de virtuele machine is langdurig vrijgemaakt waarbij de schijven nog steeds kosten blijven maken). De standaardwaarde is 30.
AzureOptimization_RecommendationVNetSubnetMaxUsedPercentageThreshold Het maximumpercentage dat wordt getolereerd voor gebruik van ip-ruimte van subnet. De standaardinstelling is 80.
AzureOptimization_RecommendationVNetSubnetMinUsedPercentageThreshold Het minimumpercentage voor het gebruik van ip-ruimte voor subnetten: elk gebruik onder deze waarde markeert het respectieve subnet als het gebruik van weinig IP-ruimte. Standaard ingesteld op 5.
AzureOptimization_RecommendationVNetSubnetEmptyMinAgeInDays De minimale leeftijd in dagen voordat een leeg subnet wordt gemarkeerd, zodat u geen markeringen voor nieuw gemaakte subnetten hoeft te maken. De standaardwaarde is 30.
AzureOptimization_RecommendationVNetSubnetUsedPercentageExclusions Een door komma's gescheiden, met enkele aanhalingstekens omgeven lijst van subnetnamen die moeten worden uitgesloten van aanbevelingen voor subnetgebruikpercentage, bijvoorbeeld 'gatewaysubnet','azurebastionsubnet'. Standaard ingesteld op 'gatewaysubnet'.
AzureOptimization_RecommendationRBACAssignmentsPercentageThreshold Het maximumpercentage van RBAC-toewijzingen beperkt de inzet. De standaardinstelling is 80.
AzureOptimization_RecommendationResourceGroupsPerSubPercentageThreshold Het maximale percentage van het aantal resourcegroepen per abonnement beperkt het gebruik. De standaardinstelling is 80.
AzureOptimization_RecommendationRBACSubscriptionsAssignmentsLimit De maximumlimiet voor RBAC-toewijzingen per abonnement. Momenteel ingesteld op 2000 (zoals gedocumenteerd).
AzureOptimization_RecommendationRBACMgmtGroupsAssignmentsLimit De maximumlimiet voor RBAC-toewijzingen per beheergroep. Momenteel ingesteld op 500 (zoals gedocumenteerd).
AzureOptimization_RecommendationResourceGroupsPerSubLimit De maximumlimiet voor het aantal resourcegroepen per abonnement. Momenteel ingesteld op 980 (zoals gedocumenteerd).
AzureOptimization_RecommendationStorageAcountGrowthThresholdPercentage Het minimale groeipercentage van het opslagaccount dat is vereist om Opslag te markeren als er geen bewaarbeleid is ingesteld.
AzureOptimization_RecommendationStorageAcountGrowthMonthlyCostThreshold De minimale maandelijkse kosten (in uw EA/MCA-valuta) die vereist zijn om Opslag te markeren als er geen bewaarbeleid is ingesteld.
AzureOptimization_RecommendationStorageAcountGrowthLookbackDays De terugkijkperiode (in dagen) voor het analyseren van de groei van het opslagaccount.
AzureOptimization_ReferenceRegion De Azure-regio die wordt gebruikt als referentie voor het ophalen van de lijst met beschikbare SKU's (standaard ingesteld op westeurope).
AzureOptimization_RemediateRightSizeMinFitScore De minimale geschiktheidsscore die een aanbeveling voor de juiste grootte van een virtuele machine moet zijn om de aanpassing uit te voeren.
AzureOptimization_RemediateRightSizeMinWeeksInARow Het minimale aantal weken op een rij dat een aanbeveling voor de juiste grootte van een virtuele machine moet zijn voltooid, zodat het herstel kan plaatsvinden.
AzureOptimization_RemediateRightSizeTagsFilter De tagnaam/waardeparen die een aanbeveling voor de juiste grootte van de virtuele machine moet hebben opdat er herstelmaatregelen kunnen worden genomen. Voorbeeld: [ { "tagName": "a", "tagValue": "b" }, { "tagName": "c", "tagValue": "d" } ]
AzureOptimization_RemediateLongDeallocatedVMsMinFitScore De minimale geschiktheidsscore die een aanbeveling voor een lange gedealloceerde VM moet hebben om de sanering uit te voeren.
AzureOptimization_RemediateLongDeallocatedVMsMinWeeksInARow Het minimum aantal weken dat een aanbeveling voor een lang niet-gebruikte VM voltooid moet zijn voordat het herstel kan plaatsvinden.
AzureOptimization_RemediateLongDeallocatedVMsTagsFilter De tagnaam/waardeparen die een lang gedealloceerde VM-aanbeveling moet hebben zodat het herstel kan plaatsvinden. Voorbeeld: [ { "tagName": "a", "tagValue": "b" }, { "tagName": "c", "tagValue": "d" } ]
AzureOptimization_RemediateUnattachedDisksMinFitScore De minimale geschiktheidsscore die een aanbeveling voor een niet-gekoppelde schijf moet hebben om de remediëring te laten plaatsvinden.
AzureOptimization_RemediateUnattachedDisksMinWeeksInARow Het minimum aantal weken in een reeks moet een niet-gekoppelde schijfaanbeveling voltooid zijn voor de remediëring kan plaatsvinden.
AzureOptimization_RemediateUnattachedDisksAction De actie om een remedie toe te passen op een aanbeveling voor een niet-gekoppelde schijf (Delete of Downsize).
AzureOptimization_RemediateUnattachedDisksTagsFilter De tagnaam/waardeparen die vereist zijn voor een niet-gekoppelde schijfaanbeveling om de remedie plaats te vinden. Voorbeeld: [ { "tagName": "a", "tagValue": "b" }, { "tagName": "c", "tagValue": "d" } ]
AzureOptimization_RightSizeAdditionalPerfWorkspaces Een door komma's gescheiden lijst met andere Log Analytics-werkruimte-id's waar u kunt zoeken naar metrische gegevens van vm's (zie Werkruimten configureren).
AzureOptimization_PerfThresholdDiskIOPSPercentage De drempelwaarde voor het IOPS-gebruikspercentage van de schijf. Daaronder worden de aanbevelingen voor onderbenutte Premium SSD-schijven geactiveerd.
AzureOptimization_PerfThresholdDiskMBsPercentage De drempelwaarde voor het gebruikspercentage voor schijfdoorvoer. Daaronder worden de aanbevelingen voor onderbenutte Premium SSD-schijven geactiveerd.
AzureOptimization_RecommendationsMaxAgeInDays De maximale leeftijd (in dagen) voor een aanbeveling die in de SQL-database moet worden bewaard. Standaard: 365.
AzureOptimization_RetailPricesCurrencyCode De valutacode (bijvoorbeeld EUR, USD, enzovoort) die wordt gebruikt voor het verzamelen van de retailprijzen voor reserveringen.
AzureOptimization_PriceSheetMeterCategories De door komma's gescheiden metercategorieën die worden gebruikt voor het filteren van prijzenoverzichten om te voorkomen dat onnodige gegevens worden opgenomen. Standaardwaarde is "Virtual Machines,Storage".
AzureOptimization_ConsumptionScope Het bereik van de verbruiksexports: Subscription (standaard), BillingProfile (alleen MCA) of BillingAccount (voor MCA), vereist het toevoegen van de rol Factureringsaccountlezer aan de beheerde AOE-identiteit. Zie meer details.

Gerelateerde producten:

Verwante oplossingen: