Gerir os custos com os Orçamentos do AzureManage costs with Azure Budgets

O controlo de custos é um elemento essencial para maximizar o valor do seu investimento na cloud.Cost control is a critical component to maximizing the value of your investment in the cloud. Existem vários cenários em que a visibilidade de custos, os relatórios e a orquestração baseada em custos são fundamentais para as operações de negócios continuadas.There are several scenarios where cost visibility, reporting, and cost-based orchestration are critical to continued business operations. As APIs de Gestão de Custos do Azure fornecem um conjunto de APIs que suportam cada um destes cenários.Azure Cost Management APIs provide a set of APIs to support each of these scenarios. As APIs fornecem detalhes de utilização e permitem que veja os custos ao nível da instância granular.The APIs provide usage details, allowing you to view granular instance level costs.

Os orçamentos são normalmente utilizados como parte do controlo de custos.Budgets are commonly used as part of cost control. Os orçamentos podem ser delimitados no Azure.Budgets can be scoped in Azure. Por exemplo, pode restringir a vista do orçamento com base na subscrição, nos grupos de recursos ou numa coleção de recursos.For instance, you could narrow your budget view based on subscription, resource groups, or a collection of resources. Além de utilizar a API de orçamentos para ser notificado por e-mail quando é atingido um limiar de orçamento, pode utilizar os grupos de ação do Azure Monitor para acionar um conjunto de ações orquestradas resultantes de um evento de orçamento.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.

Um cliente que executa uma carga de trabalho não crítica pode recorrer a um cenário de orçamentos comum quando quer gerir a utilização em função do orçamento e também obter um custo previsível quando olha para a fatura mensal.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. Este cenário requer uma orquestração baseada nos custos dos recursos que fazem parte do ambiente do Azure.This scenario requires some cost-based orchestration of resources that are part of the Azure environment. Neste cenário, é definido um orçamento mensal de 1000 $ para a subscrição.In this scenario, a monthly budget of $1000 for the subscription is set. Além disso, são definidos limiares de notificação para acionar algumas orquestrações.Also, notification thresholds are set to trigger a few orchestrations. Este cenário começa com um limiar de custos de 80%, o que irá encerrar todas as VMs no grupo de recursos Opcional.This scenario starts with an 80% cost threshold, which will stop all VMs in the resource group Optional. Em seguida, no limiar de custos a 100%, serão encerradas todas as instâncias de VM.Then, at the 100% cost threshold, all VM instances will be stopped.

Para configurar este cenário, realizará as seguintes ações através dos passos fornecidos em cada secção deste tutorial.To configure this scenario, you'll complete the following actions by using the steps provided in each section of this tutorial.

As ações incluídas neste tutorial permitem-lhe:These actions included in this tutorial allow you to:

  • Criar um Runbook de Automatização do Azure para encerrar as VMs com webhooks.Create an Azure Automation Runbook to stop VMs by using webhooks.
  • Criar uma Aplicação Lógica do Azure para ser acionada com base no valor do limiar de orçamento e chamar o runbook com os parâmetros corretos.Create an Azure Logic App to be triggered based on the budget threshold value and call the runbook with the right parameters.
  • Criar um Grupo de Ações do Azure Monitor que será configurado para acionar a Aplicação Lógica do Azure quando o limiar do orçamento for atingido.Create an Azure Monitor Action Group that will be configured to trigger the Azure Logic App when the budget threshold is met.
  • Criar o orçamento do Azure com os limiares desejados e ligá-lo ao grupo de ações.Create the Azure budget with the wanted thresholds and wire it to the action group.

Criar um Runbook de Automatização do AzureCreate an Azure Automation Runbook

A Automatização do Azure é um serviço que permite gerar scripts para a maioria das tarefas de gestão de recursos e executar essas tarefas de acordo com a agenda ou a pedido.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. Como parte deste cenário, vai criar um runbook de Automatização do Azure que será utilizado para encerrar as VMs.As part of this scenario, you'll create an Azure Automation runbook that will be used to stop VMs. Vai utilizar o runbook gráfico Encerrar VMs do Azure V2 da galeria para criar este cenário.You'll use the Stop Azure V2 VMs graphical runbook from the gallery to build this scenario. Ao importar este runbook para a sua conta do Azure e ao publicá-lo, pode encerrar as VMs quando for atingido um limiar de orçamento.By importing this runbook into your Azure account and publishing it, you can stop VMs when a budget threshold is reached.

Crie uma conta de Automatização do AzureCreate an Azure Automation account

  1. Inicie sessão no portal do Azure com as credenciais da sua conta do Azure.Sign in to the Azure portal with your Azure account credentials.
  2. Selecione o botão Criar um recurso, localizado no canto superior esquerdo do Azure.Select the Create a resource button found on the upper left corner of Azure.
  3. Selecione Ferramentas de Gestão > Automatização.Select Management Tools > Automation.

    Nota

    Se ainda não tiver uma conta do Azure, poderá criar uma conta gratuita.If you don't have an Azure account, you can create a free account.

  4. Introduza as suas informações de conta.Enter your account information. Para Criar uma conta Run As do Azure, escolha Sim para ativar automaticamente os parâmetros necessários para simplificar a autenticação no Azure.For Create Azure Run As account, choose Yes to automatically enable the settings needed to simplify authentication to Azure.
  5. Quando terminar, selecione Criar para iniciar a implementação da conta de Automatização.When complete, select Create, to start the Automation account deployment.

Importar o runbook Encerrar VMs do Azure V2Import the Stop Azure V2 VMs runbook

Com um runbook de Automatização do Azure, importe o runbook gráfico Encerrar VMs do Azure V2 da galeria.Using an Azure Automation runbook, import the Stop Azure V2 VMs graphical runbook from the gallery.

  1. Inicie sessão no portal do Azure com as credenciais da sua conta do Azure.Sign in to the Azure portal with your Azure account credentials.
  2. Abra a Conta de automatização ao selecionar Todos os serviços > Contas de Automatização.Open your Automation account by selecting All services > Automation Accounts. Em seguida, selecione a Conta de Automatização.Then, select your Automation Account.
  3. Selecione Galeria de runbooks na secção Automatização de Processos.Select Runbooks gallery from the Process Automation section.
  4. Defina a Origem de Galeria como Centro de Scripts e selecione OK.Set the Gallery Source to Script Center and select OK.
  5. Localize e selecione o item da galeria Encerrar as VMs do Azure V2 no portal do Azure.Locate and select the Stop Azure V2 VMs gallery item within the Azure portal.
  6. Selecione Importar para apresentar a área Importar e selecione OK.Select Import to display the Import area and select OK. Será apresentada a área de descrição geral do runbook.The runbook overview area will be displayed.
  7. Quando o runbook concluir o processo de importação, selecione Editar para apresentar o editor do runbook gráfico e a opção de publicação.Once the runbook has completed the import process, select Edit to display the graphical runbook editor and publishing option.
    Azure – Editar runbook gráficoAzure - Edit graphical runbook
  8. Selecione Publicar para publicar o runbook e, em seguida, Sim quando lhe for pedido.Select Publish to publish the runbook and then select Yes when prompted. Quando publica um runbook, substitui qualquer versão publicada existente pela versão de rascunho.When you publish a runbook, you override any existing published version with the draft version. Neste caso, ainda não tem uma versão publicada porque acabou de criar o runbook.In this case, you've no published version because you've created the runbook. Para obter mais informações sobre como publicar um runbook, veja Criar um runbook gráfico.For more information about publishing a runbook, see Create a graphical runbook.

Criar webhooks para o runbookCreate webhooks for the runbook

Ao utilizar o runbook gráfico Encerrar VMs do Azure V2, criará dois Webhooks para iniciar o runbook na Automatização do Azure com um único pedido 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. O primeiro webhook invoca o runbook num limiar de orçamento de 80% com o nome do grupo de recursos como parâmetro, o que permite que sejam encerradas as VMs opcionais.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. Em seguida, o segundo webhook invoca o runbook sem qualquer parâmetro (a 100%), o que encerra todas as restantes instâncias de VM.Then, the second webhook invokes the runbook with no parameters (at 100%), which stops all remaining VM instances.

  1. Na página Runbooks no portal do Azure, selecione o runbook StopAzureV2Vm para apresentar a área de descrição geral do runbook.From the Runbooks page in the Azure portal, select the StopAzureV2Vm runbook that displays the runbook's overview area.
  2. Selecione Webhook na parte superior da página para abrir a área Adicionar Webhook.Select Webhook at the top of the page to open the Add Webhook area.
  3. Selecione Criar novo webhook para abrir a área Criar um novo webhook.Select Create new webhook to open the Create a new webhook area.
  4. Defina o Nome do Webhook como Opcional.Set the Name of the Webhook to Optional. A propriedade Ativada deve ser Sim.The Enabled property must be Yes. Não tem de alterar o valor Expira a.You don't need to change the Expires value. Para obter mais informações sobre as propriedades do Webhook, veja Webhook properties (Propriedades de webhook).For more information about Webhook properties, see Webhook properties.
  5. Junto do valor do URL, selecione o ícone de cópia para copiar o URL do webhook.Next to the URL value, select the copy icon to copy the URL of the webhook.

    Importante

    Guarde o URL do webhook chamado Opcional num local seguro.Save the URL of the webhook named Optional in a safe place. Utilizará este URL mais adiante neste tutorial.You'll use the URL later in this tutorial. Por motivos de segurança, depois de criar o webhook, não poderá ver nem obter o URL novamente.For security reasons, once you create the webhook, you cannot view or retrieve the URL again.

  6. Selecione OK para criar o novo webhook.Select OK to create the new webhook.
  7. Selecione Configurar parâmetros e definições de execução para ver os valores dos parâmetros do runbook.Select Configure parameters and run settings to view parameter values for the runbook.

    Nota

    Se o runbook tiver parâmetros obrigatórios, não poderá criar o webhook, a não ser que sejam fornecidos os valores.If the runbook has mandatory parameters, then you are not able to create the webhook unless values are provided.

  8. Selecione OK para aceitar os valores dos parâmetros do webhook.Select OK to accept the webhook parameter values.
  9. Selecione Criar para criar o webhook.Select Create to create the webhook.
  10. Em seguida, siga os passos acima para criar um segundo webhook chamado Completo.Next, follow the steps above to create a second webhook named Complete.

    Importante

    Lembre-se de guardar os URLs dos webhooks para serem utilizados posteriormente neste tutorial.Be sure to save both webhook URLs to use later in this tutorial. Por motivos de segurança, depois de criar o webhook, não poderá ver nem obter o URL novamente.For security reasons, once you create the webhook, you cannot view or retrieve the URL again.

Agora, deverá ter dois webhooks configurados, que poderá aceder através dos URLs guardados anteriormente.You should now have two configured webhooks that are each available using the URLs that you saved.

Webhooks – Opcional e Completo

Agora, concluiu a configuração da Automatização do Azure.You're now done with the Azure Automation setup. Pode testar os webhooks com um teste simples do Postman que valida o funcionamento do webhook.You can test the webhooks with a simple Postman test to validate that the webhook works. Em seguida, tem de criar a Aplicação Lógica para a orquestração.Next, you must create the Logic App for orchestration.

Criar uma Aplicação Lógica do Azure para a orquestraçãoCreate an Azure Logic App for orchestration

O Logic Apps ajuda a criar, agendar e automatizar os processos como fluxos de trabalho, para que possa integrar aplicações, dados, sistemas e serviços em empresas ou organizações.Logic Apps helps you build, schedule, and automate processes as workflows so you can integrate apps, data, systems, and services across enterprises or organizations. Neste cenário, a Aplicação Lógica que criar fará um pouco mais do que simplesmente chamar o webhook de automatização criado anteriormente.In this scenario, the Logic App you create will do a little more than just call the automation webhook you created.

Os orçamentos podem ser configurados para acionar uma notificação quando é atingido um limiar especificado.Budgets can be set up to trigger a notification when a specified threshold is met. Pode indicar vários limiares cujas notificações irá receber e a Aplicação Lógica demonstrará a capacidade de executar diferentes ações com base no limiar atingido.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. Neste exemplo, vai configurar um cenário em que obtém duas notificações; a primeira notificação é para quando atingir 80% do orçamento e a segunda notificação é para quando atingir 100% do orçamento.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. A aplicação lógica será utilizada para encerrar todas as VMs no grupo de recursos.The logic app will be used to shut down all VMs in the resource group. Primeiro, o limiar Opcional será atingido aos 80% e, em seguida, será atingido o segundo limiar, que fará com que todas as VMs na subscrição sejam encerradas.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.

As aplicações lógicas permitem que indique um esquema de exemplo para o acionador HTTP, mas requerem que defina o cabeçalho Content-Type.Logic apps allow you to provide a sample schema for the HTTP trigger, but require you to set the Content-Type header. Como o grupo de ações não tem cabeçalhos personalizados para o webhook, tem de analisar a carga num passo separado.Because the action group doesn't have custom headers for the webhook, you must parse out the payload in a separate step. Vai utilizar a ação Analisar e incluir um payload de exemplo.You'll use the Parse action and provide it with a sample payload.

Criar a aplicação lógicaCreate the logic app

A aplicação lógica executará várias ações.The logic app will perform several actions. A lista a seguir fornece um conjunto de ações de alto nível que a aplicação lógica executará:The following list provides a high-level set of actions that the logic app will perform:

  • Reconhece quando é recebido um pedido HTTPRecognizes when an HTTP request is received
  • Analisa os dados transmitidos no JSON para determinar o valor de limiar que foi atingidoParse the passed in JSON data to determine the threshold value that has been reached
  • Utiliza uma instrução condicional para verificar se o valor do limiar atingiu os 80% ou mais do intervalo do orçamento, mas sem ultrapassar nem chegar aos 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 este valor de limiar tiver sido atingido, envie um HTTP POST com o webhook denominado Opcional.If this threshold amount has been reached, send an HTTP POST using the webhook named Optional. Esta ação encerrará as VMs no grupo “Opcional”.This action will shut down the VMs in the "Optional" group.
  • Utilize uma instrução condicional para verificar se o valor do limiar atingiu ou excedeu os 100% do valor do orçamento.Use a conditional statement to check whether the threshold amount has reached or exceeded 100% of the budget value.
    • Se este valor de limiar tiver sido atingido, envie um HTTP POST com o webhook denominado Concluído.If the threshold amount has been reached, send an HTTP POST using the webhook named Complete. Esta ação encerrará todas as restantes VMs.This action will shut down all remaining VMs.

Os passos a seguir são necessários para criar a aplicação lógica que executará os passos acima:The following steps are needed to create the logic app that will perform the above steps:

  1. No portal do Azure, selecione Criar um recurso > Integração > Aplicação Lógica.In the Azure portal, select Create a resource > Integration > Logic App.
    Azure – Selecionar o recurso da Aplicação LógicaAzure - Select the Logic App resource
  2. Na área Criar aplicação lógica, indique os detalhes necessários para criar a aplicação lógica, selecione Afixar no dashboard e selecione Criar.In the Create logic app area, provide the details need to create your logic app, select Pin to dashboard, and select Create.
    Azure - Criar uma Aplicação LógicaAzure - Create a Logic App

Depois de o Azure implementar a aplicação lógica, o Estruturador de Aplicações Lógicas abre e mostra uma área com um vídeo de introdução e os acionadores habitualmente utilizados.After Azure deploys your logic app, the Logic Apps Designer opens and shows an area with an introduction video and commonly used triggers.

Adicionar um acionadorAdd a trigger

Todas as aplicações lógicas têm de iniciar com um acionador, que é desencadeado quando um evento específico acontece ou quando uma condição específica é cumprida.Every logic app must start with a trigger, which fires when a specific event happens or when a specific condition is met. Sempre que o acionador é acionado, o motor do Logic Apps cria uma instância da aplicação lógica que inicia e executa o fluxo de trabalho.Each time the trigger fires, the Logic Apps engine creates a logic app instance that starts and runs your workflow. As ações são todos os passos que ocorrem após o acionador.Actions are all the steps that happen after the trigger.

  1. Em Modelos , na área Estruturador de Aplicações Lógicas , escolha Aplicação Lógica em Branco.Under Templates of the Logic Apps Designer area, choose Blank Logic App.
  2. Adicione um acionador ao introduzir “pedido http” na caixa de pesquisa do Estruturador de Aplicações Lógicas para localizar e selecionar o acionador chamado Pedido – Quando um pedido HTTP é recebido.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 – Aplicação lógica – Acionador HTTPAzure - Logic app - Http trigger
  3. Selecione Novo passo > Adicionar uma ação.Select New step > Add an action.
    Azure – Novo passo – Adicionar uma açãoAzure - New step - Add an action
  4. Procure “analisar JSON” na caixa de pesquisa do Estruturador do Logic Apps para localizar e selecionar a ação Operações de Dados – Analisar JSON.Search for "parse JSON" in the Logic Apps Designer search box to find and select the Data Operations - Parse JSON action.
    Azure – Aplicação lógica – Adicionar ação analisar JSONAzure - Logic app - Add parse JSON action
  5. Insira “Payload” como o nome do Conteúdo do payload Analisar JSON ou utilize a etiqueta “Corpo” do conteúdo dinâmico.Enter "Payload" as the Content name for the Parse JSON payload or use the "Body" tag from dynamic content.
  6. Selecione a opção Utilizar payload de exemplo para gerar esquema na caixa Analisar JSON.Select the Use sample payload to generate schema option in the Parse JSON box.
    Azure – Aplicação lógica – Utilizar dados JSON de exemplo para gerar esquemaAzure - Logic app - Use sample JSON data to generate schema
  7. Cole o seguinte payload JSON de exemplo na caixa de texto: {"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"}} A caixa de texto será apresentada como:The textbox will appear as:
    Azure – Aplicação lógica – Payload JSON de exemploAzure - Logic app - The sample JSON payload
  8. Selecione Done (Concluído).Select Done.

Adicionar a primeira ação condicionalAdd the first conditional action

Utiliza uma instrução condicional para verificar se o valor do limiar atingiu os 80% ou mais do intervalo do orçamento, mas sem ultrapassar nem chegar aos 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 este valor de limiar tiver sido atingido, envie um HTTP POST com o webhook denominado Opcional.If this threshold amount has been reached, send an HTTP POST using the webhook named Optional. Esta ação encerrará as VMs no grupo Opcional.This action will shut down the VMs in the Optional group.

  1. Selecione Novo passo > Adicionar uma condição.Select New step > Add a condition.
    Azure – Aplicação lógica – Adicionar uma condiçãoAzure - Logic app - Add a condition

  2. Na caixa Condição, selecione a caixa de texto que contém Choose a value para apresentar uma lista dos valores disponíveis.In the Condition box, select the textbox containing Choose a value to display a list of available values.
    Azure – Aplicação lógica – Caixa CondiçãoAzure - Logic app - Condition box

  3. Selecione Expressão na parte superior da lista e introduza a seguinte expressão no editor de expressões: float()Select Expression at the top of the list and enter the following expression in the expression editor: float()
    Azure – Aplicação lógica – Expressão floatAzure - Logic app - Float expression

  4. Selecione Conteúdo dinâmico, coloque o cursor dentro dos parênteses () e selecione NotificationThresholdAmount na lista para povoar toda a expressão.Select Dynamic content, place the cursor inside the parenthesis (), and select NotificationThresholdAmount from the list to populate the complete expression. A expressão será:The expression will be:
    float(body('Parse_JSON')?['data']?['NotificationThresholdAmount'])

  5. Selecione OK para definir a expressão.Select OK to set the expression.

  6. Selecione é maior ou igual a na caixa pendente da Condição.Select is greater than or equal to in the dropdown box of the Condition.

  7. Na caixa Escolher um valor da condição, introduza .8.In the Choose a value box of the condition, enter .8.
    Captura de ecrã que mostra a caixa de diálogo Condição com valores selecionados.Screenshot shows the Condition dialog box with values selected.

  8. Selecione Adicionar > Adicionar linha na caixa Condição para adicionar uma parte adicional da condição.Select Add > Add row within the Condition box to add an additional part of the condition.

  9. Na caixa Condição, selecione a caixa de texto que contém Choose a value.In the Condition box, select the textbox containing Choose a value.

  10. Selecione Expressão na parte superior da lista e introduza a seguinte expressão no editor de expressões: float()Select Expression at the top of the list and enter the following expression in the expression editor: float()

  11. Selecione Conteúdo dinâmico, coloque o cursor dentro dos parênteses () e selecione NotificationThresholdAmount na lista para povoar toda a expressão.Select Dynamic content, place the cursor inside the parenthesis (), and select NotificationThresholdAmount from the list to populate the complete expression.

  12. Selecione OK para definir a expressão.Select OK to set the expression.

  13. Selecione é menor que na caixa pendente da Condição.Select is less than in the dropdown box of the Condition.

  14. Na caixa Escolher um valor da condição, introduza 1.In the Choose a value box of the condition, enter 1.
    Captura de ecrã que mostra a caixa de diálogo Condição com duas condições.Screenshot shows the Condition dialog box with two conditions.

  15. Na caixa Se verdadeiro, selecione Adicionar uma ação.In the If true box, select Add an action. Vai adicionar uma ação HTTP POST que encerrará as VMs opcionais.You'll add an HTTP POST action that will shut down optional VMs.
    Azure – Aplicação lógica – Adicionar uma açãoAzure - Logic app - Add an action

  16. Introduza HTTP para procurar a ação HTTP e selecione a ação HTTP – HTTP.Enter HTTP to search for the HTTP action and select the HTTP – HTTP action.
    Azure – Aplicação lógica – Adicionar ação HTTPAzure - Logic app - Add HTTP action

  17. Selecione Publicar como valor do Método.Select Post for the Method value.

  18. Introduza o URL do webhook chamado Opcional que criou anteriormente neste tutorial como o valor do Url.Enter the URL for the webhook named Optional that you created earlier in this tutorial as the Uri value.
    Azure – Aplicação lógica – URL da ação HTTPAzure - Logic app - HTTP action URI

  19. Selecione Adicionar uma ação na caixa Se verdadeiro.Select Add an action in the If true box. Vai adicionar uma ação de e-mail que enviará um e-mail a notificar o destinatário de que as VMs opcionais foram encerradas.You'll add an email action that will send an email notifying the recipient that the optional VMs have been shut down.

  20. Procure “enviar e-mail e selecione uma ação enviar e-mail com base no serviço de e-mail que utiliza.Search for "send email" and select a send email action based on the email service you use.
    Azure – Aplicação Lógica – Ação enviar e-mailAzure - Logic app - Send email action

    Par contas Microsoft pessoais, selecione Outlook.com.For personal Microsoft accounts, select Outlook.com. Para contas escolares ou profissionais do Azure, selecione Office 365 Outlook (Outlook do Office 365).For Azure work or school accounts, select Office 365 Outlook. Se ainda não tiver uma ligação, é-lhe pedido que inicie sessão na sua conta de e-mail.If you don't already have a connection, you're asked to sign in to your email account. O Logic Apps cria uma ligação para a sua conta de e-mail.Logic Apps creates a connection to your email account. Terá de permitir que a Aplicação Lógica aceda às suas informações de e-mail.You'll need to allow the Logic App to access your email information.
    Azure – Aplicação Lógica – Aviso de acessoAzure - Logic app - Access notice

  21. Adicione o texto Para, Assunto e Corpo ao e-mail que notifica o destinatário de que as VMs opcionais foram encerradas.Add the To, Subject, and Body text for the email that notifies the recipient that the optional VMs have been shut down. Utilize o conteúdo dinâmico BudgetName e NotificationThresholdAmount para povoar os campos do assunto e do corpo.Use the BudgetName and the NotificationThresholdAmount dynamic content to populate the subject and body fields. Azure – Aplicação Lógica – Detalhes do e-mailAzure - Logic app - Email details

Adicionar a segunda ação condicionalAdd the second conditional action

Utilize uma instrução condicional para verificar se o valor do limiar atingiu ou excedeu os 100% do valor do orçamento.Use a conditional statement to check whether the threshold amount has reached or exceeded 100% of the budget value. Se este valor de limiar tiver sido atingido, envie um HTTP POST com o webhook denominado Concluído.If the threshold amount has been reached, send an HTTP POST using the webhook named Complete. Esta ação encerrará todas as restantes VMs.This action will shut down all remaining VMs.

  1. Selecione Novo passo > Adicionar uma Condição.Select New step > Add a Condition.
    Captura de ecrã que mostra a caixa de diálogo "If true" com Adicionar uma Condição destacado.Screenshot shows the If true dialog box with Add an action called out.
  2. Na caixa Condição, selecione a caixa de texto que contém Choose a value para apresentar uma lista dos valores disponíveis.In the Condition box, select the textbox containing Choose a value to display a list of available values.
  3. Selecione Expressão na parte superior da lista e introduza a seguinte expressão no editor de expressões: float()Select Expression at the top of the list and enter the following expression in the expression editor: float()
  4. Selecione Conteúdo dinâmico, coloque o cursor dentro dos parênteses () e selecione NotificationThresholdAmount na lista para povoar toda a expressão.Select Dynamic content, place the cursor inside the parenthesis (), and select NotificationThresholdAmount from the list to populate the complete expression. A expressão será semelhante a:The expression will resemble:
    float(body('Parse_JSON')?['data']?['NotificationThresholdAmount'])
  5. Selecione OK para definir a expressão.Select OK to set the expression.
  6. Selecione é maior ou igual a na caixa pendente da Condição.Select is greater than or equal to in the dropdown box of the Condition.
  7. Na caixa Escolher um valor da condição, introduza 1.In the Choose a value box for the condition, enter 1.
    Azure – Aplicação lógica – Definir valor da condiçãoAzure - Logic app - Set condition value
  8. Na caixa Se verdadeiro, selecione Adicionar uma ação.In the If true box, select Add an action. Vai adicionar uma ação HTTP POST que encerrará as VMs restantes.You'll add an HTTP POST action that will shut down all the remaining VMs.
    Captura de ecrã que mostra a caixa de diálogo "If true" em que pode adicionar uma ação HTTP POST.Screenshot shows the If true dialog box with where you can add an H T T P POST action.
  9. Introduza HTTP para procurar a ação HTTP e selecione a ação HTTP – HTTP.Enter HTTP to search for the HTTP action and select the HTTP – HTTP action.
  10. Selecione Publicar como valor do Método.Select Post as the Method value.
  11. Introduza o URL do webhook chamado Concluído que criou anteriormente neste tutorial como o valor do Url.Enter the URL for the webhook named Complete that you created earlier in this tutorial as the Uri value.
    Captura de ecrã que mostra a caixa de diálogo HTTP em que pode introduzir um valor de URL.Screenshot shows the H T T P dialog box where you can enter the U R L value.
  12. Selecione Adicionar uma ação na caixa Se verdadeiro.Select Add an action in the If true box. Vai adicionar uma ação de e-mail que enviará um e-mail a notificar o destinatário de que as restantes VMs foram encerradas.You'll add an email action that will send an email notifying the recipient that the remaining VMs have been shut down.
  13. Procure “enviar e-mail e selecione uma ação enviar e-mail com base no serviço de e-mail que utiliza.Search for "send email" and select a send email action based on the email service you use.
  14. Adicione o texto Para, Assunto e Corpo ao e-mail que notifica o destinatário de que as VMs opcionais foram encerradas.Add the To, Subject, and Body text for the email that notifies the recipient that the optional VMs have been shut down. Utilize o conteúdo dinâmico BudgetName e NotificationThresholdAmount para povoar os campos do assunto e do corpo.Use the BudgetName and the NotificationThresholdAmount dynamic content to populate the subject and body fields.
    Azure – Aplicação Lógica – Detalhes de enviar e-mailAzure - Logic app - Send email details
  15. Selecione Guardar, na parte superior da área Estruturador de Aplicações Lógicas.Select Save at the top of the Logic App Designer area.

Resumo da Aplicação LógicaLogic App summary

Quando terminar, a aplicação lógica terá o aspeto deste exemplo.Here's what your Logic App looks like once you're done. No mais básico dos cenários em que não precisa de nenhuma orquestração baseada em limiares, pode chamar diretamente o script de automatização no Monitor e ignorar o passo da Aplicação Lógica.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 – Aplicação lógica – Vista completa

Quando guardou a aplicação lógica, foi gerado um URL que poderá chamar.When you saved your logic app, a URL was generated that you'll be able to call. Vai utilizar este URL na secção seguinte deste tutorial.You'll use this URL in the next section of this tutorial.

Criar um Grupo de Ações do Azure MonitorCreate an Azure Monitor Action Group

Um grupo de ações é uma coleção de preferências de notificação definida por si.An action group is a collection of notification preferences that you define. Quando é acionado um alerta, um grupo de ações específico pode receber o alerta através de notificação.When an alert is triggered, a specific action group can receive the alert by being notified. Um alerta do Azure gera proativamente uma notificação com base em condições específicas e fornece a oportunidade de agir.An Azure alert proactively raises a notification based on specific conditions and provides the opportunity to take action. Um alerta pode utilizar dados de várias origens, incluindo métricas e registos.An alert can use data from multiple sources, including metrics and logs.

Os grupos de ações são o único ponto final que integrará no orçamento.Action groups are the only endpoint that you'll integrate with your budget. Pode configurar notificações em vários canais, mas, para este cenário, vai concentrar-se na aplicação lógica criada anteriormente neste tutorial.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.

Criar um grupo de ações no Azure MonitorCreate an action group in Azure Monitor

Ao criar o grupo de ações, vai apontar para aplicação lógica que criou anteriormente neste tutorial.When you create the action group, you'll point to the Logic App that you created earlier in this tutorial.

  1. Se ainda não tiver iniciado sessão no portal do Azure, inicie sessão e selecione Todos os serviços > Monitor.If you are not already signed-in to the Azure portal, sign in and select All services > Monitor.
  2. Selecione Alertas e, em seguida, selecione Gerir ações.Select Alerts then select Manage actions.
  3. Selecione Adicionar um grupo de ações na área Grupo de ações.Select Add an action group from the Action groups area.
  4. Adicione e verifique os seguintes itens:Add and verify the following items:
    • Nome do grupo de açõesAction group name
    • Nome abreviadoShort name
    • SubscriçãoSubscription
    • Grupo de recursosResource group
      Azure – Aplicação lógica – Adicionar um grupo de ações
  5. No painel Adicionar grupo de ações, adicione uma ação LogicApp.Within the Add action group pane, add a LogicApp action. Dê à ação o nome Budget-BudgetLA.Name the action Budget-BudgetLA. No painel Aplicação Lógica, selecione a Subscrição e o Grupo de recursos.In the Logic App pane, select the Subscription and the Resource group. Em seguida, selecione a Aplicação lógica que criou anteriormente neste tutorial.Then, select the Logic app that you created earlier in this tutorial.
  6. Selecione OK para definir a Aplicação Lógica.Select OK to set the Logic App. Em seguida, selecione OK no painel Adicionar grupo de ações para criar o grupo de ações.Then, select OK in the Add action group pane to create the action group.

Concluiu todos os componentes de suporte necessários para orquestrar o orçamento com eficácia.You're done with all the supporting components needed to effectively orchestrate your budget. Agora, só precisa de criar o orçamento e configurá-lo para utilizar o grupo de ações que criou.Now all you need to do is create the budget and configure it to use the action group you created.

Criar o Orçamento do AzureCreate the Azure Budget

Pode criar um orçamento no portal do Azure com a funcionalidade Orçamento no Cost Management.You can create a budget in the Azure portal using the Budget feature in Cost Management. Em alternativa, pode criar um orçamento com as APIs REST, os cmdlets do PowerShell ou utilizar a CLI.Or, you can create a budget using REST APIs, PowerShell cmdlets, or use the CLI. O procedimento a seguir utiliza a API REST.The following procedure uses the REST API. Antes de chamar a API REST, precisará de um token de autorização.Before calling the REST API, you'll need an authorization token. Para criar um token de autorização, pode utilizar o projeto ARMClient.To create an authorization token, you can use the ARMClient project. O ARMClient permite que se autentique no Azure Resource Manager e obtenha um token para chamar as APIs.The ARMClient allows you to authenticate yourself to the Azure Resource Manager and get a token to call the APIs.

Criar um token de autenticaçãoCreate an authentication token

  1. Navegue até ao projeto ARMClient no GitHub.Navigate to the ARMClient project on GitHub.

  2. Clone o repositório para obter uma cópia local.Clone the repo to get a local copy.

  3. Abra o projeto no Visual Studio e compile-o.Open the project in Visual Studio and build it.

  4. Após a compilação ter sido bem-sucedida, o executável deverá estar na pasta \bin\debug.Once the build is successful, the executable should be in the \bin\debug folder.

  5. Execute o ARMClient.Run the ARMClient. Abra uma linha de comandos e navegue até à pasta \bin\debug na raiz do projeto.Open a command prompt and navigate to the \bin\debug folder from the project root.

  6. Para iniciar sessão e autenticar, introduza o seguinte comando na linha de comandos:To sign in and authenticate, enter the following command at the command prompt:
    ARMClient login prod

  7. Copie o guid de subscrição da saída.Copy the subscription guid from the output.

  8. Para copiar um token de autorização para a área de transferência, introduza o seguinte comando na linha de comandos, mas confirme que utiliza o ID de subscrição copiado do passo acima: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>

    Após ter concluído o passo acima, verá:Once you have completed the step above, you'll see:
    Token copiado para a área de transferência com êxito.Token copied to clipboard successfully.

  9. Guarde o token para utilizar nos passos na próxima secção deste tutorial.Save the token to be used for steps in the next section of this tutorial.

Criar o OrçamentoCreate the Budget

Em seguida, vai configurar o Postman para criar um orçamento ao chamar as APIs REST de Consumo do Azure.Next, you'll configure Postman to create a budget by calling the Azure Consumption REST APIs. O Postman é um Ambiente de desenvolvimento de APIs.Postman is an API Development environment. Vai importar ficheiros de ambiente e de coleção para o Postman.You'll import environment and collection files into Postman. A coleção contém definições agrupadas de pedidos HTTP que chamam as APIs REST de Consumo do Azure.The collection contains grouped definitions of HTTP requests that call Azure Consumption REST APIs. O ficheiro de ambiente contém variáveis que são utilizadas pela coleção.The environment file contains variables that are used by the collection.

  1. Transfira e abra o Cliente REST do Postman para executar as APIs REST.Download and open the Postman REST client to execute the REST APIs.

  2. No Postman, crie um novo pedido.In Postman, create a new request.
    Postman – Criar um novo pedido

  3. Guarde o novo pedido como uma coleção, para que o novo pedido não tenha nada nele.Save the new request as a collection, so that the new request has nothing on it.
    Postman – Guardar o novo pedido

  4. Altere o pedido de uma ação Get para uma Put.Change the request from a Get to a Put action.

  5. Modifique o URL a seguir ao substituir {subscriptionId} pelo ID da Subscrição que utilizou na secção anterior deste tutorial.Modify the following URL by replacing {subscriptionId} with the Subscription ID that you used in the previous section of this tutorial. Além disso, modifique o URL para incluir “SampleBudget” como o valor de {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. Selecione o separador Cabeçalhos no Postman.Select the Headers tab within Postman.

  7. Adicione uma nova Chave chamada “Autorização”.Add a new Key named "Authorization".

  8. Defina o Valor para o token que foi criado com o ArmClient no final da última secção.Set the Value to the token that was created using the ArmClient at the end of the last section.

  9. Selecione o separador Corpo no Postman.Select Body tab within Postman.

  10. Selecione opção de botão não processado.Select the raw button option.

  11. Na caixa de texto, cole na definição de orçamento do exemplo abaixo, mas tem de substituir os parâmetros subscriptionID, resourcegroupname e actiongroupname pelo ID da subscrição, um nome exclusivo do grupo de recursos e o nome do grupo de ações que criou tanto no URL quanto no corpo do pedido: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. Prima Enviar para enviar o pedido.Press Send to send the request.

Agora tem todas as partes necessárias para chamar a API de orçamentos.You now have all the pieces you need to call the budgets API. A referência da API de orçamentos tem detalhes adicionais sobre os pedidos específicos, incluindo:The budgets API reference has additional details on the specific requests, including:

  • budgetname – suporta vários orçamentos.budgetName - Multiple budgets are supported. Os nomes dos orçamentos têm de ser exclusivos.Budget names must be unique.
  • categoria – tem de ser Custo ou Utilização.category - Must be either Cost or Usage. A API suporta orçamentos de custos e de utilização.The API supports both cost and usage budgets.
  • timeGrain – um orçamento mensal, trimestral ou anual.timeGrain - A monthly, quarterly, or yearly budget. O valor é redefinido no final do período.The amount resets at the end of the period.
  • filtros – os filtros permitem restringir o orçamento a um conjunto específico de recursos dentro do âmbito selecionado.filters - Filters allow you to narrow the budget to a specific set of resources within the selected scope. Por exemplo, um filtro pode ser uma coleção de grupos de recursos para um orçamento de nível de subscrição.For example, a filter could be a collection of resource groups for a subscription level budget.
  • notificações – determina os detalhes e os limiares de notificação.notifications – Determines the notification details and thresholds. Pode configurar vários limiares e indicar um endereço de e-mail ou um grupo de ações para que recebam uma notificação.You can set up multiple thresholds and provide an email address or an action group to receive a notification.

ResumoSummary

Neste tutorial, ficou a saber:By using this tutorial, you learned:

  • Como criar um Runbook de Automatização do Azure para encerrar VMs.How to create an Azure Automation Runbook to stop VMs.
  • Como criar uma Aplicação Lógica do Azure para ser acionada com base nos valores de limiar de orçamento e chamar o runbook associado com os parâmetros corretos.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.
  • Como criar um Grupo de Ações do Azure Monitor configurado para acionar a Aplicação Lógica do Azure quando o limiar do orçamento for atingido.How to create an Azure Monitor Action Group that was configured to trigger the Azure Logic App when the budget threshold is met.
  • Como criar o orçamento do Azure com os limiares desejados e ligá-lo ao grupo de ações.How to create the Azure budget with the desired thresholds and wire it to the action group.

Agora tem um orçamento totalmente funcional para a sua subscrição que encerrará as VMs quando forem atingidos os limiares de orçamento configurados.You now have a fully functional budget for your subscription that will shut down your VMs when you reach your configured budget thresholds.

Passos seguintesNext steps