Hantera kostnader med budgetar
Kostnadskontroll är en viktig komponent om du ska kunna få ut mesta möjliga av dina investeringar i molnet. Det finns flera scenarier där kostnadsinsyn, rapportering och kostnadsbaserad orkestrering är kritiska komponenter för affärsverksamheten. Cost Management-API:er tillhandahåller en uppsättning API:er som stöder var och en av dessa scenarier. API:erna returnerar användningsdata så att du kan visa detaljerad kostnadsinformation på instansnivå.
Budgetar används ofta som en del av kostnadsstyrningen. I Azure kan du begränsa budgetomfånget. Du kan till exempel begränsa budgetvyn baserat på prenumeration, resursgrupper eller en samling resurser. Förutom att använda budget-API:et för att skicka e-postaviseringar när ett budgettröskelvärde nås kan du också använda Azure Monitor-åtgärdsgrupper. Åtgärdsgrupper utlöser en samordnad uppsättning åtgärder som svar på en budgethändelse.
Ett typiskt budgetscenario för en kund som kör en icke-kritisk arbetsbelastning är att hantera utgifter mot en budget och uppnå förutsägbara kostnader vid granskning av månadsfakturan. Det här scenariot kräver viss kostnadsbaserad orkestrering av resurser som ingår i Azure-miljön. I det här scenariot anges en månadsbudget på 1 000 USD för prenumerationen. Meddelandetrösklar konfigureras också, som utlöser en del orkestreringar. Det här scenariot börjar med ett kostnadströskelvärde på 80 % som stoppar alla virtuella datorer (VM) i resursgruppen Valfritt. Vid tröskelvärdet på 100 % av kostnaden stoppas sedan alla VM-instanser.
För att konfigurera det här scenariot slutför du följande åtgärder med hjälp av stegen i varje avsnitt i den här självstudien.
Genom att utföra åtgärderna som beskrivs i den här självstudien kan du:
- Skapa en Azure Automation-runbook för att stoppa virtuella datorer med hjälp av webhooks.
- Skapa en Azure-logikapp som ska utlösas baserat på budgettröskelns värde och anropa runbooken med rätt parametrar.
- Skapa en Azure Monitor-åtgärdsgrupp som är konfigurerad för att utlösa Azure Logic App när budgettröskelvärdet uppfylls.
- Skapa budgeten med de önskade tröskelvärdena och koppla den till åtgärdsgruppen.
Skapa en Azure Automation-runbook
Azure Automation är en tjänst som du kan använda för att skapa skript för de flesta resurshanteringsaktiviteter och köra dessa uppgifter som schemalagda eller på begäran. Som en del av det här scenariot skapar du en Azure Automation-runbook som stoppar virtuella datorer. Du använder den grafiska runbooken Stoppa virtuella Azure V2-datorer från Azure Automation-galleriet för att skapa det här scenariot. Genom att importera den här runbooken till ditt Azure-konto och publicera den, kan du stoppa virtuella datorer när ett budgettröskelvärde nås.
Kommentar
Du kan skapa en budget i Azure Cost Management och länka den till en Azure Automation-runbook för att automatiskt stoppa resurser när ett angivet tröskelvärde nås.
Skapa ett Azure Automation-konto
- Logga in på Azure-portalen med dina autentiseringsuppgifter för Azure-kontot.
- Välj knappen Skapa en resurs längst upp till vänster i Azure.
- Välj Hanteringsverktyg>Automation.
Kommentar
Om du inte har ett Azure-konto kan du skapa ett kostnadsfritt konto.
- Ange din kontoinformation. För Skapa Kör som-konto i Azure väljer du Ja för att automatiskt aktivera de inställningar som krävs för att förenkla autentiseringen till Azure.
- När du är färdig väljer du Skapa för att starta distributionen av Automation-kontot.
Importera runbooken Stop Azure V2 VMs (Stoppa virtuella Azure V2-datorer)
Du använder en Azure Automation-runbook för att importera den grafiska runbooken Stop Azure v2 VMs (Stoppa virtuella Azure V2-datorer) från galleriet.
- Logga in på Azure-portalen med dina autentiseringsuppgifter för Azure-kontot.
- Öppna ditt Automation-konto genom att välja Alla tjänster>Automation-konton. Välj sedan ditt Automation-konto.
- Välj Runbook-galleri i avsnittet Processautomatisering.
- Välj Skriptcenter för Gallerikälla och välj sedan OK.
- Leta upp och välj gallerialternativet Stop Azure V2 VMs (Stoppa virtuella Azure V2-datorer) på Azure-portalen.
- Välj Importera för att visa ytan Importera och välj OK. Översiktsområdet för runbook visas.
- När runbooken har slutfört importprocessen väljer du Redigera för att visa det grafiska runbook-redigeraren och publiceringsalternativet.
- Välj Publicera för att publicera runbooken och välj sedan Ja när du uppmanas att göra det. När du publicerar en runbook åsidosätter du den befintliga publicerade versionen med utkastversionen. I det här fallet har du ingen publicerad version eftersom du skapade runbooken. Mer information om hur du publicerar en runbook finns i Skapa en grafisk runbook.
Skapa webhooks för runbooken
Med hjälp av den grafiska runbooken Stop Azure V2 VMs (Stoppa virtuella Azure V2-datorer) skapar du två webhooks så att runbooken startar i Azure Automation via en enda HTTP-begäran. Den första webhooken anropar runbooken vid en budgettröskel på 80 % med resursgruppens namn som en parameter, så att de valfria virtuella datorerna kan stoppas. Därefter anropar den andra webhooken runbooken utan parametrar (vid 100 %), vilket gör att alla återstående VM-instanser stoppas.
- På sidan Runbooks på Azure-portalen väljer du runbooken StopAzureV2Vm som visar runbookens översiktsyta.
- Välj Webhook längst upp på sidan för att öppna området Lägg till webhook.
- Öppna området Skapa en ny webhook genom att välja Skapa ny webhook.
- Ange Optional (Valfri) som namn för webhooken. Egenskapen Aktiverat måste vara Ja. Du behöver inte ändra värdet Upphör. Mer information om webhook-egenskaper finns i avsnittet om webhook-egenskaper.
- Välj kopieringsikonen bredvid URL-värdet för att kopiera webhookens URL.
Viktigt!
Spara URL:en för webhooken med namnet Optional (Valfri) på ett säkert ställe. Du ska använda URL-adressen senare i den här självstudien. Av säkerhetsskäl kan du inte visa eller hämta URL:en igen när du har skapat webhooken.
- Skapa den nya webhooken genom att välja OK.
- Välj Konfigurera parametrar och körningsinställningar för att visa parametervärden för runbooken.
Kommentar
Om runbooken har obligatoriska parametrar kan du inte skapa webhooken utan att ange värdena.
- Acceptera parametervärdena för webhooken genom att välja OK.
- Skapa webhooken genom att välja Skapa.
- Följ sedan föregående steg för att skapa en andra webhook med namnet Complete(Slutför).
Viktigt!
Spara båda webhook-URL:erna. Du ska använda dem senare i den här självstudien. Av säkerhetsskäl kan du inte visa eller hämta URL:en igen när du har skapat webhooken.
Nu bör du ha två konfigurerade webhooks som är tillgängliga med de URL:er som du har sparat.
Du har slutfört Azure Automation-installationen. Du kan testa webhooks med ett enkelt API-test för att verifiera att webhooken fungerar. Några populära sätt att köra frågor mot API:et är:
- Visual Studio
- Sömnlöshet
- Bruno
- PowerShells Invoke-RestMethod
- Hårlock
Nu måste du skapa logikappen för orkestrering.
Skapa en Azure-logikapp för orkestrering
Med Logic Apps kan du skapa, schemalägga och automatisera processer som arbetsflöden så att du kan integrera appar, data, system och tjänster i företag i organisationer. I det här scenariot gör logikappen du skapar lite mer än att bara anropa automationswebbhooken som du skapade.
Budgetar kan konfigureras att utlösa ett meddelande när ett angivet tröskelvärde nås. Du kan ange flera tröskelvärden som ska meddelas på och logikappen visar möjligheten för dig att utföra olika åtgärder baserat på tröskelvärdet som uppnåtts. I det här exemplet konfigurerar du ett scenario där du får ett par aviseringar. Det första meddelandet gäller när 80 % av budgeten har nåtts. Det andra meddelandet är när 100 % av budgeten har nåtts. Logikappen används för att stänga av alla virtuella datorer i resursgruppen. Först nås det valfria tröskelvärdet på 80 %, sedan nås det andra tröskelvärdet där alla virtuella datorer i prenumerationen stängs av.
Med logikappar kan du ange ett exempelschema för HTTP-utlösaren, men du måste ange Content-Type-huvudet. Eftersom åtgärdsgruppen inte har anpassade sidhuvuden för webhooken, måste du parsa nyttolasten i ett separat steg. Du använder åtgärden Parsa och ger den en exempelnyttolast.
Skapa logikappen
Logikappen utför flera åtgärder. Följande lista innehåller en uppsättning åtgärder på hög nivå som logikappen utför:
- Identifiera när en HTTP-begäran tas emot
- Parsa de som skickas i JSON-data för att fastställa tröskelvärdet som har nåtts
- Använd en villkorssats för att kontrollera om tröskelvärdet nådde 80 % eller mer av budgetintervallet, men inte större än eller lika med 100 %.
- Om det här tröskelvärdet har nåtts skickar du ett HTTP POST med webhooken med namnet Valfritt. Den här åtgärden stänger av de virtuella datorerna i gruppen "Valfritt".
- Använd en villkorsstyrd instruktion för att kontrollera om tröskelvärdet har nått eller överskridit 100 % av budgetvärdet.
- Om tröskelvärdet har nåtts skickar du ett HTTP POST med webhooken med namnet Complete(Slutför). Den här åtgärden stänger av alla återstående virtuella datorer.
Följande steg krävs för att skapa logikappen som utför föregående steg:
- På Azure-portalen väljer du Skapa en resurs>Integrering>Logikapp.
- På området Skapa logikapp anger du informationen som behövs för att skapa din logikapp. Välj Fäst på instrumentpanelen och välj sedan Skapa.
När Azure har distribuerat din app öppnas Logic Apps Designer. Ett område med en introduktionsvideo och vanliga utlösare visas.
Lägg till utlösare
Varje logikapp måste börja med en utlösare som utlöses när en specifik händelse sker eller när ett särskilt villkor uppfylls. Varje gång utlösaren körs skapar Logic Apps-motorn en logikappinstans som startar och kör ditt arbetsflöde. Åtgärder är alla steg som sker efter utlösaren.
- Välj Tom logikapp under Mallar på området Logic Apps Designer.
- Lägg till en utlösare genom att ange ”http request” i sökrutan Logic Apps Designer och leta upp och välj utlösaren med namnet Begäran – När en HTTP-förfrågan tas emot.
- Välj Nytt steg>Lägg till en åtgärd.
- Sök efter ”Parsa JSON” i sökrutan i Logic Apps Designer och leta upp och välj åtgärden Dataåtgärder – Parsa JSON.
- Ange ”Payload” (nyttolast) som innehållsnamn för nyttolasten Parsa JSON eller använd taggen ”Body” (innehåll) från dynamiskt innehåll.
- Välj alternativet Generera schemat genom att använda en exempelnyttolast i rutan Parsa JSON.
- Klistra in följande JSON-exempelnyttolast i textrutan:
{"schemaId":"AIP Budget Notification","data":{"SubscriptionName":"CCM - Microsoft Azure Enterprise - 1","SubscriptionId":"<GUID>","SpendingAmount":"100","BudgetStartDate":"6/1/2018","Budget":"50","Unit":"USD","BudgetCreator":"email@contoso.com","BudgetName":"BudgetName","BudgetType":"Cost","ResourceGroup":"","NotificationThresholdAmount":"0.8"}}
Textrutan visas som:
- Välj Klar.
Lägga till den första villkorliga åtgärden
Använd en villkorssats för att kontrollera om tröskelvärdet nådde 80 % eller mer av budgetintervallet, men inte större än eller lika med 100 %. Om det här tröskelvärdet har nåtts skickar du ett HTTP POST med webhooken med namnet Valfritt. Den här åtgärden stänger av de virtuella datorerna i gruppen Valfritt .
Välj Nytt steg>Lägg till ett villkor.
Visa en lista med tillgängliga värden genom att välja textrutan som innehåller
Choose a value
i rutan Villkor.
Välj Uttryck högst upp i listan och ange följande uttryck i uttrycksredigeraren:
float()
Välj Dynamiskt innehåll, placera markören inuti parentesen () och välj NotificationThresholdAmount i listan för att fylla i det fullständiga uttrycket. Uttrycket är:
float(body('Parse_JSON')?['data']?['NotificationThresholdAmount'])
Bekräfta uttrycket genom att välja OK.
Välj Större än eller lika med i listrutan för villkoret.
I rutan Välj ett värde för villkoret anger du
.8
.
Välj Lägg till>rad i rutan Villkor för att lägga till en annan del av villkoret.
Välj textrutan som innehåller
Choose a value
i rutan Villkor.Välj Uttryck högst upp i listan och ange följande uttryck i uttrycksredigeraren:
float()
Välj Dynamiskt innehåll, placera markören inuti parentesen () och välj NotificationThresholdAmount i listan för att fylla i det fullständiga uttrycket.
Bekräfta uttrycket genom att välja OK.
Välj Är mindre än i listrutan för villkoret.
I rutan Välj ett värde för villkoret anger du
1
.
I rutan Om sant väljer du Lägg till en åtgärd. Du lägger till en HTTP POST-åtgärd som stänger av valfria virtuella datorer.
Ange HTTP för att söka efter HTTP-åtgärden och välj åtgärden HTTP – HTTP.
Välj Post som värde för Metod.
Ange URL:en för webhooken med namnet Optional (Valfri), som du skapade tidigare i den här självstudien, som URI-värdet.
Välj Lägg till en åtgärd i rutan Om sant. Du lägger till en e-poståtgärd som skickar ett e-postmeddelande som meddelar mottagaren att de valfria virtuella datorerna har stängts av.
Sök efter ”skicka e-postmeddelande” och välj en åtgärd av typen Skicka e-postmeddelande baserat på den e-posttjänst som du använder.
För personliga Microsoft-konton väljer du Outlook.com. För Azure arbets- eller skolkonto väljer du Office 365 Outlook. Om du inte redan har en anslutning uppmanas du att logga in på ditt e-postkonto. Logic Apps skapar en anslutning till ditt e-postkonto. Du måste tillåta logikappen att komma åt din e-postinformation.
Lägg till texten Till, Ämne och Brödtext för e-postmeddelandet som meddelar mottagaren att de valfria virtuella datorerna stängdes av. Fyll i ämnes- och brödtextfälten med det dynamiska BudgetName- och NotificationThresholdAmount-innehållet.
Lägga till den andra villkorliga åtgärden
Använd en villkorsstyrd instruktion för att kontrollera om tröskelvärdet har nått eller överskridit 100 % av budgetvärdet. Om tröskelvärdet har nåtts skickar du ett HTTP POST med webhooken med namnet Complete(Slutför). Den här åtgärden stänger av alla återstående virtuella datorer.
- Välj Nytt steg>Lägg till ett villkor.
- Visa en lista med tillgängliga värden genom att välja textrutan som innehåller
Choose a value
i rutan Villkor. - Välj Uttryck högst upp i listan och ange följande uttryck i uttrycksredigeraren:
float()
- Välj Dynamiskt innehåll, placera markören inuti parentesen () och välj NotificationThresholdAmount i listan för att fylla i det fullständiga uttrycket.
Uttrycket liknar:
float(body('Parse_JSON')?['data']?['NotificationThresholdAmount'])
- Bekräfta uttrycket genom att välja OK.
- Välj Större än eller lika med i listrutan för villkoret.
- I rutan Välj ett värde för villkoret anger du
1
.
- I rutan Om sant väljer du Lägg till en åtgärd. Du lägger till en HTTP POST-åtgärd som stänger av alla återstående virtuella datorer.
- Ange HTTP för att söka efter HTTP-åtgärden och välj åtgärden HTTP – HTTP.
- Välj Post som värde för Metod.
- Ange URL:en för webhooken med namnet Complete (Fullständig), som du skapade tidigare i den här självstudien, som URI-värdet.
- Välj Lägg till en åtgärd i rutan Om sant. Du lägger till en e-poståtgärd som skickar ett e-postmeddelande som meddelar mottagaren att de återstående virtuella datorerna har stängts av.
- Sök efter ”skicka e-postmeddelande” och välj en åtgärd av typen Skicka e-postmeddelande baserat på den e-posttjänst som du använder.
- Lägg till texten Till, Ämne och Brödtext för e-postmeddelandet som meddelar mottagaren att de valfria virtuella datorerna stängdes av. Fyll i ämnes- och brödtextfälten med det dynamiska BudgetName- och NotificationThresholdAmount-innehållet.
- Välj Spara längst upp på området Logic App Designer.
Sammanfattning av logikappen
Så här ser logikappen ut när den är klar. I de flesta scenarier där du inte behöver tröskelbaserad orkestrering kan du anropa Automation-skriptet direkt från Monitor och hoppa över logikappsteget.
När du sparade logikappen genererades en URL som du kan anropa. Du använder den här URL:en i nästa avsnitt i den här självstudien.
Skapa en Azure Monitor-åtgärdsgrupp
En åtgärdsgrupp är en samling aviseringsinställningar som du definierar. När en avisering utlöses kan en speciell åtgärdsgrupp meddelas och ta emot aviseringen. En Azure-avisering genererar proaktivt ett meddelande baserat på vissa villkor och ger möjlighet att vidta åtgärder. En avisering kan använda data från flera källor, inklusive mått och loggar.
Åtgärdsgrupper är den enda slutpunkt som du integrerar med din budget. Du kan konfigurera meddelanden i många kanaler, men i det här scenariot fokuserar du på logikappen som du skapade tidigare i den här självstudien.
Skapa en åtgärdsgrupp i Azure Monitor
När du skapar åtgärdsgruppen pekar du på logikappen som du skapade tidigare i den här självstudien.
- Om du inte redan är inloggad på Azure Portal loggar du in och väljer Alla tjänster>Övervaka.
- Välj Aviseringar och sedan Hantera åtgärder.
- Välj Lägg till en åtgärdsgrupp på området Åtgärdsgrupper.
- Lägg till och verifiera följande objekt:
- Namn på åtgärdsgrupp
- Kort namn
- Prenumeration
- Resursgrupp
- Lägg till en LogicApp-åtgärd i fönstret Lägg till åtgärdsgrupp. Ge åtgärden namnet Budget-BudgetLA. Välj prenumerationen och resursgruppen i rutan Logikapp. Välj sedan logikappen som du skapade tidigare i den här självstudien.
- Ange logikappen genom att välja OK. Skapa åtgärdsgruppen genom att välja OK i rutan Lägg till åtgärdsgrupp.
Du har slutfört alla stödkomponenter som behövs för att effektivt orkestrera din budget. Nu behöver du bara skapa budgeten och konfigurera den så att den använder den åtgärdsgrupp som du skapat.
Skapa budgeten
Du kan skapa en budget på Azure-portalen med hjälp av budgetfunktionen i Cost Management. Du kan också skapa en budget med hjälp av REST-API:er, PowerShell-cmdlets eller CLI. I följande procedur används REST-API:et. Innan du anropar REST-API:et behöver du en auktoriseringstoken. Du kan skapa en autentiseringstoken genom att använda ARMClient-projektet. Med ARMClient kan du autentisera dig själv mot Azure Resource Manager och hämta en token för att anropa API:erna.
Skapa en autentiseringstoken
Navigera till ARMClient-projektet på GitHub.
Klona lagringsplatsen för att få en lokal kopia.
Öppna projektet i Visual Studio och skapa det.
När kompileringen är klar bör den körbara filen finnas i mappen \bin\debug.
Kör ARMClient. Öppna en kommandotolk och navigera till mappen \bin\debug från projektroten.
Logga in och autentisera genom att ange följande kommando i kommandotolken:
ARMClient login prod
Kopiera prenumerationens GUID från kommandots utdata.
Om du vill kopiera en auktoriseringstoken till Urklipp anger du följande kommando i kommandotolken, men se till att använda det kopierade prenumerations-ID:t från föregående steg:
ARMClient token <subscription GUID from previous step>
När du slutför föregående steg visas:
Token har kopierats till Urklipp.Spara token. Den ska användas i steg i nästa del av den här självstudien.
Skapa budgeten
Sedan skapar du en budget genom att anropa REST-API:erna för Azure Consumption. Du behöver ett sätt att interagera med API:er. Några populära sätt att köra frågor mot API:et är:
- Visual Studio
- Sömnlöshet
- Bruno
- PowerShells Invoke-RestMethod
- Hårlock
Du måste importera både miljö- och samlingsfiler till DIN API-klient. Samlingen innehåller grupperade definitioner av HTTP-begäranden som anropar Azure REST-API:er. Miljöfilen innehåller variabler som används av samlingen.
Skapa en ny begäran i API-klienten.
Spara den nya begäran så att den inte har något i den.
Ändra begäran från en
Get
- till enPut
-åtgärd.Ändra följande URL genom att ersätta
{subscriptionId}
med prenumerations-ID:t som du använde i föregående avsnitt i den här självstudien. Ändra också URL:en så att den innehåller ”SampleBudget” som värde för{budgetName}
:https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Consumption/budgets/{budgetName}?api-version=2018-03-31
Välj Rubriker i API-klienten.
Lägg till en ny nyckel med namnet ”Authorization” (Auktorisering).
Ange Värde till den token som skapades med ArmClient sist i det förra avsnittet.
Välj Brödtext i API-klienten.
Välj alternativet raw i API-klienten.
I textområdet i API-klienten klistrar du in följande exempelbudgetdefinition. Du måste ersätta parametrarna
subscriptionID
,resourcegroupname
ochactiongroupname
med ditt prenumerations-ID, ett unikt namn för resursgruppen och det åtgärdsgruppsnamn som du skapade i både URL:en och begärandetexten:{ "properties": { "category": "Cost", "amount": 100.00, "timeGrain": "Monthly", "timePeriod": { "startDate": "2018-06-01T00:00:00Z", "endDate": "2018-10-31T00:00:00Z" }, "filters": {}, "notifications": { "Actual_GreaterThan_80_Percent": { "enabled": true, "operator": "GreaterThan", "threshold": 80, "contactEmails": [], "contactRoles": [], "contactGroups": [ "/subscriptions/{subscriptionid}/resourceGroups/{resourcegroupname}/providers/microsoft.insights/actionGroups/{actiongroupname}" ] }, "Actual_EqualTo_100_Percent": { "operator": "EqualTo", "threshold": 100, "contactGroups": [ "/subscriptions/{subscriptionid}/resourceGroups/{resourcegroupname}/providers/microsoft.insights/actionGroups/{actiongroupname}" ] } } } }
Skicka begäran.
Nu har du alla delar som du behöver för att anropa API:et för budgetar. API-referensen för budgetar innehåller mer information om specifika begäranden, inklusive:
- budgetName – Flera budgetar stöds. Budgetnamnen måste vara unika.
- category – Måste vara antingen Cost eller Usage. API:et stöder både kostnads- och användningsbudgetar.
- timeGrain – En månads-, kvartals- eller årsbudget. Mängden återställs i slutet av perioden.
- filters – Filter gör att du kan begränsa budgeten till en specifik uppsättning resurser i det valda omfånget. Ett filter kan till exempel vara en samling resursgrupper för en budget på en prenumerationsnivå.
- notifications – Bestämmer meddelandeinformationen och tröskelvärdena. Du kan ställa in flera tröskelvärden och ange en e-postadress eller en åtgärdsgrupp för att få aviseringar.
Sammanfattning
Med den här självstudien har du lärt dig:
- Hur du skapar en Azure Automation-runbook för att stoppa virtuella datorer.
- Hur du skapar en logikapp i Azure som utlöses baserat på budgettrösklar och hur du anropar den relaterade runbooken med rätt parametrar.
- Hur du skapar en Azure Monitor-åtgärdsgrupp som konfigurerats för att utlösa Azure-logikappen när budgettröskeln nås.
- Så här skapar du budgeten med önskade tröskelvärden och kopplar den till åtgärdsgruppen.
Nu har du en fullt fungerande budget för din prenumeration som stänger av dina virtuella datorer när du når dina konfigurerade budgettrösklar.
Nästa steg
- Mer information om faktureringsscenarier i Azure finns i Automatiseringsscenarier för fakturerings- och kostnadshantering.