Pular para o conteúdo principal

Desafio 18: gerenciamento de custos & Azure advisor

Tempo Estimado e Custo

45-60 minutos | Custo estimado: Gratuito (operações do plano de gerenciamento) | Peso no Exame: 10-15%

Cenário

A conta mensal do Azure da Contoso Ltd. cresceu de $5.000 para $45.000 em seis meses, e o CFO está exigindo respostas. Ninguém sabe qual departamento está gastando o quê, não há alertas quando os orçamentos são excedidos, e o CTO suspeita que existem recursos ociosos queimando dinheiro. Você foi encarregado de implementar uma estratégia abrangente de gerenciamento de custos usando Azure Cost Management, orçamentos, alertas e recomendações do Azure Advisor.

Habilidades do exame cobertas

HabilidadePeso
Gerenciar custos usando alertas, orçamentos e recomendações do Azure AdvisorAlto
Configurar e revisar análise de custos do AzureMédio
Implementar e gerenciar tags de recursos do Azure para alocação de custosAlto
Interpretar recomendações de custo do Azure AdvisorMédio
Configurar grupos de ação para alertas de custoMédio

Referência sysadmin ↔ Azure

On-Prem / SysadminEquivalente AzureNotas
Planilha de planejamento de capacidadeAzure Cost AnalysisVisualização de gastos em tempo real
Revisão mensal de faturaOrçamentos do Cost ManagementAlertas proativos de limite
Rotular servidores por departamentoTags de recursos do AzureMetadados para alocação de custos
Recomendações de atualização de hardwareAzure AdvisorRedimensionamento, detecção de recursos ociosos
Email do chefe quando gasta demaisAlertas de orçamento + Action GroupsNotificações automatizadas nos limites
Relatórios de chargebackExportações de custo + filtro por tagDetalhamento de custos por departamento
Monitoramento de utilização de discoRedimensionamento do AdvisorSugestões de otimização de VM e disco

Tarefas

Tarefa 1: configurar tags de recursos para alocação de custos

Crie uma estratégia consistente de tagging e aplique tags aos recursos existentes:

# Criar um grupo de recursos com tags de rastreamento de custos
az group create \
--name rg-cost-lab \
--location eastus \
--tags Department=Engineering Environment=Development CostCenter=CC-4200 Owner=admin@contoso.com

# Criar recursos de exemplo com tags
az storage account create \
--name stcostlab$RANDOM \
--resource-group rg-cost-lab \
--location eastus \
--sku Standard_LRS \
--tags Department=Engineering Environment=Development CostCenter=CC-4200 Project=WebApp

az vm create \
--name vm-cost-test \
--resource-group rg-cost-lab \
--image Ubuntu2404 \
--size Standard_B1s \
--admin-username azureuser \
--generate-ssh-keys \
--tags Department=Engineering Environment=Development CostCenter=CC-4200 Project=API

Tarefa 2: criar um orçamento com alertas

Crie um orçamento mensal com múltiplos limites de alerta:

# Criar um orçamento para o grupo de recursos (mensal, limite de $100)
az consumption budget create \
--budget-name "budget-engineering-dev" \
--amount 100 \
--category Cost \
--time-grain Monthly \
--start-date "2024-01-01" \
--end-date "2025-12-31" \
--resource-group rg-cost-lab
Dica
  1. Navegue até Gerenciamento de Custos + Cobrança > Gerenciamento de Custos > Orçamentos
  2. Clique em + Adicionar para criar um novo orçamento
  3. Defina o escopo para seu grupo de recursos ou assinatura
  4. Configure o valor do orçamento ($100 mensal)
  5. Adicione condições de alerta:
    • 50% real | notificar a equipe antecipadamente
    • 75% real | escalar para o gerente
    • 100% real | alertar todos os stakeholders
    • 110% previsto | aviso proativo de previsão
  6. Configure o grupo de ação ou destinatários de email para cada limite

Tarefa 3: configurar visualizações de análise de custos

Explore a análise de custos no Portal do Azure:

  1. Navegue até Gerenciamento de Custos > Análise de custos
  2. Crie as seguintes visualizações salvas:

Visualização 1: Custo por Departamento (Tag)

  • Agrupar por: Tag (Department)
  • Granularidade: Mensal
  • Tipo de gráfico: Coluna (empilhado)

Visualização 2: Custo por Tipo de Recurso

  • Agrupar por: Tipo de recurso
  • Granularidade: Diário
  • Intervalo de datas: Últimos 30 dias

Visualização 3: Custo por Localização

  • Agrupar por: Localização
  • Granularidade: Mensal
  • Tipo de gráfico: Rosca
# Consulta de custo via REST API (sem subcomando CLI disponível)
az rest --method post \
--url "https://management.azure.com/subscriptions/$(az account show --query id -o tsv)/providers/Microsoft.CostManagement/query?api-version=2023-11-01" \
--body '{"type":"ActualCost","timeframe":"MonthToDate","dataset":{"granularity":"None","grouping":[{"type":"TagKey","name":"Department"}]}}'

Tarefa 4: configurar exportações de custos

Configure a exportação automatizada de dados de custo para uma conta de armazenamento:

# Obter o nome da conta de armazenamento
STORAGE_NAME=$(az storage account list -g rg-cost-lab --query "[0].name" -o tsv)

# Criar um contêiner para exportações de custo
az storage container create \
--name cost-exports \
--account-name $STORAGE_NAME \
--auth-mode login

# Criar uma exportação agendada (diária)
az costmanagement export create \
--name "daily-cost-export" \
--scope "subscriptions/$(az account show --query id -o tsv)" \
--type ActualCost \
--timeframe MonthToDate \
--storage-account-id $(az storage account show -n $STORAGE_NAME -g rg-cost-lab --query id -o tsv) \
--storage-container cost-exports \
--storage-directory "exports" \
--recurrence Daily \
--schedule-status Active

Tarefa 5: revisar recomendações do Azure advisor

# Listar todas as recomendações do advisor
az advisor recommendation list -o table

# Filtrar apenas recomendações de custo
az advisor recommendation list \
--category Cost \
--query "[].{Resource:resourceMetadata.resourceId, Problem:shortDescription.problem, Impact:impact}" \
-o table

# Obter recomendação detalhada para um recurso específico
az advisor recommendation list \
--category Cost \
--query "[0]"
Dica

Navegue até Azure Advisor > aba Custo para ver:

  • VMs subutilizadas (redimensionar ou desligar)
  • Discos gerenciados não anexados
  • Load balancers ociosos, IPs públicos e circuitos ExpressRoute
  • Recomendações de compra de Reserved Instances
  • Planos de App Service não utilizados

Tarefa 6: implementar notificações de gastos com action Groups

# Criar um grupo de ação para alertas de custo
az monitor action-group create \
--name "ag-cost-alerts" \
--resource-group rg-cost-lab \
--short-name "CostAlert" \
--action email finance-team finance@contoso.com

# Verificar o grupo de ação
az monitor action-group show \
--name "ag-cost-alerts" \
--resource-group rg-cost-lab \
--query "{Name:name, Receivers:emailReceivers[].{Name:name, Email:emailAddress}}" -o json

Tarefa 7: impor tagging com Azure Policy

Aplique uma política que nega a criação de recursos sem a tag CostCenter obrigatória:

# Obter a definição da política integrada
POLICY_DEF=$(az policy definition list \
--query "[?displayName=='Require a tag on resources'].id" -o tsv)

# Atribuir a política para impor a tag CostCenter
az policy assignment create \
--name "require-costcenter-tag" \
--display-name "Require CostCenter Tag" \
--policy "$POLICY_DEF" \
--scope "/subscriptions/$(az account show --query id -o tsv)/resourceGroups/rg-cost-lab" \
--params '{"tagName": {"value": "CostCenter"}}'

# Teste: tentar criar um recurso sem a tag (deve falhar após a política entrar em vigor)
az storage account create \
--name stnotagtest$RANDOM \
--resource-group rg-cost-lab \
--location eastus \
--sku Standard_LRS

Critérios de sucesso

  • Recursos estão tagueados com tags Department, Environment, CostCenter e Owner
  • Um orçamento mensal existe com pelo menos dois limites de alerta (50% e 100%)
  • Visualizações de análise de custos mostram gastos agrupados por tag, tipo de recurso e localização
  • Uma exportação automatizada de custos está configurada para uma conta de armazenamento
  • Recomendações de custo do Azure Advisor foram revisadas
  • Um grupo de ação existe para notificações de alertas de custo
  • Uma política de tagging está atribuída que exige a tag CostCenter

Dicas

Dica 1: Escopo do orçamento

Orçamentos podem ter escopo de assinatura, grupo de recursos ou grupo de gerenciamento. Para o exame, saiba que alertas de orçamento são informativos por padrão | eles não interrompem os gastos. Para desligar recursos automaticamente, você precisa combinar alertas de orçamento com runbooks do Azure Automation ou Logic Apps.

Dica 2: Herança de tags

Tags NÃO são herdadas de grupos de recursos para recursos. Se você taguear um grupo de recursos com "Department=IT", os recursos dentro dele não recebem automaticamente essa tag. Use Azure Policy com o efeito "Herdar uma tag do grupo de recursos" para impor a herança.

Dica 3: Atualização de recomendações do Advisor

O Azure Advisor atualiza recomendações a cada 24 horas. Se você acabou de criar recursos, as recomendações podem não aparecer imediatamente. Você pode disparar manualmente uma atualização no portal via Advisor > Visão Geral > Atualizar.

Dica 4: Acesso à análise de custos

Para visualizar custos, você precisa no mínimo da função Cost Management Reader ou função Reader no escopo. Billing Account Reader fornece acesso a dados de fatura, mas não à análise de custos no nível de recursos.

Quebrar & consertar

Cenário a: orçamento não está alertando

Você criou um orçamento com um limite de $100, mas os gastos chegaram a $120 e nenhum alerta foi enviado. Investigue: Um grupo de ação foi configurado? O endereço de email é válido? Verifique as condições de alerta do orçamento e certifique-se de que "real" vs "previsto" está configurado corretamente.

Cenário b: recursos sem tags

Execute uma consulta para encontrar todos os recursos em um grupo de recursos que estão sem a tag CostCenter. Como você remedia recursos existentes sem tags? (Resposta: Use tarefas de remediação de política com efeitos "Modify" ou "DeployIfNotExists".)

# Encontrar recursos sem a tag CostCenter
az resource list --resource-group rg-cost-lab \
--query "[?tags.CostCenter==null].{Name:name, Type:type}" -o table

Cenário c: falhas na exportação de custos

Sua exportação diária de custos parou de funcionar. Verifique o status da exportação e causas comuns: rotação de chave da conta de armazenamento, contêiner excluído ou restrições de acesso de rede na conta de armazenamento.

Verificação de conhecimento

1. Qual é a diferença entre alertas de orçamento reais e previstos?

Alertas reais disparam quando os gastos cumulativos atingem o percentual limite do orçamento. Alertas previstos disparam quando a projeção de gastos ao final do período deve exceder o limite. Alertas previstos são proativos | eles avisam antes de você gastar demais com base nas tendências de gastos.

2. Os orçamentos do Azure podem interromper automaticamente o consumo de recursos?

Não. Alertas de orçamento são apenas informativos | eles enviam notificações, mas não param ou excluem recursos. Para automatizar ações de controle de custos (como desligar VMs), você deve combinar alertas de orçamento com Action Groups que acionam runbooks do Azure Automation ou Logic Apps.

3. Quais são as categorias de recomendações do Azure Advisor?
  1. Custo | Redimensionar ou desligar recursos subutilizados
  2. Segurança | Detecção de vulnerabilidades e ameaças
  3. Confiabilidade | Alta disponibilidade e continuidade de negócios
  4. Desempenho | Melhorias de velocidade e responsividade
  5. Excelência Operacional | Melhores práticas de processos e workflows

(Nota: Na verdade existem cinco categorias nas atualizações mais recentes.)

4. Qual função é necessária para criar orçamentos?

Para criar orçamentos, você precisa da função Cost Management Contributor (ou Contributor/Owner). A função Cost Management Reader só permite visualizar custos e orçamentos, mas não criá-los.

Limpeza

# Excluir atribuição de política
az policy assignment delete \
--name "require-costcenter-tag" \
--scope "/subscriptions/$(az account show --query id -o tsv)/resourceGroups/rg-cost-lab"

# Excluir exportação de custos
az costmanagement export delete \
--name "daily-cost-export" \
--scope "subscriptions/$(az account show --query id -o tsv)"

# Excluir grupo de ação
az monitor action-group delete \
--name "ag-cost-alerts" \
--resource-group rg-cost-lab

# Excluir o grupo de recursos inteiro e todos os recursos
az group delete --name rg-cost-lab --yes --no-wait

echo "Limpeza concluída. Dados de custo ainda podem aparecer por 24-48 horas."

Recursos de aprendizagem