Gerencie custos com orçamentos
O controlo de custos é um elemento essencial para maximizar o valor do seu investimento na 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. As APIs de gerenciamento de custos fornecem um conjunto de APIs para dar suporte a cada um desses cenários. As APIs fornecem detalhes de utilização e permitem que veja os custos ao nível da instância granular.
Os orçamentos são normalmente utilizados como parte do controlo de custos. Os orçamentos podem ser delimitados no 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. Além de usar a API de orçamentos para enviar notificações por email quando um limite de orçamento é atingido, você também pode usar grupos de ação do Azure Monitor. Os grupos de ação desencadeiam um conjunto coordenado de ações em resposta a um evento orçamental.
Um cenário de orçamento típico para um cliente que executa uma carga de trabalho não crítica é gerenciar os gastos em relação a um orçamento e obter custos previsíveis ao revisar a fatura mensal. Este cenário requer uma orquestração baseada nos custos dos recursos que fazem parte do ambiente do Azure. Nesse cenário, um orçamento mensal de US$ 1.000 para a assinatura é definido. Além disso, são definidos limiares de notificação para acionar algumas orquestrações. Este cenário começa com um limite de custo de 80%, que interrompe todas as máquinas virtuais (VM) no grupo de recursos Opcional. Em seguida, no limite de custo de 100%, todas as instâncias de VM são interrompidas.
Para configurar esse cenário, conclua as seguintes ações usando as etapas fornecidas em cada seção deste tutorial.
As ações incluídas neste tutorial permitem-lhe:
- Criar um Runbook de Automatização do Azure para encerrar as VMs com 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.
- Crie um Grupo de Ação do Azure Monitor configurado para acionar o Aplicativo Lógico do Azure quando o limite de orçamento for atingido.
- Crie o orçamento com os limites desejados e conecte-o ao grupo de ações.
Criar um Runbook de Automatização do Azure
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. Como parte desse cenário, você cria um runbook de Automação do Azure que interrompe VMs. Use o runbook gráfico Stop Azure V2 VMs da galeria de Automação do Azure para criar esse cenário. 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.
Nota
Você pode criar um orçamento no Gerenciamento de Custos do Azure e vinculá-lo a um runbook de Automação do Azure para interromper automaticamente os recursos quando um limite especificado for atingido.
Crie uma conta de Automatização do Azure
- Inicie sessão no portal do Azure com as suas credenciais da conta do Azure.
- Selecione o botão Criar um recurso, localizado no canto superior esquerdo do Azure.
- Selecione Ferramentas de Gestão>Automatização.
Nota
Se ainda não tiver uma conta do Azure, poderá criar uma conta gratuita.
- Introduza as suas informações de conta. 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.
- Quando terminar, selecione Criar para iniciar a implementação da conta de Automatização.
Importar o runbook Encerrar VMs do Azure V2
Com um runbook de Automatização do Azure, importe o runbook gráfico Encerrar VMs do Azure V2 da galeria.
- Inicie sessão no portal do Azure com as suas credenciais da conta do Azure.
- Abra a Conta de automatização ao selecionar Todos os serviços>Contas de Automatização. Em seguida, selecione a Conta de Automatização.
- Selecione Galeria de runbooks na secção Automatização de Processos.
- Defina a Origem de Galeria como Centro de Scripts e selecione OK.
- Localize e selecione o item da galeria Encerrar as VMs do Azure V2 no portal do Azure.
- Selecione Importar para apresentar a área Importar e selecione OK. A área de visão geral do runbook é exibida.
- Quando o runbook concluir o processo de importação, selecione Editar para exibir o editor de runbook gráfico e a opção de publicação.
- Selecione Publicar para publicar o runbook e, em seguida, Sim quando lhe for pedido. Quando publica um runbook, substitui qualquer versão publicada existente pela versão de rascunho. Nesse caso, você não tem nenhuma versão publicada porque criou o runbook. Para obter mais informações sobre como publicar um runbook, veja Criar um runbook gráfico.
Criar webhooks para o 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. 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. Em seguida, o segundo webhook invoca o runbook sem qualquer parâmetro (a 100%), o que encerra todas as restantes instâncias de VM.
- Na página Runbooks no portal do Azure, selecione o runbook StopAzureV2Vm para apresentar a área de descrição geral do runbook.
- Selecione Webhook na parte superior da página para abrir a área Adicionar Webhook.
- Selecione Criar novo webhook para abrir a área Criar um novo webhook.
- Defina o Nome do Webhook como Opcional. A propriedade Ativada deve ser Sim. Não tem de alterar o valor Expira a. Para obter mais informações sobre as propriedades do Webhook, veja Webhook properties (Propriedades de webhook).
- Junto do valor do URL, selecione o ícone de cópia para copiar o URL do webhook.
Importante
Guarde o URL do webhook chamado Opcional num local seguro. Utilizará este URL mais adiante neste tutorial. Por motivos de segurança, depois de criar o webhook, não poderá ver nem obter o URL novamente.
- Selecione OK para criar o novo webhook.
- Selecione Configurar parâmetros e definições de execução para ver os valores dos parâmetros do 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.
- Selecione OK para aceitar os valores dos parâmetros do webhook.
- Selecione Criar para criar o webhook.
- Em seguida, siga as etapas anteriores para criar um segundo webhook chamado Complete.
Importante
Lembre-se de guardar os URLs dos webhooks para serem utilizados posteriormente neste tutorial. Por motivos de segurança, depois de criar o webhook, não poderá ver nem obter o URL novamente.
Agora, deverá ter dois webhooks configurados, que poderá aceder através dos URLs guardados anteriormente.
Você concluiu a configuração da Automação do Azure. Você pode testar os webhooks com um teste de API simples para validar se o webhook funciona. Algumas maneiras populares de consultar a API são:
- Visual Studio
- Insónia
- Adriano
- Invoke-RestMethod do PowerShell
- Cachos
Em seguida, tem de criar a Aplicação Lógica para a orquestração.
Criar uma Aplicação Lógica do Azure para a orquestração
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. Nesse cenário, o Aplicativo Lógico que você cria faz um pouco mais do que apenas chamar o webhook de automação que você criou.
Os orçamentos podem ser configurados para acionar uma notificação quando é atingido um limiar especificado. Você pode fornecer vários limites para ser notificado e o Aplicativo Lógico demonstra a capacidade de executar diferentes ações com base no limite atingido. Neste exemplo, você configura um cenário em que recebe algumas notificações. A primeira notificação refere-se a 80% do orçamento. A segunda notificação é quando 100% do orçamento é atingido. O aplicativo lógico é usado para desligar todas as VMs no grupo de recursos. Primeiro, o limite opcional é atingido em 80%, em seguida, o segundo limite é atingido onde todas as VMs na assinatura são desligadas.
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. Como o grupo de ações não tem cabeçalhos personalizados para o webhook, tem de analisar a carga num passo separado. Use a ação Analisar e forneça uma amostra de carga útil.
Criar a aplicação lógica
O aplicativo lógico executa várias ações. A lista a seguir fornece um conjunto de ações de alto nível que o aplicativo lógico executa:
- Reconhece quando é recebido um pedido HTTP
- Analise os dados JSON passados para determinar o valor limite que é atingido
- Use uma declaração condicional para verificar se o valor do limite atingiu 80% ou mais do intervalo de orçamento, mas não maior ou igual a 100%.
- Se esse valor limite for atingido, envie um HTTP POST usando o webhook chamado Opcional. Esta ação desliga as VMs no grupo "Opcional".
- Use uma instrução condicional para verificar se o valor limite atingiu ou excedeu 100% do valor do orçamento.
- Se o valor limite for atingido, envie um HTTP POST usando o webhook chamado Complete. Essa ação desliga todas as VMs restantes.
As etapas a seguir são necessárias para criar o aplicativo lógico que executa as etapas anteriores:
- No portal do Azure, selecione Criar um recurso>Integração>Aplicação Lógica.
- 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.
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.
Adicionar um acionador
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. 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. As ações são todos os passos que ocorrem após o acionador.
- Em Modelos, na área Estruturador de Aplicações Lógicas, escolha Aplicação Lógica em Branco.
- 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.
- Selecione Novo passo>Adicionar uma ação.
- 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.
- Insira “Payload” como o nome do Conteúdo do payload Analisar JSON ou utilize a etiqueta “Corpo” do conteúdo dinâmico.
- Selecione a opção Utilizar payload de exemplo para gerar esquema na caixa Analisar JSON.
- 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"}}
A caixa de texto aparece como:
- Selecionar Concluído.
Adicionar a primeira ação condicional
Use uma declaração condicional para verificar se o valor do limite atingiu 80% ou mais do intervalo de orçamento, mas não maior ou igual a 100%. Se esse valor limite for atingido, envie um HTTP POST usando o webhook chamado Opcional. Esta ação desliga as VMs no grupo Opcional .
Selecione Novo passo>Adicionar uma condição.
Na caixa Condição, selecione a caixa de texto que contém
Choose a value
para apresentar uma lista dos valores disponíveis.
Selecione Expressão na parte superior da lista e introduza a seguinte expressão no editor de expressões:
float()
Selecione Conteúdo dinâmico, coloque o cursor dentro dos parênteses () e selecione NotificationThresholdAmount na lista para povoar toda a expressão. A expressão é:
float(body('Parse_JSON')?['data']?['NotificationThresholdAmount'])
Selecione OK para definir a expressão.
Selecione é maior ou igual a na caixa pendente da Condição.
Na caixa Escolher um valor da condição, introduza
.8
.
Selecione Adicionar>linha dentro da caixa Condição para adicionar outra parte da condição.
Na caixa Condição, selecione a caixa de texto que contém
Choose a value
.Selecione Expressão na parte superior da lista e introduza a seguinte expressão no editor de expressões:
float()
Selecione Conteúdo dinâmico, coloque o cursor dentro dos parênteses () e selecione NotificationThresholdAmount na lista para povoar toda a expressão.
Selecione OK para definir a expressão.
Selecione é menor que na caixa pendente da Condição.
Na caixa Escolher um valor da condição, introduza
1
.
Na caixa Se verdadeiro, selecione Adicionar uma ação. Você adiciona uma ação HTTP POST que desliga VMs opcionais.
Introduza HTTP para procurar a ação HTTP e selecione a ação HTTP – HTTP.
Selecione Publicar como valor do Método.
Introduza o URL do webhook chamado Opcional que criou anteriormente neste tutorial como o valor do Url.
Selecione Adicionar uma ação na caixa Se verdadeiro. Você adiciona uma ação de email que envia um email notificando o destinatário de que as VMs opcionais foram encerradas.
Procure “enviar e-mail e selecione uma ação enviar e-mail com base no serviço de e-mail que utiliza.
Par contas Microsoft pessoais, selecione Outlook.com. Para contas escolares ou profissionais do Azure, selecione Office 365 Outlook (Outlook do Office 365). Se ainda não tiver uma ligação, ser-lhe-á pedido para iniciar sessão na sua conta de e-mail. O Logic Apps cria uma ligação para a sua conta de e-mail. Você precisa permitir que o Aplicativo Lógico acesse suas informações de e-mail.
Adicione o texto Para, Assunto e Corpo do e-mail que notifica o destinatário de que as VMs opcionais foram encerradas. Utilize o conteúdo dinâmico BudgetName e NotificationThresholdAmount para povoar os campos do assunto e do corpo.
Adicionar a segunda ação condicional
Use uma instrução condicional para verificar se o valor limite atingiu ou excedeu 100% do valor do orçamento. Se o valor limite for atingido, envie um HTTP POST usando o webhook chamado Complete. Essa ação desliga todas as VMs restantes.
- Selecione Novo passo>Adicionar uma Condição.
- Na caixa Condição, selecione a caixa de texto que contém
Choose a value
para apresentar uma lista dos valores disponíveis. - Selecione Expressão na parte superior da lista e introduza a seguinte expressão no editor de expressões:
float()
- Selecione Conteúdo dinâmico, coloque o cursor dentro dos parênteses () e selecione NotificationThresholdAmount na lista para povoar toda a expressão.
A expressão assemelha-se:
float(body('Parse_JSON')?['data']?['NotificationThresholdAmount'])
- Selecione OK para definir a expressão.
- Selecione é maior ou igual a na caixa pendente da Condição.
- Na caixa Escolher um valor da condição, introduza
1
.
- Na caixa Se verdadeiro, selecione Adicionar uma ação. Você adiciona uma ação HTTP POST que desliga todas as VMs restantes.
- Introduza HTTP para procurar a ação HTTP e selecione a ação HTTP – HTTP.
- Selecione Publicar como valor do Método.
- Introduza o URL do webhook chamado Concluído que criou anteriormente neste tutorial como o valor do Url.
- Selecione Adicionar uma ação na caixa Se verdadeiro. Você adiciona uma ação de email que envia um email notificando o destinatário de que as VMs restantes foram encerradas.
- Procure “enviar e-mail e selecione uma ação enviar e-mail com base no serviço de e-mail que utiliza.
- Adicione o texto Para, Assunto e Corpo do e-mail que notifica o destinatário de que as VMs opcionais foram encerradas. Utilize o conteúdo dinâmico BudgetName e NotificationThresholdAmount para povoar os campos do assunto e do corpo.
- Selecione Guardar, na parte superior da área Estruturador de Aplicações Lógicas.
Resumo da Aplicação Lógica
Eis o aspeto da sua Aplicação Lógica quando terminar. 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.
Quando você salvou seu aplicativo lógico, foi gerado um URL que você pode chamar. Use esse URL na próxima seção deste tutorial.
Criar um Grupo de Ações do Azure Monitor
Um grupo de ações é uma coleção de preferências de notificação definida por si. Quando é acionado um alerta, um grupo de ações específico pode receber o alerta através de notificação. Um alerta do Azure gera proativamente uma notificação com base em condições específicas e fornece a oportunidade de agir. Um alerta pode utilizar dados de várias origens, incluindo métricas e registos.
Os grupos de ação são o único ponto de extremidade que você integra ao seu orçamento. Você pode configurar notificações em muitos canais, mas para este cenário você se concentra no Aplicativo Lógico criado anteriormente neste tutorial.
Criar um grupo de ações no Azure Monitor
Ao criar o grupo de ações, você aponta para o Aplicativo Lógico criado anteriormente neste tutorial.
- Se ainda não tiver iniciado sessão no portal do Azure, inicie sessão e selecione Monitor de Todos os serviços>.
- Selecione Alertas e, em seguida, selecione Gerir ações.
- Selecione Adicionar um grupo de ações na área Grupo de ações.
- Adicione e verifique os seguintes itens:
- Nome do grupo de ações
- Nome abreviado
- Subscrição
- Grupo de recursos
- No painel Adicionar grupo de ações, adicione uma ação LogicApp. Dê à ação o nome Budget-BudgetLA. No painel Aplicação Lógica, selecione a Subscrição e o Grupo de recursos. Em seguida, selecione a Aplicação lógica que criou anteriormente neste tutorial.
- Selecione OK para definir a Aplicação Lógica. Em seguida, selecione OK no painel Adicionar grupo de ações para criar o grupo de ações.
Você concluiu todos os componentes de suporte necessários para orquestrar efetivamente seu orçamento. Agora, só precisa de criar o orçamento e configurá-lo para utilizar o grupo de ações que criou.
Criar o orçamento
Pode criar um orçamento no portal do Azure com a funcionalidade Orçamento no Cost Management. Em alternativa, pode criar um orçamento com as APIs REST, os cmdlets do PowerShell ou utilizar a CLI. O procedimento a seguir utiliza a API REST. Antes de chamar a API REST, você precisa de um token de autorização. Para criar um token de autorização, pode utilizar o projeto ARMClient. O ARMClient permite que se autentique no Azure Resource Manager e obtenha um token para chamar as APIs.
Criar um token de autenticação
Navegue até ao projeto ARMClient no GitHub.
Clone o repositório para obter uma cópia local.
Abra o projeto no Visual Studio e compile-o.
Após a compilação ter sido bem-sucedida, o executável deverá estar na pasta \bin\debug.
Execute o ARMClient. Abra uma linha de comandos e navegue até à pasta \bin\debug na raiz do projeto.
Para iniciar sessão e autenticar, introduza o seguinte comando na linha de comandos:
ARMClient login prod
Copie o guid de subscrição da saída.
Para copiar um token de autorização para a área de transferência, digite o seguinte comando no prompt de comando, mas certifique-se de usar a ID de assinatura copiada da etapa anterior:
ARMClient token <subscription GUID from previous step>
Ao concluir a etapa anterior, você verá:
Token copiado para a área de transferência com êxito.Guarde o token para utilizar nos passos na próxima secção deste tutorial.
Criar o Orçamento
Em seguida, crie um orçamento chamando as APIs REST de Consumo do Azure. Você precisa de uma maneira de interagir com APIs. Algumas maneiras populares de consultar a API são:
- Visual Studio
- Insónia
- Adriano
- Invoke-RestMethod do PowerShell
- Cachos
Você precisa importar arquivos de ambiente e de coleção para seu cliente de API. A coleção contém definições agrupadas de pedidos HTTP que chamam as APIs REST de Consumo do Azure. O ficheiro de ambiente contém variáveis que são utilizadas pela coleção.
No seu cliente de API, crie uma nova solicitação.
Salve o novo pedido para que ele não tenha nada nele.
Altere o pedido de uma ação
Get
para umaPut
.Modifique o URL a seguir ao substituir
{subscriptionId}
pelo ID da Subscrição que utilizou na secção anterior deste 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-31
Selecione Cabeçalhos no seu cliente de API.
Adicione uma nova Chave chamada “Autorização”.
Defina o Valor para o token que foi criado com o ArmClient no final da última secção.
Selecione Corpo no seu cliente de API.
Selecione a opção raw no seu cliente de API.
Na área de texto em seu cliente de API, cole a seguinte definição de orçamento de exemplo. Você deve substituir os parâmetros ,
resourcegroupname
e peloactiongroupname
ID dasubscriptionID
assinatura, um nome exclusivo para o grupo de recursos e o nome do grupo de ações criado na URL e no corpo da solicitação:{ "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}" ] } } } }
Envie o pedido.
Agora tem todas as partes necessárias para chamar a API de orçamentos. A referência da API de orçamentos tem mais detalhes sobre as solicitações específicas, incluindo:
- budgetname – suporta vários orçamentos. Os nomes dos orçamentos têm de ser exclusivos.
- categoria – tem de ser Custo ou Utilização. A API suporta orçamentos de custos e de utilização.
- timeGrain – um orçamento mensal, trimestral ou anual. O valor é redefinido no final do período.
- filtros – os filtros permitem restringir o orçamento a um conjunto específico de recursos dentro do âmbito selecionado. Por exemplo, um filtro pode ser uma coleção de grupos de recursos para um orçamento de nível de subscrição.
- notificações – determina os detalhes e os limiares de notificação. 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.
Resumo
Neste tutorial, ficou a saber:
- Como criar um Runbook de Automatização do Azure para encerrar 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.
- 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.
- Como criar o orçamento com os limites desejados e conectá-lo ao grupo de ação.
Agora você tem um orçamento totalmente funcional para sua assinatura que desliga suas VMs quando você atinge os limites de orçamento configurados.
Próximos passos
- Para obter mais informações sobre cenários de faturação do Azure, veja Cenários de automatização de faturação e gestão de custos.