Pular para o conteúdo principal

Fundamentação Teórica: Manage Costs by Using Alerts, Budgets, and Azure Advisor Recommendations


1. Intuição Inicial

Imagine que você é o gerente financeiro de uma empresa e recebe a fatura de energia elétrica apenas uma vez por mês, sem nenhum acompanhamento durante o mês. Se alguém deixou o ar-condicionado ligado o mês inteiro desnecessariamente, você só descobre quando a fatura chega. Nesse ponto, o dinheiro já foi gasto e não há como recuperá-lo.

Gerenciar custos no Azure sem ferramentas adequadas é exatamente isso: descobrir gastos excessivos apenas na fatura mensal, quando já é tarde demais para agir.

O Azure oferece três mecanismos complementares para transformar esse cenário:

Budgets são como o orçamento mensal: você define quanto pode gastar e o Azure monitora continuamente.

Alerts de custo são o alarme: quando o gasto se aproxima ou ultrapassa o orçamento, você é notificado imediatamente, não no final do mês.

Azure Advisor é o consultor financeiro: ele analisa seu ambiente e recomenda onde você está desperdiçando dinheiro e como otimizar.

Juntos, esses três mecanismos formam a prática de FinOps no Azure: visibilidade, controle e otimização de custos em tempo real.


2. Contexto

Onde gestão de custos se encaixa na governança Azure

100%
Scroll para zoom · Arraste para mover · 📱 Pinch para zoom no celular

A gestão de custos depende de toda a estrutura de organização que construímos nos módulos anteriores. Tags bem aplicadas permitem filtrar custos por projeto. Resource Groups bem organizados mostram custo por aplicação. Subscriptions separadas permitem faturamento isolado por ambiente. Sem essa base, a gestão de custos fica comprometida.

Por que esses mecanismos existem

O modelo de nuvem pública inverte o controle financeiro tradicional. Em infraestrutura própria (on-premises), você compra hardware com custo fixo e previsível. Na nuvem, o custo é variável e pode crescer a qualquer momento: um desenvolvedor que cria 100 VMs por engano, um job de processamento que não termina, um storage account que acumula dados sem controle.

Sem monitoramento proativo, custos na nuvem podem surpreender negativamente. Com budgets, alertas e recomendações do Advisor, você mantém controle financeiro sem abrir mão da agilidade que a nuvem oferece.


3. Construção dos Conceitos

3.1 Azure Cost Management + Billing

Antes de entender budgets e alertas, é necessário entender a plataforma que os sustenta: o Azure Cost Management + Billing.

Esta é a ferramenta central de visibilidade financeira do Azure. Ela oferece:

  • Cost Analysis: visualização interativa de custos por período, agrupados por serviço, recurso, tag, RG, subscription ou qualquer dimensão
  • Budgets: definição de limites de gasto com alertas automáticos
  • Recommendations: integração com Azure Advisor para sugestões de otimização
  • Exports: exportação automática de dados de custo para Storage Account
  • Invoices: acesso às faturas mensais

O Cost Management está disponível para Subscriptions, Resource Groups e Management Groups. O escopo determina quais recursos são incluídos na análise.

3.2 O que é um Budget

Um Budget no Azure é uma definição de limite de gasto para um escopo e período específicos. Ele não bloqueia gastos (por padrão), mas monitora continuamente e dispara notificações quando limiares são atingidos.

Um Budget tem os seguintes componentes:

100%
Scroll para zoom · Arraste para mover · 📱 Pinch para zoom no celular

TimeGrain define o período de reset do orçamento:

TimeGrainPeríodoQuando usar
MonthlyMensal, reseta todo dia 1Orçamentos operacionais mensais
QuarterlyTrimestralPlanejamento por trimestre fiscal
AnnuallyAnualOrçamentos anuais aprovados pelo board
BillingMonthMês de faturamentoAlinhado ao ciclo de fatura da Microsoft
BillingQuarterTrimestre de faturamentoPara EA/MCA com trimestre fiscal
BillingAnnualAno de faturamentoPara contratos anuais

3.3 Tipos de alerta de custo

Dentro de um Budget, você define Notifications que disparam quando limiares são atingidos. Há dois tipos de threshold:

TipoO que medeQuando usar
ActualCusto já incorrido e confirmadoAlertas de que o gasto JÁ aconteceu
ForecastedProjeção de custo até o fim do períodoAlertas preventivos antes do custo ocorrer

A distinção é crítica para decisões de ação:

Um alerta Actual em 100% significa que você JÁ gastou todo o orçamento. A ação é reativa.

Um alerta Forecasted em 100% significa que, se a tendência continuar, você CHEGARÁ a 100% antes do fim do período. A ação é preventiva.

Alertas de anomalia são um terceiro tipo, independente de budgets: o Cost Management usa machine learning para identificar padrões de gasto incomuns e notificar automaticamente sem necessidade de threshold definido.

3.4 Escopos de Budget

Budgets podem ser criados em diferentes escopos da hierarquia Azure:

EscopoCobreCaso de uso
Management GroupTodas as subscriptions no MGOrçamento corporativo total
SubscriptionTodos os recursos da subscriptionOrçamento por ambiente ou BU
Resource GroupApenas recursos do RGOrçamento por projeto ou aplicação

Budgets em MG e Subscription podem ser filtrados por tags, Resource Groups, serviços ou meters específicos, permitindo orçamentos granulares mesmo em escopos amplos.

3.5 Azure Advisor

O Azure Advisor é um consultor automatizado que analisa continuamente os recursos do seu ambiente Azure e gera recomendações em cinco categorias:

100%
Scroll para zoom · Arraste para mover · 📱 Pinch para zoom no celular

Para o objetivo de gestão de custos, a categoria Cost é a mais relevante. As recomendações de custo do Advisor são baseadas em:

  • Análise de 30 dias de utilização de CPU, memória, rede e disco
  • Comparação do uso real com o SKU contratado
  • Análise de reservas (Reserved Instances) versus pay-as-you-go
  • Identificação de recursos órfãos (discos, IPs, NICs sem uso)

3.6 Azure Reservations e Savings Plans (contexto do Advisor)

O Advisor frequentemente recomenda Reservations e Savings Plans, que são mecanismos de desconto por compromisso:

OpçãoCompromissoDesconto típicoFlexibilidade
Pay-As-You-GoNenhum0%Total
Azure Savings Plan1 ou 3 anos de gasto em computeAté 65%Alta (aplica a qualquer compute)
Reserved Instances1 ou 3 anos de tipo específico de recursoAté 72%Baixa (tipo e região específicos)
Hybrid BenefitUso de licença Windows/SQL existenteAté 85% combinadoMédia
Spot InstancesSem compromisso, pode ser interrompidaAté 90%Baixíssima (para workloads tolerantes a falha)

Quando o Advisor identifica que você consistentemente usa um tipo de VM há mais de 30 dias, ele calcula a economia de comprar uma Reserved Instance e mostra o ROI em meses.


4. Visão Estrutural

Fluxo completo de gestão de custos

100%
Scroll para zoom · Arraste para mover · 📱 Pinch para zoom no celular

Como Budget e Advisor se complementam

100%
Scroll para zoom · Arraste para mover · 📱 Pinch para zoom no celular

Budget detecta que algo está errado. Advisor explica o que e recomenda como corrigir.


5. Funcionamento na Prática

Ciclo de vida de um Budget

100%
Scroll para zoom · Arraste para mover · 📱 Pinch para zoom no celular

Comportamentos não óbvios dos Budgets

Budgets NÃO bloqueiam gastos por padrão. Um Budget que atingiu 100% não para automaticamente a criação de novos recursos. Ele apenas notifica. Para bloquear gastos automaticamente, você precisa configurar uma Action Group que dispara um Runbook do Azure Automation que aplica uma Policy ou desabilita recursos. Isso é possível mas requer configuração adicional.

Dados de custo têm atraso de 8 a 24 horas. O custo mostrado no Cost Management e avaliado pelo Budget não é em tempo real. Para recursos como VMs e Storage, o atraso típico é de 8 a 24 horas. Para alguns serviços de marketplace, pode chegar a 72 horas. Isso significa que alertas de 100% Actual podem disparar após o valor já ter sido ultrapassado.

Alertas Forecasted são mais valiosos exatamente por isso. Como dados reais têm atraso, alertas Forecasted com threshold baixo (70-80%) dão margem suficiente para agir antes que o gasto real seja contabilizado.

Um Budget se aplica ao escopo definido, não ao escopo onde foi criado. Um Budget criado na Subscription A com filtro de tag Project=ecommerce monitora apenas recursos com aquela tag, independente do RG. Filtros são poderosos para orçamentos por projeto que cruzam múltiplos RGs.

Múltiplos alertas no mesmo Budget são independentes. Você pode ter até 5 condições de notificação em um Budget: por exemplo, 50% Actual, 80% Actual, 100% Actual, 80% Forecasted, 100% Forecasted. Cada um dispara independentemente e para destinatários diferentes se desejado.

Como o Advisor gera recomendações de custo

O Advisor analisa 30 dias de dados de telemetria. Para VMs, ele verifica:

  • Uso médio de CPU: se consistentemente abaixo de 5%, recomenda reduzir SKU ou desligar
  • Uso máximo de CPU: se o pico nunca ultrapassa 20%, confirma que o SKU está superprovisionado
  • Conexões de rede de entrada: ajuda a confirmar se a VM está realmente em uso

Uma recomendação típica do Advisor para custo seria:

"VM vm-analytics-01 teve uso médio de CPU de 3% nos últimos 30 dias. Considere reduzir de Standard_D4s_v3 (4 vCPUs, R$485/mês) para Standard_B2s (2 vCPUs, R$95/mês). Economia estimada: R$390/mês (80%)."

O Advisor não implementa as recomendações automaticamente. Toda recomendação requer ação humana ou automação configurada explicitamente.


6. Formas de Implementação

Portal do Azure

Quando usar: configuração inicial, análise visual de custos, revisão de recomendações do Advisor

Criar um Budget:

  1. Portal > Cost Management + Billing > Budgets
  2. Selecionar o escopo (Subscription ou RG)
  3. + Add
  4. Definir nome, valor, período (Monthly/Quarterly/Annual)
  5. Definir datas de início e fim
  6. Opcionalmente: filtrar por RG, tags, serviços
  7. Configurar alertas (threshold, tipo Actual/Forecasted, destinatários)
  8. Create

Verificar recomendações do Advisor:

  1. Portal > Azure Advisor
  2. Aba Cost para recomendações de economia
  3. Clicar em cada recomendação para ver detalhes e economia estimada
  4. Botão Implement quando disponível (para algumas ações simples como redimensionar VMs)
  5. Botão Postpone ou Dismiss para gerenciar recomendações não aplicáveis

Cost Analysis:

  1. Portal > Cost Management + Billing > Cost analysis
  2. Selecionar período, granularidade (diária, mensal)
  3. Group by: Tag, Resource Group, Service, Location
  4. Salvar como View personalizada para uso recorrente

Limitação do portal: não reproduzível, não escala para configurar budgets em múltiplas subscriptions simultaneamente.


Azure CLI

# Criar Budget em uma Subscription
az consumption budget create \
--budget-name "budget-sub-producao-mensal" \
--amount 15000 \
--time-grain Monthly \
--start-date "2026-04-01" \
--end-date "2027-03-31" \
--notifications '{
"alerta_80_actual": {
"enabled": true,
"operator": "GreaterThan",
"threshold": 80,
"threshold_type": "Actual",
"contact_emails": ["cloud-team@empresa.com", "finance@empresa.com"],
"contact_roles": ["Owner", "Contributor"]
},
"alerta_100_actual": {
"enabled": true,
"operator": "GreaterThan",
"threshold": 100,
"threshold_type": "Actual",
"contact_emails": ["cto@empresa.com", "cfo@empresa.com"]
},
"alerta_80_forecast": {
"enabled": true,
"operator": "GreaterThan",
"threshold": 80,
"threshold_type": "Forecasted",
"contact_emails": ["cloud-team@empresa.com"]
}
}'

# Criar Budget em um Resource Group específico
az consumption budget create \
--budget-name "budget-ecommerce-mensal" \
--amount 3000 \
--time-grain Monthly \
--start-date "2026-04-01" \
--end-date "2027-03-31" \
--resource-group "rg-ecommerce-prod" \
--notifications '{
"alerta_90": {
"enabled": true,
"operator": "GreaterThan",
"threshold": 90,
"threshold_type": "Actual",
"contact_emails": ["tech-lead@empresa.com"]
}
}'

# Listar todos os Budgets da subscription
az consumption budget list --output table

# Ver detalhes de um Budget
az consumption budget show --budget-name "budget-sub-producao-mensal"

# Deletar um Budget
az consumption budget delete --budget-name "budget-sub-producao-mensal"

# Ver custo atual da subscription (últimos 30 dias)
az consumption usage list \
--start-date "$(date -d '30 days ago' +%Y-%m-%d)" \
--end-date "$(date +%Y-%m-%d)" \
--query "sort_by([].{
Resource: instanceName,
Service: consumedService,
Cost: pretaxCost,
Currency: currency
}, &Cost) | reverse(@) | [:20]" \
--output table

# Ver recomendações do Advisor de custo
az advisor recommendation list \
--category Cost \
--output table

# Ver recomendações do Advisor com detalhes de economia estimada
az advisor recommendation list \
--category Cost \
--query "[].{
Recurso: resourceMetadata.resourceId,
Impacto: impact,
Descricao: shortDescription.solution,
Economia: extendedProperties.annualSavingsAmount
}" \
--output table

# Implementar uma recomendação específica do Advisor
az advisor recommendation enable \
--recommendation-id "<recommendation-id>"

# Dispensar uma recomendação não aplicável
az advisor recommendation disable \
--recommendation-id "<recommendation-id>" \
--days 30

# Configurar export automático de dados de custo
az costmanagement export create \
--name "export-mensal-sub" \
--type ActualCost \
--scope "subscriptions/<sub-id>" \
--storage-account-id "/subscriptions/<sub-id>/resourceGroups/rg-billing/providers/Microsoft.Storage/storageAccounts/stgbillingexport" \
--storage-container "cost-exports" \
--recurrence Monthly \
--recurrence-period from="2026-04-01" to="2027-03-31"

Azure PowerShell

# Criar Budget via PowerShell
$notifications = @{
"Alert_80_Actual" = New-AzConsumptionBudgetNotification `
-NotificationKey "Alert_80_Actual" `
-Threshold 80 `
-Operator GreaterThan `
-ContactEmail @("cloud-team@empresa.com", "finance@empresa.com") `
-Enabled $true

"Alert_100_Actual" = New-AzConsumptionBudgetNotification `
-NotificationKey "Alert_100_Actual" `
-Threshold 100 `
-Operator GreaterThan `
-ContactEmail @("cto@empresa.com") `
-Enabled $true
}

New-AzConsumptionBudget `
-Name "budget-sub-producao-mensal" `
-Amount 15000 `
-Category Cost `
-TimeGrain Monthly `
-StartDate (Get-Date -Day 1 -Month 4 -Year 2026) `
-EndDate (Get-Date -Day 31 -Month 3 -Year 2027) `
-Notification $notifications

# Listar Budgets
Get-AzConsumptionBudget |
Select-Object Name, Amount, CurrentSpend, TimeGrain

# Ver recomendações do Advisor
Get-AzAdvisorRecommendation -Category Cost |
Select-Object ResourceId, Impact, ShortDescription, @{N="Savings"; E={$_.ExtendedProperties.annualSavingsAmount}} |
Sort-Object Savings -Descending

# Ver uso de recursos no mês atual
Get-AzConsumptionUsageDetail `
-StartDate (Get-Date -Day 1) `
-EndDate (Get-Date) |
Group-Object ConsumedService |
Select-Object Name, @{N="TotalCost"; E={($_.Group | Measure-Object PretaxCost -Sum).Sum}} |
Sort-Object TotalCost -Descending | Select-Object -First 10

Bicep para Budgets como código

targetScope = 'subscription'

// Budget mensal para subscription de produção
resource budgetProd 'Microsoft.Consumption/budgets@2021-10-01' = {
name: 'budget-sub-producao-mensal'
properties: {
category: 'Cost'
amount: 15000
timeGrain: 'Monthly'
timePeriod: {
startDate: '2026-04-01'
endDate: '2027-03-31'
}
notifications: {
Alert_70_Forecast: {
enabled: true
operator: 'GreaterThan'
threshold: 70
thresholdType: 'Forecasted'
contactEmails: ['cloud-team@empresa.com']
contactRoles: ['Owner']
}
Alert_90_Actual: {
enabled: true
operator: 'GreaterThan'
threshold: 90
thresholdType: 'Actual'
contactEmails: ['cloud-team@empresa.com', 'finance@empresa.com']
}
Alert_100_Actual: {
enabled: true
operator: 'GreaterThan'
threshold: 100
thresholdType: 'Actual'
contactEmails: ['cto@empresa.com', 'cfo@empresa.com']
contactRoles: ['Owner']
}
}
}
}

// Budget por Resource Group (escopo diferente)
resource budgetEcommerce 'Microsoft.Consumption/budgets@2021-10-01' = {
name: 'budget-ecommerce-mensal'
properties: {
category: 'Cost'
amount: 3000
timeGrain: 'Monthly'
timePeriod: {
startDate: '2026-04-01'
endDate: '2027-03-31'
}
filter: {
dimensions: {
name: 'ResourceGroupName'
operator: 'In'
values: ['rg-ecommerce-prod']
}
}
notifications: {
Alert_80_Actual: {
enabled: true
operator: 'GreaterThan'
threshold: 80
thresholdType: 'Actual'
contactEmails: ['tech-lead@empresa.com']
}
}
}
}

7. Controle e Segurança

Quem pode criar e visualizar Budgets

AçãoRole necessária
Criar/editar/deletar BudgetsContributor ou superior no escopo do Budget
Visualizar Budgets e custosCost Management Reader ou Reader
Visualizar custo de RGs individuaisReader no RG
Configurar exportsContributor + permissão no Storage Account destino
Acessar recomendações do AdvisorReader no escopo
Implementar recomendações do AdvisorDepende da ação: geralmente Contributor no recurso

A role Cost Management Reader é uma built-in role que permite ver todos os dados de custo sem permissão para criar ou modificar recursos. É ideal para times de finanças que precisam de visibilidade sem acesso operacional.

Automação de resposta a alertas de Budget

Um Budget com alert pode ser conectado a um Action Group que aciona um Runbook do Azure Automation para resposta automática:

100%
Scroll para zoom · Arraste para mover · 📱 Pinch para zoom no celular

Esta é a única forma de fazer um Budget efetivamente bloquear gastos: via automação de resposta ao alert.

Segurança de dados de custo

Dados de custo no Cost Management contêm informações sensíveis (quanto a empresa gasta em cada serviço, padrões de uso, estrutura de aplicações). Controle quem tem acesso à aba de Cost Management:

  • Times de desenvolvimento devem ter acesso ao custo do seu RG, não de toda a subscription
  • Times de finanças precisam da visão consolidada da subscription ou Management Group
  • Use a role Cost Management Reader para visibilidade sem poder operacional

8. Tomada de Decisão

Configuração de thresholds de Budget

SituaçãoThreshold recomendadoTipoDestinatário
Alerta preventivo para planejamento70-80%ForecastedTime de cloud
Alerta operacional para ação90%ActualTime de cloud + liderança técnica
Alerta crítico para escalação100%ActualCTO, CFO, gestores
Alerta de anomalia imediataQualquer spike anômaloAnomaly detectionTime de cloud

Quando agir em recomendações do Advisor

Tipo de recomendaçãoQuando implementarCuidado
VM com baixo uso (reduzir SKU)Após validar que não há pico sazonalVerificar 90 dias, não só 30
Reserved Instance recomendadaQuando uso for estável e contrato de longo prazo for aceitávelCompromisso de 1-3 anos não é flexível
Disco não associado a VMVerificar se é backup intencional ou órfão realNunca deletar sem confirmar o dono
IP público sem usoVerificar se está em stand-by para DRIPs reservados têm custo mesmo sem uso
Recurso sem uso há 30 diasConfirmar com dono antes de desligarPode ser recurso de standby

Budget por escopo

SituaçãoEscopo do BudgetMotivo
Controle financeiro total da empresaManagement Group raizVisão consolidada de toda organização
Orçamento por linha de negócioManagement Group por BUChargeback por unidade de negócio
Orçamento por ambiente (prod, dev)SubscriptionBilling separado por ambiente
Orçamento por projetoResource Group ou filtro por tagGranularidade por projeto dentro de uma sub
Orçamento por timeFiltro por tag Owner no BudgetTimes que compartilham subscription

9. Boas Práticas

Configure Budgets em toda subscription nova, antes de criar recursos. Todo processo de criação de subscription deve incluir, como etapa obrigatória, a configuração de um Budget com pelo menos três thresholds: 80% Forecasted, 90% Actual, 100% Actual.

Use múltiplos Budgets com granularidades diferentes. Um Budget na Subscription para visão total e Budgets individuais por Resource Group para projetos críticos. Isso permite identificar qual projeto está consumindo mais antes que a subscription inteira seja impactada.

Configure alertas Forecasted com thresholds menores que Actual. Um alerta Forecasted em 70% dá tempo de agir antes que o custo real chegue a 90% ou 100%. A assimetria é intencional: Forecasted é preventivo, Actual é reativo.

Revise recomendações do Advisor semanalmente. O Advisor atualiza recomendações continuamente. Uma revisão semanal do dashboard de Cost do Advisor, com critério de implementar recomendações acima de R$100/mês de economia, é uma prática de FinOps madura.

Não descarte recomendações do Advisor sem documentar o motivo. Use a função "Dismiss" com comentário quando uma recomendação não se aplica. "Esta VM parece subutilizada mas é um servidor de standby para DR" é informação valiosa para auditoria futura.

Combine Budgets com Tags para orçamentos por projeto. Configure Budgets com filtros por tag Project para rastrear custo de projetos que têm recursos em múltiplos RGs. A tag é a única forma de agrupar custo de recursos dispersos pela organização.

Exporte dados de custo para análise histórica. O Cost Management retém dados por 13 meses. Para análises de mais longo prazo, configure exports mensais automáticos para um Storage Account. Esses dados podem ser carregados no Power BI para dashboards de FinOps.

Valide a economia do Advisor antes de aceitar cegamente. Recomendações de VM são baseadas em 30 dias. Se o serviço tem sazonalidade (Black Friday, início de ano fiscal), 30 dias de dados podem não capturar o pico. Sempre valide com o time dono do recurso.


10. Erros Comuns

ErroPor que aconteceComo evitar
Acreditar que Budget bloqueia gastosConfusão com o conceito; Budget apenas notificaConfigurar automação de resposta se bloqueio for necessário
Criar Budget depois que o custo estourouReatividade em vez de proatividadeCriar Budget como primeira ação ao criar subscription
Usar apenas alertas ActualNão conhecer alertas ForecastedSempre incluir ao menos um alert Forecasted em 70-80%
Ignorar recomendações do Advisor por mesesSem processo de revisãoCalendário fixo semanal para revisão do Advisor
Deletar disco "órfão" recomendado pelo Advisor sem verificarConfiar cegamente na recomendaçãoSempre confirmar com o dono antes de deletar
Não filtrar Budgets por tag em projetos que cruzam RGsNão saber que Budgets suportam filtrosUsar filtros de tag para orçamentos por projeto
Configurar Budget sem Action GroupNotificações por email podem ser ignoradasIntegrar Budget com Action Group e Teams/Slack
Comprar Reserved Instance sem analisar tendênciaAceitar recomendação do Advisor sem questionarVerificar uso por 60-90 dias e tendência de crescimento/declínio

O erro mais custoso

Não configurar Budget algum em uma subscription nova. Um desenvolvedor cria um AKS cluster com dezenas de nós para teste e esquece de desligar. Uma semana depois, R$15.000 foram gastos sem nenhum alerta. Com um Budget de R$500/mês com alerta em 50% Forecasted, o alerta teria disparado no primeiro dia.


11. Operação e Manutenção

Revisão mensal de custos (processo recomendado)

100%
Scroll para zoom · Arraste para mover · 📱 Pinch para zoom no celular

Monitorar status dos Budgets

# Ver status atual de todos os Budgets com percentual consumido
az consumption budget list \
--query "[].{
Nome: name,
Valor: amount,
Gasto: currentSpend.amount,
Moeda: currentSpend.unit,
Percentual: to_number(currentSpend.amount) / to_number(amount) * 100
}" \
--output table

# Verificar se algum Budget está próximo do limite
az consumption budget list \
--query "[?to_number(currentSpend.amount) / to_number(amount) > 0.8].{
Nome: name,
Valor: amount,
Gasto: currentSpend.amount
}" \
--output table

Limites importantes

LimiteValor
Budgets por subscription50
Budgets por Resource Group50
Notificações por Budget5
Retenção de dados no Cost Management13 meses
Atraso dos dados de custo8-24 horas (até 72h para alguns serviços)
Recomendações do Advisor (atualização)A cada 24 horas

12. Integração e Automação

Integração com Microsoft Teams via Logic App

100%
Scroll para zoom · Arraste para mover · 📱 Pinch para zoom no celular

Power BI para dashboard de FinOps

Configure export automático para Storage Account e conecte ao Power BI para dashboards de FinOps em tempo real:

# Criar export automático mensal para Storage Account
az costmanagement export create \
--name "export-custo-mensal" \
--type ActualCost \
--scope "/subscriptions/<sub-id>" \
--storage-account-id "/subscriptions/<sub-id>/resourceGroups/rg-billing/providers/Microsoft.Storage/storageAccounts/stgbillingexport" \
--storage-container "monthly-exports" \
--storage-directory "$(date +%Y)" \
--recurrence Monthly \
--recurrence-period from="2026-01-01" to="2027-12-31" \
--dataset-granularity Daily

No Power BI, conecte ao Azure Blob Storage e crie visualizações de:

  • Custo por tag Project ao longo do tempo
  • Top 10 recursos por custo no mês
  • Comparação orçado vs. realizado por departamento
  • Tendência de crescimento de custo mês a mês

Automação de resposta a Budget via Runbook

# Runbook: Desligar VMs de dev quando Budget atingir 100%
param (
[string]$subscriptionId,
[string]$budgetName
)

Connect-AzAccount -Identity

# Desligar VMs com tag AutoShutdown=true em RGs de dev
$devVMs = Get-AzVM -Status |
Where-Object {
$_.PowerState -eq "VM running" -and
$_.Tags["Environment"] -eq "Development" -and
$_.Tags["AutoShutdown"] -eq "true"
}

foreach ($vm in $devVMs) {
Write-Output "Desligando $($vm.Name) - Budget $budgetName atingiu 100%"
Stop-AzVM -ResourceGroupName $vm.ResourceGroupName -Name $vm.Name -Force
}

Write-Output "Total de VMs desligadas: $($devVMs.Count)"

Este Runbook é conectado ao Action Group do Budget. Quando o Budget atinge 100%, o alert dispara o Action Group, que executa o Runbook, que desliga as VMs de desenvolvimento automaticamente.

Azure Advisor API para automação de relatórios

# Gerar relatório semanal de recomendações de custo
az advisor recommendation list \
--category Cost \
--query "[?impact=='High'].{
Recurso: resourceMetadata.resourceId,
Problema: shortDescription.problem,
Solucao: shortDescription.solution,
EconomiaAnual: extendedProperties.annualSavingsAmount,
Moeda: extendedProperties.savingsCurrency
}" \
--output json > advisor-custo-$(date +%Y%m%d).json

# Calcular economia total das recomendações pendentes
az advisor recommendation list \
--category Cost \
--query "sum([].extendedProperties.annualSavingsAmount)" \
--output tsv

13. Resumo Final

Pontos essenciais:

  • Budget define um limite de gasto com notificações, mas não bloqueia gastos por padrão
  • Alertas de custo têm dois tipos: Actual (custo já ocorreu) e Forecasted (projeção de custo futuro)
  • Azure Advisor analisa 30 dias de telemetria e gera recomendações em 5 categorias; a categoria Cost identifica desperdícios e sugere reservations
  • Dados de custo no Cost Management têm atraso de 8 a 24 horas; alguns serviços chegam a 72 horas
  • Budgets podem ser criados em escopos de Management Group, Subscription ou Resource Group
  • Para bloquear gastos automaticamente, é necessário configurar Action Group + Runbook como resposta ao alerta do Budget

Diferenças críticas:

  • Budget vs. Resource Lock: Budget monitora gasto e notifica; Lock impede operações de delete/modify independente de custo
  • Alert Actual vs. Forecasted: Actual é reativo (gasto já ocorreu); Forecasted é preventivo (baseado em projeção)
  • Advisor recomendação vs. implementação automática: Advisor identifica e recomenda; a implementação é manual ou requer automação configurada
  • Cost Management Reader vs. Reader: Cost Management Reader vê apenas dados de custo; Reader vê recursos mas não necessariamente custo detalhado

O que precisa ser lembrado para o AZ-104:

  • Budget não bloqueia gastos; apenas notifica
  • Limite de 50 Budgets por subscription
  • Limite de 5 notificações por Budget
  • O Advisor analisa 30 dias de dados de uso para recomendações de custo
  • Recomendações do Advisor são atualizadas a cada 24 horas
  • A retenção de dados no Cost Management é de 13 meses
  • Budget supports filtros por tag, o que permite orçamentos por projeto mesmo quando recursos estão em múltiplos Resource Groups
  • A role Cost Management Reader é a forma correta de dar visibilidade financeira sem acesso operacional