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

Controle de custo é um componente crítico para maximizar o valor de seu investimento na nuvem.Cost control is a critical component to maximizing the value of your investment in the cloud. Há vários cenários em que visibilidade de custo, relatórios e orquestração com base em custo são cruciais para a continuidade das operações de negócios.There are several scenarios where cost visibility, reporting, and cost-based orchestration are critical to continued business operations. As APIs de Gerenciamento de Custos do Azure fornecem um conjunto de APIs para dar suporte a cada um desses cenários.Azure Cost Management APIs provide a set of APIs to support each of these scenarios. As APIs fornecem detalhes de uso, permitindo que você exiba os custos granulares em nível de instância.The APIs provide usage details, allowing you to view granular instance level costs.

Orçamentos normalmente são usados como parte do controle de custos.Budgets are commonly used as part of cost control. O escopo de orçamentos pode ser definido no Azure.Budgets can be scoped in Azure. Por exemplo, você pode restringir sua exibição de orçamento com base em assinatura, grupos de recursos ou 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 usar a API de orçamentos para receber uma notificação por email quando um limite de orçamento for atingido, você poderá usar grupos de ações do Azure Monitor para disparar um conjunto orquestrado de ações 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 cenário comum de orçamentos de um cliente executando uma carga de trabalho não crítica pode ocorrer quando ele deseja gerenciar em elação a um orçamento e também obter um custo previsível ao examinar 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. Esse cenário requer alguma orquestração baseada em custo 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. Nesse cenário, um orçamento mensal de US$ 1.000 para a assinatura é definido.In this scenario, a monthly budget of $1000 for the subscription is set. Além disso, os limites de notificação são definidos para disparar algumas orquestrações.Also, notification thresholds are set to trigger a few orchestrations. Este cenário começa com um limite de custo de 80%, que interromperá 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, em um limite de custo de 100%, todas as instâncias VM serão interrompidas.Then, at the 100% cost threshold, all VM instances will be stopped.

Para configurar esse cenário, você concluirá as ações a seguir usando as etapas apresentadas em cada seção deste tutorial.To configure this scenario, you'll complete the following actions by using the steps provided in each section of this tutorial.

Essas ações incluídas neste tutorial permitem que você:These actions included in this tutorial allow you to:

  • Crie um Runbook de Automação do Azure para interromper VMs usando webhooks.Create an Azure Automation Runbook to stop VMs by using webhooks.
  • Crie um Aplicativo Lógico do Azure a ser disparado com base no valor de limite de orçamento e chame 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.
  • Crie um Grupo de Ação do Azure Monitor que será configurado para disparar o Aplicativo Lógico do Azure quando o limite de 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.
  • Crie o orçamento do Azure com os limites desejados e conecte-os ao grupo de ações.Create the Azure budget with the wanted thresholds and wire it to the action group.

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

A Automação do Azure é um serviço que permite criar o script da maioria das tarefas de gerenciamento de recursos e executar essas tarefas de modo agendado ou sob demanda.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 desse cenário, você criará um runbook de Automação do Azure que será usado para interromper as VMs.As part of this scenario, you'll create an Azure Automation runbook that will be used to stop VMs. Você usará o runbook gráfico Interromper VMs do Azure V2 da galeria para criar esse cenário.You'll use the Stop Azure V2 VMs graphical runbook from the gallery to build this scenario. Ao importar esse runbook para a sua conta do Azure e publicá-lo, você poderá interromper as VMs quando um limite de orçamento for atingido.By importing this runbook into your Azure account and publishing it, you can stop VMs when a budget threshold is reached.

Criar uma conta de Automação do AzureCreate an Azure Automation account

  1. Entre no portal do Azure com suas credenciais da 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 Gerenciamento > Automação.Select Management Tools > Automation.

    Observação

    Se você 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. Insira as informações da sua conta.Enter your account information. Para Criar uma conta Executar como do Azure, escolha Sim para habilitar automaticamente as configurações necessárias para simplificar a autenticação do Azure.For Create Azure Run As account, choose Yes to automatically enable the settings needed to simplify authentication to Azure.
  5. Ao concluir, selecione Criar para iniciar a implantação da conta de Automação.When complete, select Create, to start the Automation account deployment.

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

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

  1. Entre no portal do Azure com suas credenciais da conta do Azure.Sign in to the Azure portal with your Azure account credentials.
  2. Abra sua conta de Automação selecionando Todos os serviços > Contas de Automação.Open your Automation account by selecting All services > Automation Accounts. Em seguida, selecione sua Conta de Automação.Then, select your Automation Account.
  3. Selecione Galeria de runbooks na seção Automação de Processo.Select Runbooks gallery from the Process Automation section.
  4. Defina as Fonte da Galeria como Script Center e selecione OK.Set the Gallery Source to Script Center and select OK.
  5. Localize e selecione o item da galeria Interromper 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 exibir a área Importação e selecione OK.Select Import to display the Import area and select OK. A área de visão geral do runbook será exibida.The runbook overview area will be displayed.
  7. Depois que o runbook tiver concluído o processo de importação, selecione Editar para exibir a opção de publicação e o editor de runbook gráfico.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 solicitado.Select Publish to publish the runbook and then select Yes when prompted. Quando você publica um runbook, substitui a versão Publicada existente pela versão de rascunho.When you publish a runbook, you override any existing published version with the draft version. Nesse caso, você não tem nenhuma versão publicada porque você criou 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, consulte 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

Usando o runbook gráfico Interromper VMs do Azure V2, você criará dois webhooks para iniciar o runbook na Automação do Azure por meio de uma só solicitação 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 invocará o runbook em um limite de orçamento de 80% com o nome do grupo de recursos como parâmetro, permitindo que as VMs opcionais sejam interrompidas.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 invocará o runbook sem parâmetros (em 100%), o que interromperá todas as instâncias restantes da VM.Then, the second webhook invokes the runbook with no parameters (at 100%), which stops all remaining VM instances.

  1. Na página Runbooks do portal do Azure, selecione o runbook StopAzureV2Vm que exibe a área de visã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 webhook para abrir a área Criar um 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 Habilitado deve ser Sim.The Enabled property must be Yes. Você não precisa alterar o valor de Expira em.You don't need to change the Expires value. Para obter mais informações sobre as propriedades do Webhook, veja Propriedades do webhook.For more information about Webhook properties, see Webhook properties.
  5. Ao lado do valor de URL, selecione o ícone de cópia para copiar a URL do webhook.Next to the URL value, select the copy icon to copy the URL of the webhook.

    Importante

    Salve a URL do webhook chamada Opcional em um local seguro.Save the URL of the webhook named Optional in a safe place. Você usará a URL mais adiante neste tutorial.You'll use the URL later in this tutorial. Por motivos de segurança, depois de criar o webhook, você não poderá exibir nem recuperar a URL novamente.For security reasons, once you create the webhook, you cannot view or retrieve the URL again.

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

    Observação

    Se o runbook tiver parâmetros obrigatórios, não será possível criar o webhook, a menos que os valores sejam fornecidos.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 de parâmetro do webhook.Select OK to accept the webhook parameter values.
  9. Selecione Criar para criar o webhook.Select Create to create the webhook.
  10. Então siga as etapas acima para criar um segundo webhook chamado Concluir.Next, follow the steps above to create a second webhook named Complete.

    Importante

    Salve ambas as URLs do webhook para uso posterior 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, você não poderá exibir nem recuperar a URL novamente.For security reasons, once you create the webhook, you cannot view or retrieve the URL again.

Agora você deve ter dois webhooks configurados, cada um disponível usando as URLS salvas.You should now have two configured webhooks that are each available using the URLs that you saved.

Webhooks – opcional e completo

Agora você concluiu a configuração da Automação do Azure.You're now done with the Azure Automation setup. Você pode testar os webhooks com um simples teste Postman para validar que o webhook funciona.You can test the webhooks with a simple Postman test to validate that the webhook works. Em seguida, você deve criar o Aplicativo Lógico para orquestração.Next, you must create the Logic App for orchestration.

Criar um Aplicativo Lógico do Azure para orquestraçãoCreate an Azure Logic App for orchestration

Os Aplicativos Lógicos ajudam você a criar, agendar e automatizar processos como fluxos de trabalho, de modo que você possa integrar aplicativos, dados, sistemas e serviços entre 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. Nesse cenário, o Aplicativo Lógico que você criou fará um pouco mais do que apenas chamar o webhook de automação que você criou.In this scenario, the Logic App you create will do a little more than just call the automation webhook you created.

Orçamentos podem ser configurados para disparar uma notificação quando um limite especificado for atingido.Budgets can be set up to trigger a notification when a specified threshold is met. Você pode fornecer vários limites nos quais ser notificado e o Aplicativo Lógico demonstrará a capacidade de executar ações diferentes com base no limite 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, você vai configurar um cenário em que obterá duas notificações: a primeira ao atingir 80% do orçamento e a segunda ao 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. O aplicativo lógico será usado para desligar todas as VMs no grupo de recursos.The logic app will be used to shut down all VMs in the resource group. Primeiro, o limite Opcional será atingido em 80%, em seguida, o segundo limite será atingido, quando todas as VMs na assinatura serão desligadas.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.

Os aplicativos lógicos permitem que você forneça um esquema de amostra para o gatilho HTTP, mas exigem que você 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, você precisará analisar o conteúdo em uma etapa separada.Because the action group doesn't have custom headers for the webhook, you must parse out the payload in a separate step. Você usará a ação Analisar e fornecerá a ela um conteúdo de exemplo.You'll use the Parse action and provide it with a sample payload.

Criar o aplicativo lógicoCreate the logic app

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

  • Reconhece quando uma solicitação HTTP é recebidaRecognizes when an HTTP request is received
  • Analisar os dados JSON passados para determinar o valor limite que foi atingidoParse the passed in JSON data to determine the threshold value that has been reached
  • Use uma instrução condicional para verificar se o valor de limite atingiu 80% ou mais de um intervalo de orçamento, mas não é maior ou igual a 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 esse valor de limite for atingido, envie um HTTP POST usando o webhook chamado Opcional.If this threshold amount has been reached, send an HTTP POST using the webhook named Optional. Essa ação desligará as VMs no grupo "Opcional".This action will shut down the VMs in the "Optional" group.
  • Use uma instrução condicional para verificar se o valor de limite atingiu ou excedeu 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 o valor de limite tiver sido atingido, envie um HTTP POST usando o webhook chamado Concluir.If the threshold amount has been reached, send an HTTP POST using the webhook named Complete. Essa ação desligará todas as VMs restantes.This action will shut down all remaining VMs.

As etapas a seguir são necessários para criar o aplicativo lógico que executará as etapas 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 > Aplicativo Lógico.In the Azure portal, select Create a resource > Integration > Logic App.
    Azure – Selecionar o recurso de Aplicativo LógicoAzure - Select the Logic App resource
  2. Na área Criar aplicativo lógico, forneça os detalhes necessários para criar seu aplicativo lógico, selecione Fixar no painel e 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 um aplicativo lógicoAzure - Create a Logic App

Depois que o Azure implantar o aplicativo lógico, o Designer de Aplicativos Lógicos será aberto e mostrará uma área com um vídeo de introdução e os gatilhos normalmente usados.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 gatilhoAdd a trigger

Cada aplicativo lógico deve começar com um gatilho, que é disparado quando um evento específico ocorre ou quando uma condição específica é atendida.Every logic app must start with a trigger, which fires when a specific event happens or when a specific condition is met. Cada vez que o disparador é acionado, o mecanismo de Aplicativos Lógicos cria uma instância de aplicativo lógico 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. Ações são todas as etapas que ocorrem após o gatilho.Actions are all the steps that happen after the trigger.

  1. Em Modelos da área Designer de Aplicativos Lógicos, escolha Aplicativo Lógico em Branco.Under Templates of the Logic Apps Designer area, choose Blank Logic App.
  2. Adicione um gatilho inserindo "solicitação http" na caixa de pesquisa Designer de Aplicativos Lógicos para localizar e selecionar o gatilho chamado Solicitação – Quando uma solicitação HTTP é recebida.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 – Aplicativo lógico – Gatilho HTTPAzure - Logic app - Http trigger
  3. Selecione Nova etapa > Adicionar uma ação.Select New step > Add an action.
    Azure – Nova etapa – Adicionar uma açãoAzure - New step - Add an action
  4. Pesquise "analisar JSON" na caixa de pesquisa Designer de Aplicativos Lógicos 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 – Aplicativo lógico – Adicionar ação de análise de JSONAzure - Logic app - Add parse JSON action
  5. Insira "Carga" como o nome do Conteúdo da carga de Analisar JSON ou use a marca "Body" 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 Usar payload de amostra para gerar esquema na caixa Analisar JSON.Select the Use sample payload to generate schema option in the Parse JSON box.
    Azure – Aplicativo lógico – Usar dados JSON de exemplo para gerar o esquemaAzure - Logic app - Use sample JSON data to generate schema
  7. Cole a seguinte payload de amostra JSON 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á exibida como:The textbox will appear as:
    Azure – Aplicativo lógico – O conteúdo de JSON de exemploAzure - Logic app - The sample JSON payload
  8. Selecione Concluído.Select Done.

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

Use uma instrução condicional para verificar se o valor de limite atingiu 80% ou mais de um intervalo de orçamento, mas não é maior ou igual a 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 esse valor de limite for atingido, envie um HTTP POST usando o webhook chamado Opcional.If this threshold amount has been reached, send an HTTP POST using the webhook named Optional. Essa ação desligará as VMs no grupo Opcional.This action will shut down the VMs in the Optional group.

  1. Selecione Nova etapa > Adicionar uma condição.Select New step > Add a condition.
    Azure – Aplicativo lógico – 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 exibir uma lista de valores disponíveis.In the Condition box, select the textbox containing Choose a value to display a list of available values.
    Azure – Aplicativo lógico – Caixa de condiçãoAzure - Logic app - Condition box

  3. Selecione Expressão na parte superior da lista e insira a seguinte expressão no editor de expressão: float()Select Expression at the top of the list and enter the following expression in the expression editor: float()
    Azure – Aplicativo lógico – 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 preencher a expressão completa.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 suspensa 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, insira .8.In the Choose a value box of the condition, enter .8.
    A captura de tela mostra a caixa de diálogo Condição com os valores selecionados.Screenshot shows the Condition dialog box with values selected.

  8. Selecione Adicionar > Adicionar linha na caixa Condição para adicionar outra parte 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 insira a seguinte expressão no editor de expressão: 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 preencher a expressão completa.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 suspensa da Condição.Select is less than in the dropdown box of the Condition.

  14. Na caixa Escolher um valor da condição, insira 1.In the Choose a value box of the condition, enter 1.
    A captura de tela 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 true, selecione Adicionar uma ação.In the If true box, select Add an action. Você adicionará uma ação HTTP POST que desligará as VMs opcionais.You'll add an HTTP POST action that will shut down optional VMs.
    Azure – Aplicativo lógico – Adicionar uma açãoAzure - Logic app - Add an action

  16. Insira HTTP para pesquisar 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 – Aplicativo lógico – Adicionar ação HTTPAzure - Logic app - Add HTTP action

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

  18. Insira a URL para o webhook chamado Opcional que você criou neste tutorial como o valor do Uri.Enter the URL for the webhook named Optional that you created earlier in this tutorial as the Uri value.
    Azure – Aplicativo lógico – URI de ação HTTPAzure - Logic app - HTTP action URI

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

  20. Pesquise "enviar email" e selecione uma ação de enviar email de acordo com o serviço de email que você usa.Search for "send email" and select a send email action based on the email service you use.
    Azure – Aplicativo lógico – Enviar ação de emailAzure - Logic app - Send email action

    Para contas pessoais da Microsoft, selecione Outlook.com.For personal Microsoft accounts, select Outlook.com. Para as contas corporativas ou de estudante do Azure, selecione o Outlook do Office 365.For Azure work or school accounts, select Office 365 Outlook. Se você ainda não tiver uma conexão, será solicitado a entrar na sua conta de email.If you don't already have a connection, you're asked to sign in to your email account. Os Aplicativos Lógicos criam uma conexão à sua conta de email.Logic Apps creates a connection to your email account. Você precisará permitir que o aplicativo lógico acesse suas informações de email.You'll need to allow the Logic App to access your email information.
    Azure – Aplicativo lógico – Aviso de acessoAzure - Logic app - Access notice

  21. Adicione o texto Para, Assunto e Corpo para o email que notifica o destinatário de que as VMs opcionais foram sido desligadas.Add the To, Subject, and Body text for the email that notifies the recipient that the optional VMs have been shut down. Use o conteúdo dinâmico BudgetName e NotificationThresholdAmount para preencher os campos de assunto e corpo.Use the BudgetName and the NotificationThresholdAmount dynamic content to populate the subject and body fields. Azure – Aplicativo lógico – Detalhes do emailAzure - Logic app - Email details

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

Use uma instrução condicional para verificar se o valor de limite atingiu ou excedeu 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 o valor de limite tiver sido atingido, envie um HTTP POST usando o webhook chamado Concluir.If the threshold amount has been reached, send an HTTP POST using the webhook named Complete. Essa ação desligará todas as VMs restantes.This action will shut down all remaining VMs.

  1. Selecione Nova etapa > Adicionar uma Condição.Select New step > Add a Condition.
    A captura de tela mostra a caixa de diálogo Se verdadeiro com a opção Adicionar uma ação destacada.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 exibir uma lista de 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 insira a seguinte expressão no editor de expressão: 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 preencher a expressão completa.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 suspensa da Condição.Select is greater than or equal to in the dropdown box of the Condition.
  7. Na caixa Escolher um valor para a condição, insira 1.In the Choose a value box for the condition, enter 1.
    Azure – Aplicativo lógico – Definir valor da condiçãoAzure - Logic app - Set condition value
  8. Na caixa Se true, selecione Adicionar uma ação.In the If true box, select Add an action. Você adicionará uma ação HTTP POST que desligará todas as VMs restantes.You'll add an HTTP POST action that will shut down all the remaining VMs.
    A captura de tela mostra a caixa de diálogo Se verdadeiro com a qual você 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. Insira HTTP para pesquisar 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 Post como o valor do Método.Select Post as the Method value.
  11. Insira a URL para o webhook chamado Completo que você criou neste tutorial como o valor do Uri.Enter the URL for the webhook named Complete that you created earlier in this tutorial as the Uri value.
    A captura de tela mostra a caixa de diálogo HTTP em que você pode inserir o valor da 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 true.Select Add an action in the If true box. Você adicionará uma ação de email que enviará um email notificando o destinatário de que as VMs restantes foram desligadas.You'll add an email action that will send an email notifying the recipient that the remaining VMs have been shut down.
  13. Pesquise "enviar email" e selecione uma ação de enviar email de acordo com o serviço de email que você usa.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 para o email que notifica o destinatário de que as VMs opcionais foram sido desligadas.Add the To, Subject, and Body text for the email that notifies the recipient that the optional VMs have been shut down. Use o conteúdo dinâmico BudgetName e NotificationThresholdAmount para preencher os campos de assunto e corpo.Use the BudgetName and the NotificationThresholdAmount dynamic content to populate the subject and body fields.
    Azure – Aplicativo lógico – Enviar detalhes do emailAzure - Logic app - Send email details
  15. Selecione Salvar na parte superior da área Designer de Aplicativo Lógico.Select Save at the top of the Logic App Designer area.

Resumo do Aplicativo LógicoLogic App summary

Esta será a aparência do seu Aplicativo Lógico quando você terminar.Here's what your Logic App looks like once you're done. No mais básico dos cenários em que você não precisa de nenhuma orquestração com base no limite, você pode chamar diretamente o script de automação do Monitor e ignorar a etapa de Aplicativo Lógico.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 – Aplicativo lógico – Exibição completa

Quando você salvou o aplicativo lógico, foi gerada uma URL que você poderá chamar.When you saved your logic app, a URL was generated that you'll be able to call. Você usará essa URL na próxima seção deste tutorial.You'll use this URL in the next section of this tutorial.

Criar um grupo de ação do Azure MonitorCreate an Azure Monitor Action Group

Um grupo de ação é uma coleção de preferências de notificação que você define.An action group is a collection of notification preferences that you define. Quando um alerta é disparado, um grupo de ação específico pode receber o alerta sendo notificado.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 oferece 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 usar dados de várias fontes, incluindo métricas e logs.An alert can use data from multiple sources, including metrics and logs.

Os grupos de ação são o único ponto de extremidade que você integrará ao seu orçamento.Action groups are the only endpoint that you'll integrate with your budget. Você pode configurar notificações em vários canais, mas, para este cenário, você se concentrará no aplicativo lógico criado 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, você apontará o cursor para o aplicativo lógico criado 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 você ainda não tiver se conectado ao portal do Azure, entre nele 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, em seguida, selecione Gerenciar ações.Select Alerts then select Manage actions.
  3. Selecione Adicionar um grupo de ações na área Grupos de ações.Select Add an action group from the Action groups area.
  4. Adicione e verifique os itens a seguir:Add and verify the following items:
    • Nome do grupo de açõesAction group name
    • Nome curtoShort name
    • SubscriptionSubscription
    • Resource groupResource group
      Azure – Aplicativo lógico – 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 de Budget-BudgetLA.Name the action Budget-BudgetLA. No painel Aplicativo Lógico, selecione a Assinatura e o Grupo de recursos.In the Logic App pane, select the Subscription and the Resource group. Em seguida, selecione o Aplicativo lógico que você criou anteriormente neste tutorial.Then, select the Logic app that you created earlier in this tutorial.
  6. Selecione OK para definir o aplicativo lógico.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.

Você concluiu todos os componentes de suporte necessários para orquestrar seu orçamento de maneira eficaz.You're done with all the supporting components needed to effectively orchestrate your budget. Agora, tudo o que você precisa fazer é criar o orçamento e configurá-lo para usar o grupo de ação que você 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

É possível criar um orçamento no portal do Azure usando o recurso de orçamento no Gerenciamento de Custos.You can create a budget in the Azure portal using the Budget feature in Cost Management. Ou então, é possível criar um orçamento usando APIs REST, cmdlets do PowerShell ou usar a CLI.Or, you can create a budget using REST APIs, PowerShell cmdlets, or use the CLI. O procedimento a seguir usa a API REST.The following procedure uses the REST API. Antes de chamar a API REST, você precisará ter um token de autorização.Before calling the REST API, you'll need an authorization token. Para criar um token de autorização, você pode usar o projeto ARMClient.To create an authorization token, you can use the ARMClient project. O ARMClient permite que você se autentique com o 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é o 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. Depois que o build for bem-sucedido, 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 um prompt de comando e navegue até a pasta \bin\debug da raiz do projeto.Open a command prompt and navigate to the \bin\debug folder from the project root.

  6. Para entrar e se autenticar, insira o seguinte comando no prompt de comando:To sign in and authenticate, enter the following command at the command prompt:
    ARMClient login prod

  7. Copie o guid de assinatura da saída.Copy the subscription guid from the output.

  8. Para copiar um token de autorização para a área de transferência, insira o seguinte comando no prompt de comando e use a ID de assinatura copiada na etapa anterior: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>

    Depois de concluir a etapa acima, você verá:Once you have completed the step above, you'll see:
    Token copiado com êxito para a área de transferência.Token copied to clipboard successfully.

  9. Salve o token a ser usado para as etapas na próxima seçã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, você vai configurar o Postman para criar um orçamento chamando as APIs REST de Consumo do Azure.Next, you'll configure Postman to create a budget by calling the Azure Consumption REST APIs. Postman é um ambiente de Desenvolvimento de API.Postman is an API Development environment. Você importará os arquivos de coleção e ambiente para o Postman.You'll import environment and collection files into Postman. A coleção contém definições agrupadas de solicitações 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 arquivo de ambiente contém variáveis que são usadas pela coleção.The environment file contains variables that are used by the collection.

  1. Baixe 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 uma nova solicitação.In Postman, create a new request.
    Postman – Criar uma nova solicitação

  3. Salve a nova solicitação como uma coleção, de modo que a nova solicitação não tenha nada.Save the new request as a collection, so that the new request has nothing on it.
    Postman – Salvar a nova solicitação

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

  5. Modificar a URL a seguir substituindo {subscriptionId} pela ID da Assinatura que você usou na seçã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 a URL para incluir "SampleBudget" como o valor para {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 a guia 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 criado usando o ArmClient no final da última seção.Set the Value to the token that was created using the ArmClient at the end of the last section.

  9. Selecione a guia Corpo no Postman.Select Body tab within Postman.

  10. Selecione a opção de botão bruto.Select the raw button option.

  11. Na caixa de texto, cole a definição de orçamento de exemplo abaixo. No entanto, você precisará substituir os parâmetros subscriptionID, resourcegroupname e actiongroupname pela ID da assinatura, por um nome exclusivo para o grupo de recursos e pelo nome do grupo de ações criado na URL e no corpo da solicitação: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. Pressione Enviar para enviar a solicitação.Press Send to send the request.

Agora você tem todas as partes de que precisa chamar a API de orçamentos.You now have all the pieces you need to call the budgets API. A referência de API de orçamentos traz detalhes adicionais sobre as solicitações específicas, incluindo:The budgets API reference has additional details on the specific requests, including:

  • budgetName – há suporte para vários orçamentos.budgetName - Multiple budgets are supported. Os nomes de orçamento devem ser exclusivos.Budget names must be unique.
  • categoria – deve ser Custo ou Uso.category - Must be either Cost or Usage. A API dá suporte a orçamentos de uso e custo.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 – Filtros permitem que você restrinja o orçamento para um conjunto específico de recursos no escopo 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 de um orçamento no nível de assinatura.For example, a filter could be a collection of resource groups for a subscription level budget.
  • notificações – Determina os limites e os detalhes da notificação.notifications – Determines the notification details and thresholds. Você pode configurar vários limites e fornecer um endereço de email ou um grupo de ações para receber uma notificação.You can set up multiple thresholds and provide an email address or an action group to receive a notification.

ResumoSummary

Usando este tutorial, você aprendeu a:By using this tutorial, you learned:

  • Como criar um Runbook de Automação do Azure para interromper VMs.How to create an Azure Automation Runbook to stop VMs.
  • Como criar um aplicativo lógico do Azure disparado com base nos valores de limite de orçamento e chamar o runbook relacionado 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 que foi configurado para disparar o Aplicativo Lógico do Azure quando o limite de orçamento é 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 limites desejados e conecte-lo ao grupo de ação.How to create the Azure budget with the desired thresholds and wire it to the action group.

Agora você tem um orçamento totalmente funcional para a sua assinatura que desligará suas VMs quando você atingir seus limites 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.

Próximas etapasNext steps