Redução de custos com VMs (Parte 1)

Fala pessoal, tudo bem com vocês?
Nessa época de crise todos procuram formas de reduzir custos, então nesse artigo vou dar algumas dicas de como reduzir os custos da sua empresa/cliente no Azure, nessa primeira parte vamos falar sobre as máquinas virtuais e a maneiras de reduzir os custos de computação:

1 – Azure Advisor:
Azure advisor é um assistente que analisa a telemetria de uso e te faz recomendações de custo, segurança, alta disponibilidade, excelência operacional e desempenho. Ele informa as melhores práticas para otimizar suas cargas de trabalho.
Você precisa habilita-lo previamente e após uma coleta de aproximadamente 30 dias as recomendações já estarão disponíveis, conforme imagem abaixo:

No caso acima, como as máquinas têm processamento 24h por dia, ele recomenda que eu adquira Instancias Reservadas (RI) onde eu teria uma economia de aproximadamente de 9 mil dólares.

Até o momento deste post a serviço Azure Advisor não gera nenhum tipo de cobrança:

Além das instancias reservadas, o Advisor pode te recomendar desligar o servidor em determinados horários e vamos agora no próximo item mostrar como fazer isso de forma automatizada:

2 – Desligar Máquina Virtual Manualmente
Para muitas empresas, o horário de funcionamento é apenas o horário comercial, nesses casos recomenda-se que você desligue os recursos que não forem utilizados. Porém, desligar os recursos não é apenas dar um shutdown na máquina virtual, fazendo isso o recurso ainda está reservado para você, para parar o consumo e consequentemente o custo por hora, você precisa desalocar a máquina virtual.
Há várias maneiras de fazer isso, a mais fácil delas é pelo próprio portal do azure, abrir a máquina virtual e clicar no item (PARAR), conforma imagem abaixo:

É possível ver também que há uma recomendação de desligar a máquina virtual

Depois de parar a máquina virtual, automaticamente o Azure vai parar com a cobrança do recurso computacional, mas devemos lembrar que você ainda pagará outros itens como Armazenamento, ips fixos etc. (são custos muito menores), abaixo segue um exemplo de redução de custo:

Primeiro item é uma máquina comum ligada 24h por dia, com um valor de US$ 366,51, o segundo item é a reserva da instancia por 1 ano, o valor cai para U$257,46 e a terceira opção é a maquina funcionando de segunda a sexta em horário comercial 12h por dia com o menor valor entre os três US$ 132,58.

Esse calculo foi feito pela calculadora do azure, que pode ser conferida em: https://azure.microsoft.com/pt-br/pricing/

3 – Desligar Máquina Virtual por agendamento
No item anterior, mostramos como desligar a maquina de forma manual, mas manter esse processo pode ser inviável, todo o dia ter que manualmente desligar e ligar uma maquina virtual, para resolver isso, vamos mostrar abaixo uma forma de criar um agendamento para executar um script que faça isso:

Desligar a máquina virtual:
Antigamente era necessário utilizar um script para desligar a maquina virtual, hoje já existe uma opção nativa dentro da opções da VM, para acessar, basta abrir o item “Desligamento automático”, dentro de “Operações”, no menu de navegação que fica do lado esquerdo, conforme imagem abaixo:

As opções obrigatórias a serem preenchidas são horário do desligamento, no meu caso coloquei as 20:00 e o fuso horário (atenção com esse item, caso selecione um fuso horário correto para não ter complicações e divergências com o horário local).
Você também pode adicionar um email para que o azure avise do desligamento com 30 minutos de antecedência:

Todos os dias as 20:00 o servidor será desligado! Caso você precise de um horário mais customizado, como desligar somente sábado e domingo, você precisará fazer isso por script, que vou explicar isso no próximo item:

Ligar a máquina virtual:
Já mostramos como desligar a máquina virtual, agora vamos mostrar como ligar a máquina virtual, infelizmente até o momento que eu escrevia esse artigo, não havia nenhum item nativo que faça o startup da máquina de forma automática, para fazer essa operação é necessário criar uma conta de automação, um agendamento e um script que faça esse processo.
Primeiro passo:
Criar uma conta de automação, acesse o marketplace da Microsoft e busque por automação ou automation

Após clicar em criar, preencher as informações como nome e apontar para um grupo de recursos:

Após criar a conta de automação, vamos acessa-la e configurar as opções. A primeira opção a ser configurada é o agendamento que é os dias que você quer que o script execute, para fazer isso basta ir no canto esquerdo “Recursos Compartilhados”, depois no item “Agendas” e por ultimo em “Adicionar um agendamento”

Vai abrir uma tela para você criar uma agenda, nesta tela você deverá adicionar um Nome, a data de inicio, fuso horário e a recorrência. No meu caso eu configurei para rodar todos de segunda à sexta-feira às 7:50 da manhã*

Agora vamos criar um Runbook que contém nosso script para iniciar a máquina virtual, para fazer isso, devemos ir no item “Runbooks” em “Automação do Processso” no canto esquerdo de sua conta de automação e dentro de “Runbooks clicar em “Criar um Runbook”:

Vai aparecer uma tela, onde você precisará dar um nome para seu runbook e o tipo de script que será utilizado (no caso desse tutorial, será powershell):

Após clicar em criar, abrirá uma tela para você editar seu runbook, vamos colocar o seguinte script:

$Conn = Get-AutomationConnection -Name AzureRunAsConnection
Add-AzureRMAccount -ServicePrincipal -Tenant $Conn.TenantID `
-ApplicationID $Conn.ApplicationID -CertificateThumbprint $Conn.CertificateThumbprint

Start-AzureRmVM -Name NOMEDAVM -ResourceGroupName NOMEDOGRUPODERECURSOS

Nos items NOMEDAVM você vai substituir pelo nome da máquina sua virtual e no item NOMEDOGRUPODERECURSOS você vai substituir pelo nome do seu grupo de recursos.

No meu caso o nome da máquina virtual é ubunto-srv e o nome do grupo de recursos chama-se AzureBrasil

Você pode ver o nome da máquina e o nome do grupo de recursos em que ela se encontra clicando no atalho Máquinas Virtuais

Então meu script ficou assim:

Perceba que eu selecionei a opção “Publicar” se você clicar em salvar, ele não funcionará a execução. Agora você já verá seu runbook publicado, pronto para ser executado:

Feito todos esses passos, agora vamos vincular nosso runbook ao agendamento que criamos previamente, para isso basta abrir seu runbook e clicar em “agendas” e depois adicionar um agendamento:

Vai abrir uma tela para vincularmos o agendamento, então vinculamos o agendamento que criamos:

Pronto! Agora nossa máquina virtual vai desligar todos os dias às 20:00 e vai ligar todos os dias às 07:50, isso terá uma redução significativa na sua conta com o Azure.

Na parte 2 desse tutorial, vou mostrar mais duas dicas para você reduzir os custos com sua VMs