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
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:
TimeGrain define o período de reset do orçamento:
| TimeGrain | Período | Quando usar |
|---|---|---|
| Monthly | Mensal, reseta todo dia 1 | Orçamentos operacionais mensais |
| Quarterly | Trimestral | Planejamento por trimestre fiscal |
| Annually | Anual | Orçamentos anuais aprovados pelo board |
| BillingMonth | Mês de faturamento | Alinhado ao ciclo de fatura da Microsoft |
| BillingQuarter | Trimestre de faturamento | Para EA/MCA com trimestre fiscal |
| BillingAnnual | Ano de faturamento | Para 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:
| Tipo | O que mede | Quando usar |
|---|---|---|
| Actual | Custo já incorrido e confirmado | Alertas de que o gasto JÁ aconteceu |
| Forecasted | Projeção de custo até o fim do período | Alertas 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:
| Escopo | Cobre | Caso de uso |
|---|---|---|
| Management Group | Todas as subscriptions no MG | Orçamento corporativo total |
| Subscription | Todos os recursos da subscription | Orçamento por ambiente ou BU |
| Resource Group | Apenas recursos do RG | Orç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:
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ção | Compromisso | Desconto típico | Flexibilidade |
|---|---|---|---|
| Pay-As-You-Go | Nenhum | 0% | Total |
| Azure Savings Plan | 1 ou 3 anos de gasto em compute | Até 65% | Alta (aplica a qualquer compute) |
| Reserved Instances | 1 ou 3 anos de tipo específico de recurso | Até 72% | Baixa (tipo e região específicos) |
| Hybrid Benefit | Uso de licença Windows/SQL existente | Até 85% combinado | Média |
| Spot Instances | Sem compromisso, pode ser interrompida | Até 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
Como Budget e Advisor se complementam
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
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-01teve 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:
- Portal > Cost Management + Billing > Budgets
- Selecionar o escopo (Subscription ou RG)
- + Add
- Definir nome, valor, período (Monthly/Quarterly/Annual)
- Definir datas de início e fim
- Opcionalmente: filtrar por RG, tags, serviços
- Configurar alertas (threshold, tipo Actual/Forecasted, destinatários)
- Create
Verificar recomendações do Advisor:
- Portal > Azure Advisor
- Aba Cost para recomendações de economia
- Clicar em cada recomendação para ver detalhes e economia estimada
- Botão Implement quando disponível (para algumas ações simples como redimensionar VMs)
- Botão Postpone ou Dismiss para gerenciar recomendações não aplicáveis
Cost Analysis:
- Portal > Cost Management + Billing > Cost analysis
- Selecionar período, granularidade (diária, mensal)
- Group by: Tag, Resource Group, Service, Location
- 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ção | Role necessária |
|---|---|
| Criar/editar/deletar Budgets | Contributor ou superior no escopo do Budget |
| Visualizar Budgets e custos | Cost Management Reader ou Reader |
| Visualizar custo de RGs individuais | Reader no RG |
| Configurar exports | Contributor + permissão no Storage Account destino |
| Acessar recomendações do Advisor | Reader no escopo |
| Implementar recomendações do Advisor | Depende 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:
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ção | Threshold recomendado | Tipo | Destinatário |
|---|---|---|---|
| Alerta preventivo para planejamento | 70-80% | Forecasted | Time de cloud |
| Alerta operacional para ação | 90% | Actual | Time de cloud + liderança técnica |
| Alerta crítico para escalação | 100% | Actual | CTO, CFO, gestores |
| Alerta de anomalia imediata | Qualquer spike anômalo | Anomaly detection | Time de cloud |
Quando agir em recomendações do Advisor
| Tipo de recomendação | Quando implementar | Cuidado |
|---|---|---|
| VM com baixo uso (reduzir SKU) | Após validar que não há pico sazonal | Verificar 90 dias, não só 30 |
| Reserved Instance recomendada | Quando uso for estável e contrato de longo prazo for aceitável | Compromisso de 1-3 anos não é flexível |
| Disco não associado a VM | Verificar se é backup intencional ou órfão real | Nunca deletar sem confirmar o dono |
| IP público sem uso | Verificar se está em stand-by para DR | IPs reservados têm custo mesmo sem uso |
| Recurso sem uso há 30 dias | Confirmar com dono antes de desligar | Pode ser recurso de standby |
Budget por escopo
| Situação | Escopo do Budget | Motivo |
|---|---|---|
| Controle financeiro total da empresa | Management Group raiz | Visão consolidada de toda organização |
| Orçamento por linha de negócio | Management Group por BU | Chargeback por unidade de negócio |
| Orçamento por ambiente (prod, dev) | Subscription | Billing separado por ambiente |
| Orçamento por projeto | Resource Group ou filtro por tag | Granularidade por projeto dentro de uma sub |
| Orçamento por time | Filtro por tag Owner no Budget | Times 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
| Erro | Por que acontece | Como evitar |
|---|---|---|
| Acreditar que Budget bloqueia gastos | Confusão com o conceito; Budget apenas notifica | Configurar automação de resposta se bloqueio for necessário |
| Criar Budget depois que o custo estourou | Reatividade em vez de proatividade | Criar Budget como primeira ação ao criar subscription |
| Usar apenas alertas Actual | Não conhecer alertas Forecasted | Sempre incluir ao menos um alert Forecasted em 70-80% |
| Ignorar recomendações do Advisor por meses | Sem processo de revisão | Calendário fixo semanal para revisão do Advisor |
| Deletar disco "órfão" recomendado pelo Advisor sem verificar | Confiar cegamente na recomendação | Sempre confirmar com o dono antes de deletar |
| Não filtrar Budgets por tag em projetos que cruzam RGs | Não saber que Budgets suportam filtros | Usar filtros de tag para orçamentos por projeto |
| Configurar Budget sem Action Group | Notificações por email podem ser ignoradas | Integrar Budget com Action Group e Teams/Slack |
| Comprar Reserved Instance sem analisar tendência | Aceitar recomendação do Advisor sem questionar | Verificar 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)
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
| Limite | Valor |
|---|---|
| Budgets por subscription | 50 |
| Budgets por Resource Group | 50 |
| Notificações por Budget | 5 |
| Retenção de dados no Cost Management | 13 meses |
| Atraso dos dados de custo | 8-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
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
Projectao 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