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 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.
Um cenário de orçamentos comum para um cliente que executa uma carga de trabalho não crítica pode ocorrer quando ele deseja gerenciar em relação a um orçamento e também chegar a um custo previsível ao examinar 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. Esse cenário começa com um limite de custo de 80%, que interromperá 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 este cenário, realizará as seguintes ações através dos passos fornecidos em cada secçã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 deste cenário, vai criar um runbook de Automatização do Azure que será utilizado para encerrar as VMs. Você usará o runbook gráfico Parar VMs do Azure V2 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.
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. Será apresentada a área de descrição geral do runbook.
- 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.
- 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. Neste caso, ainda não tem uma versão publicada porque acabou de criar 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 os passos acima para criar um segundo webhook chamado Completo.
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.
Agora, concluiu a configuração da Automatização do Azure. Pode testar os webhooks com um teste simples do Postman que valida o funcionamento do webhook. 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. 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.
Os orçamentos podem ser configurados para acionar uma notificação quando é atingido um limiar especificado. 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. 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. A aplicação lógica será utilizada para encerrar todas as VMs no grupo de recursos. 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.
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. Vai utilizar a ação Analisar e incluir um payload de exemplo.
Criar a aplicação lógica
A aplicação lógica executará várias ações. A lista a seguir fornece um conjunto de ações de alto nível que a aplicação lógica executará:
- Reconhece quando é recebido um pedido HTTP
- Analisa os dados transmitidos no JSON para determinar o valor de limiar que foi atingido
- 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%.
- Se este valor de limiar tiver sido atingido, envie um HTTP POST com o webhook denominado Opcional. Esta ação encerrará as VMs no grupo “Opcional”.
- Utilize uma instrução condicional para verificar se o valor do limiar atingiu ou excedeu os 100% do valor do orçamento.
- Se este valor de limiar tiver sido atingido, envie um HTTP POST com o webhook denominado Concluído. Esta ação encerrará todas as restantes VMs.
Os passos a seguir são necessários para criar a aplicação lógica que executará os passos acima:
- 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 de Aplicações Lógicas para localizar e selecionar a açãoOperaçõ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 aparecerá como:
- Selecionar Concluído.
Adicionar a primeira ação condicional
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%. Se este valor de limiar tiver sido atingido, envie um HTTP POST com o webhook denominado Opcional. Esta ação encerrará 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 será:
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. Vai adicionar uma ação HTTP POST que encerrará as 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. 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.
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, é-lhe pedido que inicie sessão na sua conta de e-mail. O Logic Apps cria uma ligação para a sua conta de e-mail. Terá de permitir que a Aplicação Lógica aceda às suas informações de e-mail.
Adicione o texto Para, Assunto e Corpo ao 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
Utilize uma instrução condicional para verificar se o valor do limiar atingiu ou excedeu os 100% do valor do orçamento. Se este valor de limiar tiver sido atingido, envie um HTTP POST com o webhook denominado Concluído. Esta ação encerrará todas as restantes VMs.
- 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 será semelhante a:
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. Vai adicionar uma ação HTTP POST que encerrará 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. 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.
- 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 ao 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
Quando terminar, a aplicação lógica terá o aspeto deste exemplo. 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 guardou a aplicação lógica, foi gerado um URL que poderá chamar. Vai utilizar este URL na secção seguinte 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ções são o único ponto final que integrará no orçamento. 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.
Criar um grupo de ações no Azure Monitor
Ao criar o grupo de ações, vai apontar para aplicação lógica que criou anteriormente neste tutorial.
- Se ainda não tiver iniciado sessão no portal do Azure, inicie sessão e selecione Todos os serviços>Monitor.
- 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.
Concluiu todos os componentes de suporte necessários para orquestrar o orçamento com eficácia. 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, precisará 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 o ID de assinatura copiado da etapa acima:
ARMClient token <subscription GUID from previous step>
Após ter concluído o passo acima, 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, vai configurar o Postman para criar um orçamento ao chamar as APIs REST de Consumo do Azure. O Postman é um Ambiente de desenvolvimento de APIs. Vai importar ficheiros de ambiente e de coleção para o Postman. 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.
Transfira e abra o Cliente REST do Postman para executar as APIs REST.
No Postman, crie um novo pedido.
Guarde o novo pedido como uma coleção, para que o novo pedido 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 o separador Cabeçalhos no Postman.
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 o separador Corpo no Postman.
Selecione opção de botão não processado.
Na caixa de texto, cole na definição de orçamento do exemplo abaixo, mas tem de substituir os parâmetros
subscriptionID
,resourcegroupname
eactiongroupname
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:{ "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}" ] } } } }
Prima Enviar para enviar 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 tem um orçamento totalmente funcional para a sua subscrição que encerrará as VMs quando forem atingidos os limiares 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.
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários