Gestire i costi con i budget di AzureManage costs with Azure Budgets

Il controllo dei costi è un componente essenziale per ottimizzare il valore del proprio investimento nel cloud.Cost control is a critical component to maximizing the value of your investment in the cloud. Esistono diversi scenari in cui la visibilità dei costi, la creazione di report e l'orchestrazione basata sui costi hanno un'importanza fondamentale per la continuità delle attività aziendali.There are several scenarios where cost visibility, reporting, and cost-based orchestration are critical to continued business operations. Il set di API di Gestione costi di Azure offre supporto per ciascuno di questi scenari.Azure Cost Management APIs provide a set of APIs to support each of these scenarios. Tramite queste API, gli utenti possono visualizzare i dati sull'utilizzo in modo da esaminare i costi in dettaglio a livello di singola istanza.The APIs provide usage details, allowing you to view granular instance level costs.

Come parte dell'attività di controllo dei costi vengono comunemente usati i budget.Budgets are commonly used as part of cost control. In Azure è possibile definire l'ambito dei budget,Budgets can be scoped in Azure. ad esempio limitandone la visualizzazione in base alla sottoscrizione, ai gruppi di risorse o a una raccolta di risorse.For instance, you could narrow your budget view based on subscription, resource groups, or a collection of resources. Oltre a usare l'API dei budget per ricevere una notifica tramite posta elettronica quando viene raggiunta una soglia, è possibile usare i gruppi di azioni di Monitoraggio di Azure per attivare un set orchestrato di azioni risultanti da un evento di budget.In addition to using the budgets API to notify you via email when a budget threshold is reached, you can use Azure Monitor action groups to trigger an orchestrated set of actions resulting from a budget event.

Un comune scenario d'uso dei budget per un cliente con un carico di lavoro non critico può verificarsi quando il cliente vuole gestire i costi rispetto a un budget e anche ottenere una previsione dei costi in base all'analisi della fattura mensile.A common budgets scenario for a customer running a non-critical workload could occur when they want to manage against a budget and also get to a predictable cost when looking at the monthly invoice. Questo scenario richiede un'orchestrazione basata sui costi delle risorse che fanno parte dell'ambiente di Azure.This scenario requires some cost-based orchestration of resources that are part of the Azure environment. Nello scenario è definito un budget mensile di € 1000 per la sottoscrizioneIn this scenario, a monthly budget of $1000 for the subscription is set. e sono impostate soglie di notifica per attivare alcune orchestrazioni.Also, notification thresholds are set to trigger a few orchestrations. Lo scenario prevede una soglia iniziale pari all'80% dei costi, in corrispondenza della quale vengono arrestate tutte le macchine virtuali nel gruppo di risorse Facoltativo,This scenario starts with an 80% cost threshold, which will stop all VMs in the resource group Optional. e una soglia successiva pari al 100% dei costi, oltre la quale verranno arrestate tutte le istanze delle macchine virtuali.Then, at the 100% cost threshold, all VM instances will be stopped.

Per configurare questo scenario, si completeranno le azioni elencate di seguito eseguendo i passaggi riportati nelle singole sezioni dell'esercitazione.To configure this scenario, you'll complete the following actions by using the steps provided in each section of this tutorial.

Le azioni descritte in questa esercitazione consentono di:These actions included in this tutorial allow you to:

  • Creare un runbook di Automazione di Azure per arrestare le macchine virtuali usando webhook.Create an Azure Automation Runbook to stop VMs by using webhooks.
  • Creare un'app per la logica di Azure da attivare in base al valore soglia del budget e chiamare il runbook con i parametri corretti.Create an Azure Logic App to be triggered based on the budget threshold value and call the runbook with the right parameters.
  • Creare un gruppo di azioni di Monitoraggio di Azure che verrà configurato per attivare l'app per la logica di Azure quando viene raggiunta la soglia di budget.Create an Azure Monitor Action Group that will be configured to trigger the Azure Logic App when the budget threshold is met.
  • Creare il budget di Azure con le soglie desiderate e collegarlo al gruppo di azioni.Create the Azure budget with the wanted thresholds and wire it to the action group.

Creare un runbook di Automazione di AzureCreate an Azure Automation Runbook

Automazione di Azure è un servizio che consente di creare script per eseguire la maggior parte delle attività di gestione delle risorse in base a una pianificazione o su richiesta.Azure Automation is a service that enables you to script most of your resource management tasks and run those tasks as either scheduled or on-demand. In questo scenario si creerà un runbook di Automazione di Azure che verrà usato per arrestare le macchine virtuali.As part of this scenario, you'll create an Azure Automation runbook that will be used to stop VMs. Per creare lo scenario, si userà il runbook grafico Stop Azure V2 VMs disponibile nella raccolta.You'll use the Stop Azure V2 VMs graphical runbook from the gallery to build this scenario. Importando questo runbook nell'account Azure e pubblicandolo, si potranno arrestare le macchine virtuali quando viene raggiunta una determinata soglia di budget.By importing this runbook into your Azure account and publishing it, you can stop VMs when a budget threshold is reached.

Creare un account di Automazione di AzureCreate an Azure Automation account

  1. Accedere al portale di Azure con le credenziali dell'account Azure.Sign in to the Azure portal with your Azure account credentials.
  2. Selezionare il pulsante Crea una risorsa nell'angolo in alto a sinistra della schermata di Azure.Select the Create a resource button found on the upper left corner of Azure.
  3. Selezionare Strumenti di gestione > Automazione.Select Management Tools > Automation.

    Nota

    Se non si ha un account Azure, è possibile creare un account gratuito.If you don't have an Azure account, you can create a free account.

  4. Immettere le informazioni dell'account.Enter your account information. Per Crea un account RunAs di Azure scegliere per abilitare automaticamente le impostazioni necessarie per semplificare l'autenticazione ad Azure.For Create Azure Run As account, choose Yes to automatically enable the settings needed to simplify authentication to Azure.
  5. Al termine, selezionare Crea per avviare la distribuzione dell'account di Automazione.When complete, select Create, to start the Automation account deployment.

Importare il runbook Stop Azure V2 VMsImport the Stop Azure V2 VMs runbook

Usando un runbook di Automazione di Azure, importare il runbook grafico Stop Azure V2 VMs dalla raccolta.Using an Azure Automation runbook, import the Stop Azure V2 VMs graphical runbook from the gallery.

  1. Accedere al portale di Azure con le credenziali dell'account Azure.Sign in to the Azure portal with your Azure account credentials.
  2. Aprire l'account di Automazione selezionando Tutti i servizi > Account di automazione.Open your Automation account by selecting All services > Automation Accounts. Selezionare quindi l'account di Automazione.Then, select your Automation Account.
  3. Selezionare Raccolta di runbook dalla sezione Automazione processi.Select Runbooks gallery from the Process Automation section.
  4. Impostare Origine raccolta su Script Center e selezionare OK.Set the Gallery Source to Script Center and select OK.
  5. Individuare e selezionare l'elemento della raccolta Stop Azure V2 VMs nel portale di Azure.Locate and select the Stop Azure V2 VMs gallery item within the Azure portal.
  6. Selezionare Importa per visualizzare l'area Importa, quindi selezionare OK.Select Import to display the Import area and select OK. Verrà visualizzata l'area di panoramica del runbook.The runbook overview area will be displayed.
  7. Al termine del processo di importazione del runbook, selezionare Modifica per visualizzare l'editor del runbook grafico e l'opzione di pubblicazione.Once the runbook has completed the import process, select Edit to display the graphical runbook editor and publishing option.
    Azure - Modifica runbook graficoAzure - Edit graphical runbook
  8. Selezionare Pubblica per pubblicare il runbook, quindi quando richiesto.Select Publish to publish the runbook and then select Yes when prompted. Quando si pubblica un runbook, si sovrascrive l'eventuale versione pubblicata esistente con la versione bozza.When you publish a runbook, you override any existing published version with the draft version. In questo caso non esiste ancora una versione pubblicata perché il runbook è stato appena creato.In this case, you've no published version because you've created the runbook. Per altre informazioni sulla pubblicazione di un runbook, vedere Creare un runbook grafico.For more information about publishing a runbook, see Create a graphical runbook.

Creare webhook per il runbookCreate webhooks for the runbook

Usando il runbook grafico Stop Azure V2 VMs si creeranno due webhook per avviare il runbook in Automazione di Azure tramite una singola richiesta HTTP.Using the Stop Azure V2 VMs graphical runbook, you create two Webhooks to start the runbook in Azure Automation through a single HTTP request. Il primo webhook richiamerà il runbook in corrispondenza di una soglia di budget dell'80%, con il nome del gruppo di risorse come parametro, in modo da arrestare le macchine virtuali facoltative.The first webhook invokes the runbook at an 80% budget threshold with the resource group name as a parameter, allowing the optional VMs to be stopped. Quindi, il secondo webhook richiamerà il runbook senza parametri (alla soglia del 100%), arrestando così tutte le istanze di macchine virtuali rimanenti.Then, the second webhook invokes the runbook with no parameters (at 100%), which stops all remaining VM instances.

  1. Nella pagina Runbook del portale di Azure selezionare il runbook StopAzureV2Vm per visualizzare la relativa area di panoramica.From the Runbooks page in the Azure portal, select the StopAzureV2Vm runbook that displays the runbook's overview area.
  2. Selezionare Webhook nella parte superiore della pagina per aprire l'area Aggiungi webhook.Select Webhook at the top of the page to open the Add Webhook area.
  3. Selezionare Creare un nuovo webhook per aprire l'area Crea un nuovo webhook.Select Create new webhook to open the Create a new webhook area.
  4. Impostare il campo Nome del webhook su Facoltativo.Set the Name of the Webhook to Optional. La proprietà Abilitato deve essere impostata su .The Enabled property must be Yes. Non è necessario cambiare il valore di Scadenza.You don't need to change the Expires value. Per altre informazioni sulle proprietà dei webhook, vedere Proprietà dei webhook.For more information about Webhook properties, see Webhook properties.
  5. Accanto al valore dell'URL selezionare l'icona di copia per copiare l'URL del webhook.Next to the URL value, select the copy icon to copy the URL of the webhook.

    Importante

    Salvare l'URL del webhook denominato Facoltativo in un luogo sicuro.Save the URL of the webhook named Optional in a safe place. Questo URL verrà usato più avanti nell'esercitazione.You'll use the URL later in this tutorial. Per motivi di sicurezza, dopo la creazione di un webhook, non è più possibile visualizzare o recuperare l'URL.For security reasons, once you create the webhook, you cannot view or retrieve the URL again.

  6. Selezionare OK per creare il nuovo webhook.Select OK to create the new webhook.
  7. Selezionare Configura i parametri e le impostazioni di esecuzione per visualizzare i valori dei parametri relativi al runbook.Select Configure parameters and run settings to view parameter values for the runbook.

    Nota

    Se il runbook contiene parametri obbligatori, non sarà possibile creare il webhook a meno che non vengano forniti i valori.If the runbook has mandatory parameters, then you are not able to create the webhook unless values are provided.

  8. Selezionare OK per accettare i valori dei parametri del webhook.Select OK to accept the webhook parameter values.
  9. Selezionare Crea per creare il webhook.Select Create to create the webhook.
  10. Ripetere i passaggi precedenti per creare un secondo webhook denominato Completo.Next, follow the steps above to create a second webhook named Complete.

    Importante

    Assicurarsi di salvare entrambi gli URL dei webhook poiché sarà necessario usarli più avanti in questa esercitazione.Be sure to save both webhook URLs to use later in this tutorial. Per motivi di sicurezza, dopo la creazione di un webhook, non è più possibile visualizzare o recuperare l'URL.For security reasons, once you create the webhook, you cannot view or retrieve the URL again.

Si avranno ora due webhook configurati, ciascuno disponibile tramite l'URL salvato.You should now have two configured webhooks that are each available using the URLs that you saved.

Webhook - Facoltativo e Completo

A questo punto la configurazione di Automazione di Azure è completata.You're now done with the Azure Automation setup. È possibile testare i webhook con un semplice test Postman per verificarne il funzionamento.You can test the webhooks with a simple Postman test to validate that the webhook works. Il passaggio successivo consiste nel creare l'app per la logica per l'orchestrazione.Next, you must create the Logic App for orchestration.

Creare un'app per la logica di Azure per l'orchestrazioneCreate an Azure Logic App for orchestration

App per la logica consente di creare, pianificare e automatizzare i processi sotto forma di flussi di lavoro in modo da integrare app, dati, sistemi e servizi in aziende e organizzazioni.Logic Apps helps you build, schedule, and automate processes as workflows so you can integrate apps, data, systems, and services across enterprises or organizations. In questo scenario si creerà un'app per la logica che non si limiterà a chiamare semplicemente il webhook di automazione creato.In this scenario, the Logic App you create will do a little more than just call the automation webhook you created.

È possibile definire budget per attivare una notifica quando viene raggiunta una soglia specificata.Budgets can be set up to trigger a notification when a specified threshold is met. Impostando più valori soglia per la ricezione di notifiche, l'app per la logica consentirà di eseguire azioni diverse in base alla soglia raggiunta.You can provide multiple thresholds to be notified at and the Logic App will demonstrate the ability for you to perform different actions based on the threshold met. Nello scenario configurato in questo esempio si riceveranno due notifiche, la prima quando viene raggiunto l'80% del budget e la seconda quando viene toccata la soglia del 100%.In this example, you'll set up a scenario where you get a couple of notifications, the first notification is for when 80% of the budget has been reached and the second notification is when 100% of the budget has been reached. L'app per la logica verrà usata per arrestare tutte le macchine virtuali nel gruppo di risorse.The logic app will be used to shut down all VMs in the resource group. Prima verrà raggiunta la soglia denominata Facoltativo in corrispondenza dell'80% del budget e successivamente verrà raggiunta la seconda soglia, in cui tutte le macchine virtuali nella sottoscrizione verranno arrestate.First, the Optional threshold will be reached at 80%, then the second threshold will be reached where all VMs in the subscription will be shut down.

Le app per la logica consentono di definire uno schema di esempio per il trigger HTTP, ma richiedono che venga impostata l'intestazione Content-Type.Logic apps allow you to provide a sample schema for the HTTP trigger, but require you to set the Content-Type header. Poiché il gruppo di azioni non ha intestazioni personalizzate per il webhook, è necessario analizzare il payload in un passaggio separato.Because the action group doesn't have custom headers for the webhook, you must parse out the payload in a separate step. Si userà quindi l'azione Analizza specificando un payload di esempio.You'll use the Parse action and provide it with a sample payload.

Creare l'app per la logicaCreate the logic app

L'app per la logica eseguirà diverse azioni.The logic app will perform several actions. Nell'elenco seguente presenta una sintesi delle azioni che verranno eseguite dall'app per la logica:The following list provides a high-level set of actions that the logic app will perform:

  • Riconoscere quando viene ricevuta una richiesta HTTP.Recognizes when an HTTP request is received
  • Analizzare i dati JSON passati per determinare il valore soglia raggiunto.Parse the passed in JSON data to determine the threshold value that has been reached
  • Usare un'istruzione condizionale per controllare se l'importo soglia ha raggiunto o superato l'80% dell'intervallo di budget, ma non è maggiore o uguale al 100%.Use a conditional statement to check whether the threshold amount has reached 80% or more of the budget range, but not greater than or equal to 100%.
    • Se la soglia è stata raggiunta, inviare una richiesta HTTP POST con il webhook denominato Facoltativo.If this threshold amount has been reached, send an HTTP POST using the webhook named Optional. Questa azione arresterà le macchine virtuali nel gruppo "Facoltativo".This action will shut down the VMs in the "Optional" group.
  • Usare un'istruzione condizionale per controllare se l'importo soglia ha raggiunto o superato il 100% del valore del budget.Use a conditional statement to check whether the threshold amount has reached or exceeded 100% of the budget value.
    • Se la soglia è stata raggiunta, inviare una richiesta HTTP POST con il webhook denominato Completo.If the threshold amount has been reached, send an HTTP POST using the webhook named Complete. Questa azione arresterà tutte le macchine virtuali rimanenti.This action will shut down all remaining VMs.

Per creare l'app per la logica che eseguirà i passaggi appena descritti, seguire questa procedura:The following steps are needed to create the logic app that will perform the above steps:

  1. Nel portale di Azure selezionare Crea una risorsa > Integrazione > App per la logica.In the Azure portal, select Create a resource > Integration > Logic App.
    Azure - Selezionare la risorsa App per la logicaAzure - Select the Logic App resource
  2. Nell'area Crea app per la logica specificare i dettagli necessari per creare l'app per la logica, selezionare Aggiungi al dashboard e quindi Crea.In the Create logic app area, provide the details need to create your logic app, select Pin to dashboard, and select Create.
    Azure - Creare un'app per la logicaAzure - Create a Logic App

Dopo che Azure avrà distribuito l'app per la logica, viene visualizzata la schermata Progettazione app per la logica contenente un'area con un video introduttivo e i trigger di uso comune.After Azure deploys your logic app, the Logic Apps Designer opens and shows an area with an introduction video and commonly used triggers.

Aggiungere un triggerAdd a trigger

Ogni app per la logica deve essere avviata con un trigger, che viene attivato quando si verifica un determinato evento o quando viene soddisfatta una condizione specifica.Every logic app must start with a trigger, which fires when a specific event happens or when a specific condition is met. Ogni volta che il trigger viene attivato, il motore di App per la logica crea un'istanza dell'app per la logica che si avvia ed esegue il flusso di lavoro.Each time the trigger fires, the Logic Apps engine creates a logic app instance that starts and runs your workflow. Le azioni corrispondono a tutti i passaggi eseguiti dopo l'attivazione del trigger.Actions are all the steps that happen after the trigger.

  1. Nella sezione Modelli dell'area Progettazione app per la logica scegliere App per la logica vuota.Under Templates of the Logic Apps Designer area, choose Blank Logic App.
  2. Aggiungere un trigger specificando "richiesta http" nella casella di ricerca di Progettazione app per la logica per trovare e selezionare il trigger denominato Richiesta - Alla ricezione di una richiesta HTTP.Add a trigger by entering "http request" in the Logic Apps Designer search box to find and select the trigger named Request – When an HTTP request is received.
    Azure - App per la logica - Trigger HTTPAzure - Logic app - Http trigger
  3. Selezionare Nuovo passaggio > Aggiungi un'azione.Select New step > Add an action.
    Azure - Nuovo passaggio - Aggiungere un'azioneAzure - New step - Add an action
  4. Nella casella di ricerca di Progettazione app per la logica cercare "analizza JSON" per trovare e selezionare l'azioneOperazioni dati - Analizza JSON.Search for "parse JSON" in the Logic Apps Designer search box to find and select the Data Operations - Parse JSON action.
    Azure - App per la logica - Aggiungere l'azione Analizza JSONAzure - Logic app - Add parse JSON action
  5. Inserire "Payload" come nome del Contenuto per il payload Analizza JSON o usare il tag "Body" dal contenuto dinamico.Enter "Payload" as the Content name for the Parse JSON payload or use the "Body" tag from dynamic content.
  6. Selezionare l'opzione Usare il payload di esempio per generare lo schema nella casella Analizza JSON.Select the Use sample payload to generate schema option in the Parse JSON box.
    Azure - App per la logica - Usare i dati JSON di esempio per generare lo schemaAzure - Logic app - Use sample JSON data to generate schema
  7. Incollare il payload JSON di esempio seguente nella casella di testo: {"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"}}Paste the following JSON sample payload into the textbox: {"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"}} Verrà visualizzata la casella di testo seguente:The textbox will appear as:
    Azure - App per la logica - Payload JSON di esempioAzure - Logic app - The sample JSON payload
  8. Selezionare Operazione completata.Select Done.

Aggiungere la prima azione condizionaleAdd the first conditional action

Usare un'istruzione condizionale per controllare se l'importo soglia ha raggiunto o superato l'80% dell'intervallo di budget, ma non è maggiore o uguale al 100%.Use a conditional statement to check whether the threshold amount has reached 80% or more of the budget range, but not greater than or equal to 100%. Se la soglia è stata raggiunta, inviare una richiesta HTTP POST con il webhook denominato Facoltativo.If this threshold amount has been reached, send an HTTP POST using the webhook named Optional. Questa azione arresterà le macchine virtuali nel gruppo Facoltativo.This action will shut down the VMs in the Optional group.

  1. Selezionare Nuovo passaggio > Aggiungi una condizione.Select New step > Add a condition.
    Azure - App per la logica - Aggiungere una condizioneAzure - Logic app - Add a condition

  2. Nella finestra Condizione selezionare la casella di testo contenente Choose a value per visualizzare un elenco di valori disponibili.In the Condition box, select the textbox containing Choose a value to display a list of available values.
    Azure - App per la logica - Finestra CondizioneAzure - Logic app - Condition box

  3. Selezionare Espressione all'inizio dell'elenco e immettere l'espressione seguente nell'editor delle espressioni: float()Select Expression at the top of the list and enter the following expression in the expression editor: float()
    Azure - App per la logica - Espressione floatAzure - Logic app - Float expression

  4. Selezionare Contenuto dinamico, posizionare il cursore all'interno delle parentesi () e selezionare NotificationThresholdAmount dall'elenco per completare l'espressione.Select Dynamic content, place the cursor inside the parenthesis (), and select NotificationThresholdAmount from the list to populate the complete expression. Verrà generata l'espressione seguente:The expression will be:
    float(body('Parse_JSON')?['data']?['NotificationThresholdAmount'])

  5. Selezionare OK per impostare l'espressione.Select OK to set the expression.

  6. Selezionare è maggiore o uguale a dalla casella a discesa della finestra Condizione.Select is greater than or equal to in the dropdown box of the Condition.

  7. Nella casella Scegliere un valore della condizione immettere .8.In the Choose a value box of the condition, enter .8.
    Screenshot che illustra la finestra di dialogo Condizione con i valori selezionati.Screenshot shows the Condition dialog box with values selected.

  8. Selezionare Aggiungi > Aggiungi riga all'interno della finestra Condizione per aggiungere un altro elemento della condizione.Select Add > Add row within the Condition box to add an additional part of the condition.

  9. Nella finestra Condizione selezionare la casella di testo contenente Choose a value.In the Condition box, select the textbox containing Choose a value.

  10. Selezionare Espressione all'inizio dell'elenco e immettere l'espressione seguente nell'editor delle espressioni: float()Select Expression at the top of the list and enter the following expression in the expression editor: float()

  11. Selezionare Contenuto dinamico, posizionare il cursore all'interno delle parentesi () e selezionare NotificationThresholdAmount dall'elenco per completare l'espressione.Select Dynamic content, place the cursor inside the parenthesis (), and select NotificationThresholdAmount from the list to populate the complete expression.

  12. Selezionare OK per impostare l'espressione.Select OK to set the expression.

  13. Selezionare è minore di dalla casella a discesa della finestra Condizione.Select is less than in the dropdown box of the Condition.

  14. Nella casella Scegliere un valore della condizione immettere 1.In the Choose a value box of the condition, enter 1.
    Screenshot che illustra la finestra di dialogo Condizione con due condizioni.Screenshot shows the Condition dialog box with two conditions.

  15. Nella finestra È true selezionare Aggiungi un'azione.In the If true box, select Add an action. Si aggiungerà un'azione HTTP POST che arresterà le macchine virtuali facoltative.You'll add an HTTP POST action that will shut down optional VMs.
    Azure - App per la logica - Aggiungere un'azioneAzure - Logic app - Add an action

  16. Immettere HTTP per cercare l'azione HTTP e selezionare l'azione HTTP - HTTP.Enter HTTP to search for the HTTP action and select the HTTP – HTTP action.
    Azure - App per la logica - Aggiungere un'azione HTTPAzure - Logic app - Add HTTP action

  17. Selezionare Post come valore di Metodo.Select Post for the Method value.

  18. Immettere l'URL del webhook Facoltativo creato in precedenza in questa esercitazione come valore di Uri.Enter the URL for the webhook named Optional that you created earlier in this tutorial as the Uri value.
    Azure - App per la logica - URI dell'azione HTTPAzure - Logic app - HTTP action URI

  19. Selezionare Aggiungi un'azione nella finestra È true.Select Add an action in the If true box. Si aggiungerà un'azione che invierà un messaggio di posta elettronica per informare il destinatario che le macchine virtuali facoltative sono state arrestate.You'll add an email action that will send an email notifying the recipient that the optional VMs have been shut down.

  20. Cercare "invia messaggio di posta elettronica" e selezionare l'azione Invia messaggio di posta elettronica in base al servizio di posta elettronica usato.Search for "send email" and select a send email action based on the email service you use.
    Azure - App per la logica - Azione Invia messaggio di posta elettronicaAzure - Logic app - Send email action

    Per gli account Microsoft personali, selezionare Outlook.com.For personal Microsoft accounts, select Outlook.com. Per gli account aziendali o dell'istituto di istruzione di Azure, selezionare Office 365 Outlook.For Azure work or school accounts, select Office 365 Outlook. Se non si ha già una connessione, viene chiesto di accedere al proprio account di posta elettronica.If you don't already have a connection, you're asked to sign in to your email account. App per la logica crea una connessione all'account di posta elettronica.Logic Apps creates a connection to your email account. Sarà necessario consentire all'app per la logica di accedere alle informazioni della posta elettronica.You'll need to allow the Logic App to access your email information.
    Azure - App per la logica - Notifica di accessoAzure - Logic app - Access notice

  21. Impostare i campi A, Oggetto e Corpo per il messaggio di posta elettronica che verrà inviato per comunicare al destinatario l'arresto delle macchine virtuali facoltative.Add the To, Subject, and Body text for the email that notifies the recipient that the optional VMs have been shut down. Usare il contenuto dinamico BudgetName e NotificationThresholdAmount per inserire i dati nei campi relativi all'oggetto e al corpo.Use the BudgetName and the NotificationThresholdAmount dynamic content to populate the subject and body fields. Azure - App per la logica - Dettagli del messaggio di posta elettronicaAzure - Logic app - Email details

Aggiungere la seconda azione condizionaleAdd the second conditional action

Usare un'istruzione condizionale per controllare se l'importo soglia ha raggiunto o superato il 100% del valore del budget.Use a conditional statement to check whether the threshold amount has reached or exceeded 100% of the budget value. Se la soglia è stata raggiunta, inviare una richiesta HTTP POST con il webhook denominato Completo.If the threshold amount has been reached, send an HTTP POST using the webhook named Complete. Questa azione arresterà tutte le macchine virtuali rimanenti.This action will shut down all remaining VMs.

  1. Selezionare Nuovo passaggio > Aggiungi una condizione.Select New step > Add a Condition.
    Screenshot che illustra la finestra di dialogo È true con Aggiungi un'azione in evidenza.Screenshot shows the If true dialog box with Add an action called out.
  2. Nella finestra Condizione selezionare la casella di testo contenente Choose a value per visualizzare un elenco di valori disponibili.In the Condition box, select the textbox containing Choose a value to display a list of available values.
  3. Selezionare Espressione all'inizio dell'elenco e immettere l'espressione seguente nell'editor delle espressioni: float()Select Expression at the top of the list and enter the following expression in the expression editor: float()
  4. Selezionare Contenuto dinamico, posizionare il cursore all'interno delle parentesi () e selezionare NotificationThresholdAmount dall'elenco per completare l'espressione.Select Dynamic content, place the cursor inside the parenthesis (), and select NotificationThresholdAmount from the list to populate the complete expression. Verrà generata un espressione analoga alla seguente:The expression will resemble:
    float(body('Parse_JSON')?['data']?['NotificationThresholdAmount'])
  5. Selezionare OK per impostare l'espressione.Select OK to set the expression.
  6. Selezionare è maggiore o uguale a dalla casella a discesa della finestra Condizione.Select is greater than or equal to in the dropdown box of the Condition.
  7. Nella casella Scegliere un valore della condizione immettere 1.In the Choose a value box for the condition, enter 1.
    Azure - App per la logica - Impostare il valore della condizioneAzure - Logic app - Set condition value
  8. Nella finestra È true selezionare Aggiungi un'azione.In the If true box, select Add an action. Si aggiungerà un'azione HTTP POST che arresterà tutte le macchine virtuali rimanenti.You'll add an HTTP POST action that will shut down all the remaining VMs.
    Screenshot che illustra la finestra di dialogo È true con evidenziata la posizione in cui è possibile aggiungere un'azione HTTP POST.Screenshot shows the If true dialog box with where you can add an H T T P POST action.
  9. Immettere HTTP per cercare l'azione HTTP e selezionare l'azione HTTP - HTTP.Enter HTTP to search for the HTTP action and select the HTTP – HTTP action.
  10. Selezionare Post come valore di Metodo.Select Post as the Method value.
  11. Immettere l'URL del webhook Completo creato in precedenza in questa esercitazione come valore di Uri.Enter the URL for the webhook named Complete that you created earlier in this tutorial as the Uri value.
    Screenshot che illustra la finestra di dialogo HTTP in cui è possibile immettere il valore dell'URL.Screenshot shows the H T T P dialog box where you can enter the U R L value.
  12. Selezionare Aggiungi un'azione nella finestra È true.Select Add an action in the If true box. Si aggiungerà un'azione che invierà un messaggio di posta elettronica per informare il destinatario che le macchine virtuali rimanenti sono state arrestate.You'll add an email action that will send an email notifying the recipient that the remaining VMs have been shut down.
  13. Cercare "invia messaggio di posta elettronica" e selezionare l'azione Invia messaggio di posta elettronica in base al servizio di posta elettronica usato.Search for "send email" and select a send email action based on the email service you use.
  14. Impostare i campi A, Oggetto e Corpo per il messaggio di posta elettronica che verrà inviato per comunicare al destinatario l'arresto delle macchine virtuali facoltative.Add the To, Subject, and Body text for the email that notifies the recipient that the optional VMs have been shut down. Usare il contenuto dinamico BudgetName e NotificationThresholdAmount per inserire i dati nei campi relativi all'oggetto e al corpo.Use the BudgetName and the NotificationThresholdAmount dynamic content to populate the subject and body fields.
    Azure - App per la logica - Dettagli del messaggio di posta elettronicaAzure - Logic app - Send email details
  15. Selezionare Salva nella parte superiore dell'area Progettazione app per la logica.Select Save at the top of the Logic App Designer area.

Riepilogo dell'app per la logicaLogic App summary

Al termine delle operazioni, l'app per la logica avrà un aspetto simile al seguente.Here's what your Logic App looks like once you're done. Negli scenari più semplici, in cui non è necessaria un'orchestrazione basata su soglie, è possibile chiamare direttamente lo script di automazione da Monitoraggio e ignorare il passaggio di App per la logica.In the most basic of scenarios where you don't need any threshold-based orchestration, you could directly call the automation script from Monitor and skip the Logic App step.

Azure - App per la logica - Visualizzazione completa

Quando è stata salvata l'app per la logica, è stato generato un URL che sarà possibile chiamare.When you saved your logic app, a URL was generated that you'll be able to call. Questo URL verrà usato nella sezione successiva di questa esercitazione.You'll use this URL in the next section of this tutorial.

Creare un gruppo di azioni di Monitoraggio di AzureCreate an Azure Monitor Action Group

Un gruppo di azioni è una raccolta di preferenze di notifica definite dall'utente.An action group is a collection of notification preferences that you define. Quando viene attivato un avviso, uno specifico gruppo di azioni può ricevere l'avviso tramite una notifica.When an alert is triggered, a specific action group can receive the alert by being notified. Un avviso di Azure genera una notifica in modo proattivo in base a condizioni specifiche e offre la possibilità di eseguire un'azione.An Azure alert proactively raises a notification based on specific conditions and provides the opportunity to take action. Un avviso può usare dati provenienti da più origini, tra cui metriche e log.An alert can use data from multiple sources, including metrics and logs.

I gruppi di azioni sono l'unico endpoint che si integrerà con il budget.Action groups are the only endpoint that you'll integrate with your budget. È possibile configurare le notifiche in vari canali, ma questo scenario sarà incentrato sull'app per la logica creata in precedenza nell'esercitazione.You can set up notifications in a number of channels, but for this scenario you'll focus on the Logic App you created earlier in this tutorial.

Creare un gruppo di azioni in Monitoraggio di AzureCreate an action group in Azure Monitor

Quando si crea il gruppo di azioni, è necessario definire un puntatore all'app per la logica creata in precedenza in questa esercitazione.When you create the action group, you'll point to the Logic App that you created earlier in this tutorial.

  1. Se non è già stato eseguito l'accesso al portale di Azure, accedere e selezionare Tutti i servizi > Monitoraggio.If you are not already signed-in to the Azure portal, sign in and select All services > Monitor.
  2. Selezionare Avvisi e quindi Gestisci azioni.Select Alerts then select Manage actions.
  3. Selezionare Aggiungi gruppo di azioni nell'area Gruppi di azioni.Select Add an action group from the Action groups area.
  4. Aggiungere e verificare quanto segue:Add and verify the following items:
    • Nome gruppo di azioneAction group name
    • Nome breveShort name
    • SubscriptionSubscription
    • Resource groupResource group
      Azure - App per la logica - Aggiungere un gruppo di azioni
  5. All'interno del pannello Aggiungi gruppo di azioni aggiungere un'azione di tipo App per la logica.Within the Add action group pane, add a LogicApp action. Assegnare il nome Budget-BudgetLA all'azione.Name the action Budget-BudgetLA. Nel riquadro App per la logica selezionare i valori per Sottoscrizione e Gruppo di risorse.In the Logic App pane, select the Subscription and the Resource group. Selezionare quindi l'app per la logica creata in precedenza in questa esercitazione.Then, select the Logic app that you created earlier in this tutorial.
  6. Selezionare OK per impostare l'app per la logica.Select OK to set the Logic App. Selezionare quindi OK nel riquadro Aggiungi gruppo di azioni per creare il gruppo di azioni.Then, select OK in the Add action group pane to create the action group.

A questo punto sono stati creati tutti i componenti di supporto necessari per orchestrare il budget in modo efficiente.You're done with all the supporting components needed to effectively orchestrate your budget. È ora sufficiente creare il budget e configurarlo per l'uso del gruppo di azioni creato.Now all you need to do is create the budget and configure it to use the action group you created.

Creare il budget di AzureCreate the Azure Budget

È possibile creare un budget nel portale di Azure usando la funzionalità Budget in Gestione costi.You can create a budget in the Azure portal using the Budget feature in Cost Management. In alternativa, è possibile creare un budget usando le API REST, i cmdlet di PowerShell oppure l'interfaccia della riga di comando.Or, you can create a budget using REST APIs, PowerShell cmdlets, or use the CLI. Nella procedura seguente si userà l'API REST.The following procedure uses the REST API. Prima di chiamare l'API REST, è necessario un token di autorizzazione.Before calling the REST API, you'll need an authorization token. Per creare un token di autorizzazione, è possibile usare il progetto ARMClient.To create an authorization token, you can use the ARMClient project. ARMClient consente di eseguire l'autenticazione ad Azure Resource Manager e ottenere un token per chiamare le API.The ARMClient allows you to authenticate yourself to the Azure Resource Manager and get a token to call the APIs.

Ottenere un token di autenticazioneCreate an authentication token

  1. Passare al progetto ARMClient in GitHub.Navigate to the ARMClient project on GitHub.

  2. Clonare il repository per ottenere una copia locale.Clone the repo to get a local copy.

  3. Aprire il progetto in Visual Studio e compilarlo.Open the project in Visual Studio and build it.

  4. Al termine della compilazione, il file eseguibile dovrebbe trovarsi nella cartella \bin\debug.Once the build is successful, the executable should be in the \bin\debug folder.

  5. Eseguire ARMClient.Run the ARMClient. Aprire un prompt dei comandi e passare alla cartella \bin\debug dalla radice del progetto.Open a command prompt and navigate to the \bin\debug folder from the project root.

  6. Per eseguire l'accesso e l'autenticazione, immettere il comando seguente al prompt dei comandi:To sign in and authenticate, enter the following command at the command prompt:
    ARMClient login prod

  7. Copiare il GUID della sottoscrizione dall'output.Copy the subscription guid from the output.

  8. Per copiare un token di autorizzazione negli Appunti, immettere il comando seguente al prompt dei comandi, ma assicurarsi di usare l'ID della sottoscrizione copiato nel passaggio precedente:To copy an authorization token to your clipboard, enter the following command at the command prompt, but sure to use the copied subscription ID from the step above:
    ARMClient token <subscription GUID from previous step>

    Al termine di questo passaggio, verrà visualizzato quanto segue:Once you have completed the step above, you'll see:
    Copia del token negli Appunti completata.Token copied to clipboard successfully.

  9. Salvare il token da usare per i passaggi nella sezione successiva di questa esercitazione.Save the token to be used for steps in the next section of this tutorial.

Creare il budgetCreate the Budget

In questa procedura si configurerà Postman per creare un budget chiamando le API REST per l'utilizzo di Azure.Next, you'll configure Postman to create a budget by calling the Azure Consumption REST APIs. Postman è un ambiente per lo sviluppo di API.Postman is an API Development environment. Si importeranno i file dell'ambiente e della raccolta in Postman.You'll import environment and collection files into Postman. La raccolta contiene definizioni raggruppate delle richieste HTTP che chiamano le API REST per l'utilizzo di Azure.The collection contains grouped definitions of HTTP requests that call Azure Consumption REST APIs. Il file di ambiente contiene le variabili usate dalla raccolta.The environment file contains variables that are used by the collection.

  1. Scaricare e aprire il client REST di Postman per eseguire le API REST.Download and open the Postman REST client to execute the REST APIs.

  2. In Postman creare una nuova richiesta.In Postman, create a new request.
    Postman - Creare una nuova richiesta

  3. Salvare la nuova richiesta come raccolta, in modo che non contenga informazioni.Save the new request as a collection, so that the new request has nothing on it.
    Postman - Salvare la nuova richiesta

  4. Modificare la richiesta sostituendo l'azione Get con Put.Change the request from a Get to a Put action.

  5. Modificare l'URL seguente sostituendo {subscriptionId} con l'ID sottoscrizione usato nella sezione precedente di questa esercitazione.Modify the following URL by replacing {subscriptionId} with the Subscription ID that you used in the previous section of this tutorial. Modificare inoltre l'URL in modo da includere "SampleBudget" come valore per {budgetName}: https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Consumption/budgets/{budgetName}?api-version=2018-03-31Also, modify the URL to include "SampleBudget" as the value for {budgetName}: https://management.azure.com/subscriptions/{subscriptionId}/providers/Microsoft.Consumption/budgets/{budgetName}?api-version=2018-03-31

  6. Selezionare la scheda Headers (Intestazioni) in Postman.Select the Headers tab within Postman.

  7. In Key (Chiave) aggiungere una nuova chiave denominata "Authorization".Add a new Key named "Authorization".

  8. In Value (Valore) impostare il token creato usando ArmClient alla fine della sezione precedente.Set the Value to the token that was created using the ArmClient at the end of the last section.

  9. Selezionare la scheda Body (Corpo) all'interno di Postman.Select Body tab within Postman.

  10. Selezionare il pulsante Raw (Non elaborato).Select the raw button option.

  11. Nella casella di testo incollare la definizione di budget di esempio seguente, sostituendo però i parametri subscriptionID, resourcegroupname e actiongroupname rispettivamente con l'ID della sottoscrizione, un nome univoco per il gruppo di risorse e il nome del gruppo di azioni creato sia nell'URL che nel corpo della richiesta:In the textbox, paste in the below sample budget definition, however you must replace the subscriptionID, resourcegroupname, and actiongroupname parameters with your subscription ID, a unique name for your resource group, and the action group name you created in both the URL and the request body:

        {
            "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}"
                       ]
                   }
               }
            }
        }
    
  12. Fare clic su Send (Invia) per inviare la richiesta.Press Send to send the request.

A questo punto sono state completate tutte le operazioni necessarie per chiamare l'API Budget.You now have all the pieces you need to call the budgets API. Nelle informazioni di riferimento sull'API Budget sono inclusi altri dettagli sulle richieste specifiche, tra cui:The budgets API reference has additional details on the specific requests, including:

  • budgetName: sono supportati più budget.budgetName - Multiple budgets are supported. I nomi dei budget devono essere univoci.Budget names must be unique.
  • category: deve essere Cost o Usage.category - Must be either Cost or Usage. L'API supporta i budget relativi ai costi e all'utilizzo.The API supports both cost and usage budgets.
  • timeGrain: il budget può essere mensile, trimestrale o annuale.timeGrain - A monthly, quarterly, or yearly budget. L'importo viene azzerato alla fine del periodo.The amount resets at the end of the period.
  • filters: i filtri consentono di limitare il budget a un set specifico di risorse all'interno dell'ambito selezionato.filters - Filters allow you to narrow the budget to a specific set of resources within the selected scope. Un filtro può ad esempio essere costituito da una raccolta di gruppi di risorse per un budget definito a livello di sottoscrizione.For example, a filter could be a collection of resource groups for a subscription level budget.
  • notifications: determina i dettagli e le soglie di notifica.notifications – Determines the notification details and thresholds. È possibile impostare più soglie e specificare un indirizzo di posta elettronica o un gruppo di azioni per ricevere una notifica.You can set up multiple thresholds and provide an email address or an action group to receive a notification.

SummarySummary

In questa esercitazione sono state illustrate le procedure per:By using this tutorial, you learned:

  • Creare un runbook di Automazione di Azure per arrestare le macchine virtuali.How to create an Azure Automation Runbook to stop VMs.
  • Creare un'app per la logica di Azure da attivare in base ai valori soglia del budget e chiamare il runbook correlato con i parametri corretti.How to create an Azure Logic App that is triggered based on the budget threshold values and call the related runbook with the right parameters.
  • Creare un gruppo di azioni di Monitoraggio di Azure configurato per attivare l'app per la logica di Azure quando viene raggiunta la soglia di budget.How to create an Azure Monitor Action Group that was configured to trigger the Azure Logic App when the budget threshold is met.
  • Creare il budget di Azure con le soglie desiderate e collegarlo al gruppo di azioni.How to create the Azure budget with the desired thresholds and wire it to the action group.

Per la sottoscrizione è ora disponibile un budget perfettamente operativo che determina l'arresto delle macchine virtuali quando vengono raggiunte le soglie di budget configurate.You now have a fully functional budget for your subscription that will shut down your VMs when you reach your configured budget thresholds.

Passaggi successiviNext steps