🟠 Intermédio 🕐 ~50 min Módulo 7 de 7 · Final

Monitorização
e Custos

Monitorizar a infraestrutura é tão importante quanto criá-la. Sem visibilidade, não sabes quando algo falha ou está prestes a falhar — e sem controlo de custos, as surpresas na fatura podem ser desagradáveis. Neste módulo final fechamos o ciclo.

1 Azure Monitor

O Azure Monitor é a plataforma central de observabilidade do Azure. Recolhe, analisa e actua sobre dados de telemetria de recursos Azure, aplicações e ambientes on-premises.

Arquitectura do Azure Monitor
🖥️ VMs
🌐 Apps
🗄️ Bases de dados
🌍 On-premises
↓ ↓ ↓ ↓
📊 Azure Monitor
Recolha · Análise · Visualização · Acção
↙ ↓ ↘
📈 Metrics
📋 Log Analytics
🔔 Alertas
📊 Dashboards
📈

Metrics

Valores numéricos em série temporal (CPU %, RAM, requests/s). Leves, recolhidos automaticamente. Retidos 93 dias.

📋

Logs

Registos de eventos estruturados com contexto rico. Consultados com KQL (Kusto Query Language). Retidos conforme configuração.

🔍

Application Insights

APM (Application Performance Monitoring) para aplicações web. Rastreamento de pedidos, dependências, erros e utilizadores.

🗺️

Service Map

Descoberta automática de dependências entre componentes. Visualiza a arquitectura real da tua aplicação.

2 Métricas

As métricas são valores numéricos que representam o estado de um recurso num momento no tempo. São recolhidas automaticamente de todos os recursos Azure — não precisas de configurar nada para começar a vê-las.

1

Abrir Metrics Explorer

Portal Azure → selecciona qualquer recurso (ex: uma VM) → Metrics no menu lateral. Ou pesquisa "Monitor" → Metrics.

2

Escolher o recurso e a métrica

Scope: selecciona o recurso · Metric namespace: ex "Virtual Machine Host" · Metric: "Percentage CPU" · Aggregation: Average

3

Definir o intervalo de tempo

Usa o selector de tempo no canto superior direito: Last 1 hour, Last 24 hours, Last 30 days ou intervalo personalizado.

4

Guardar no Dashboard

Clica em "Pin to dashboard" para adicionar o gráfico ao teu dashboard personalizado. Cria um dashboard por ambiente/projecto.

3 Log Analytics e KQL

O Log Analytics Workspace é o repositório central de logs do Azure Monitor. Os logs são consultados com KQL (Kusto Query Language) — uma linguagem poderosa mas com curva de aprendizagem suave.

Azure CLI — Criar Log Analytics Workspace
# Criar workspace
az monitor log-analytics workspace create \
  --workspace-name law-lab-mod7 \
  --resource-group rg-lab-mod3 \
  --location PortugalCentral \
  --retention-time 30   # dias de retenção (padrão: 30, máx: 730)

# Ligar VM ao workspace (activar diagnóstico)
az monitor diagnostic-settings create \
  --name diag-vm-lab \
  --resource $(az vm show --resource-group rg-lab-mod3 --name vm-lab01 --query id -o tsv) \
  --workspace $(az monitor log-analytics workspace show \
    --workspace-name law-lab-mod7 \
    --resource-group rg-lab-mod3 --query id -o tsv) \
  --metrics '[{"category":"AllMetrics","enabled":true}]'

KQL — Consultas essenciais

KQL — Kusto Query Language — Exemplos práticos
// Ver métricas de CPU das VMs nas últimas 24h (percentis)
Perf
| where ObjectName == "Processor" and CounterName == "% Processor Time"
| where TimeGenerated > ago(24h)
| summarize avg(CounterValue), max(CounterValue) by Computer, bin(TimeGenerated, 1h)
| render timechart

// Ver todos os erros das últimas 6 horas
AzureDiagnostics
| where Level == "Error"
| where TimeGenerated > ago(6h)
| project TimeGenerated, Resource, Category, OperationName, ResultDescription
| order by TimeGenerated desc

// Top 10 recursos com mais actividade
AzureActivity
| where TimeGenerated > ago(7d)
| summarize count() by ResourceGroup
| top 10 by count_
| render barchart

// Logins falhados nas últimas 24h
SigninLogs
| where TimeGenerated > ago(24h)
| where ResultType != "0"  // 0 = sucesso, qualquer outro = falha
| summarize Falhas=count() by UserPrincipalName, IPAddress
| sort by Falhas desc

4 Alertas

Os alertas notificam-te (email, SMS, webhook, Teams...) quando uma condição específica é cumprida — CPU acima de 90%, VM parada, custo mensal ultrapassado, etc.

📊

Metric Alert

Dispara quando uma métrica (CPU, RAM, requests) excede um limiar. Resolução automática quando volta ao normal.

📋

Log Alert

Dispara com base em consultas KQL. Ex: "mais de 10 erros 500 em 5 minutos".

🏥

Activity Log Alert

Dispara com eventos administrativos: VM eliminada, role atribuída, policy alterada.

📣

Action Group

Define o que acontece quando o alerta dispara: email, SMS, webhook, Azure Function, ticket ITSM.

Azure CLI — Criar alerta de CPU alta
# 1. Criar Action Group (quem recebe a notificação)
az monitor action-group create \
  --name ag-lab-email \
  --resource-group rg-lab-mod3 \
  --short-name ag-lab \
  --action email meu-email meuendereco@email.com

# 2. Criar alerta de métrica: CPU > 80% por 5 minutos
az monitor metrics alert create \
  --name alerta-cpu-alta \
  --resource-group rg-lab-mod3 \
  --scopes $(az vm show --resource-group rg-lab-mod3 --name vm-lab01 --query id -o tsv) \
  --condition "avg Percentage CPU > 80" \
  --window-size 5m \
  --evaluation-frequency 1m \
  --action ag-lab \
  --description "Alerta: CPU da VM Lab acima de 80%"

# 3. Listar alertas activos
az monitor alert list \
  --resource-group rg-lab-mod3 \
  --output table

5 Gestão de Custos (Cost Management)

O Azure Cost Management + Billing é a ferramenta essencial para compreender, analisar e controlar os gastos Azure. Disponível para todos os utilizadores — mesmo na conta gratuita.

1

Aceder ao Cost Management

Portal Azure → pesquisa Cost Management → Cost Management + Billing → selecciona a tua subscrição → Cost analysis

2

Analisar gastos por serviço

Na vista Cost analysis, muda o agrupamento para "Service name" — vês exactamente o que cada serviço está a custar. Filtra por grupo de recursos para isolar um projecto.

3

Criar um Orçamento (Budget)

Cost Management → Budgets → + Add → Scope: subscrição · Valor: 10 USD (seguro para avaliação) · Alerta a 80% e 100%.

4

Ver previsão de custo

Na análise de custo, o Azure mostra a previsão para o resto do mês com base no consumo actual. Se a previsão exceder o orçamento, actua imediatamente.

⛔
Atenção: os Budgets do Azure não param recursos automaticamente! Um Budget envia alertas mas não bloqueia a criação de recursos nem para serviços quando o limite é atingido. Para controlo real, usa Azure Policy para bloquear SKUs caros, ou configura Logic Apps/Functions para parar recursos ao atingir limites.

6 Calculadora de Preços Azure

Antes de criar qualquer infraestrutura em produção, estima os custos na Azure Pricing Calculator em azure.microsoft.com/pricing/calculator.

🧮

Pricing Calculator

Estima custos antes de criar recursos. Exporta como Excel. Compara cenários alternativos.

azure.microsoft.com/pricing/calculator
💹

TCO Calculator

Total Cost of Ownership — compara o custo de manter servidores on-premises vs. migrar para Azure.

azure.microsoft.com/pricing/tco
📊

Cost Advisor

Recomendações automáticas de poupança: VMs subdimensionadas, Reserved Instances, recursos não utilizados.

🏷️

Tags de Custo

Marca recursos com tags (Projecto, Departamento, Ambiente) para agrupar e reportar custos por centro de custo.

7 Estratégias de Otimização de Custos

EstratégiaPoupança típicaComo implementar
Reserved Instances40-72%Compromisso de 1 ou 3 anos para VMs ou DBs previsíveis. Paga antecipadamente ou mensalmente.
Azure Hybrid Benefit40-85%Usa licenças Windows Server ou SQL Server existentes para reduzir custo das VMs.
Spot VMsaté 90%VMs com capacidade excedentária, preço variável. Para workloads tolerantes a interrupções (batch, CI/CD).
Auto-shutdown30-60%Para VMs de dev/test fora do horário de trabalho (ex: desligar às 19h, ligar às 8h).
Right-sizing10-30%Redimensionar VMs sobredimensionadas. O Azure Advisor sugere tamanhos mais adequados com base no histórico.
Lifecycle policiesVariableMover dados Storage para Cool/Archive automaticamente. Para blobs raramente acedidos, reduz 50-90%.
Eliminar recursos não usados100%IPs públicos soltos, discos sem VM, Load Balancers sem backend — custam mas não servem nada.
Azure CLI — Encontrar recursos não utilizados
# Listar IPs públicos não associados (custo sem utilidade)
az network public-ip list \
  --query "[?ipConfiguration==null].{Nome:name, IP:ipAddress, Grupo:resourceGroup}" \
  --output table

# Listar discos não associados a nenhuma VM
az disk list \
  --query "[?managedBy==null].{Nome:name, Tamanho:diskSizeGb, SKU:sku.name, Grupo:resourceGroup}" \
  --output table

# Listar VMs paradas (não deallocated — ainda a custar)
az vm list \
  --show-details \
  --query "[?powerState=='VM stopped'].{Nome:name, Estado:powerState, Grupo:resourceGroup}" \
  --output table

# Ver recomendações do Azure Advisor (inclui custos)
az advisor recommendation list \
  --category Cost \
  --output table
Laboratório Final

Lab 7 — Monitorização completa, alertas e análise de custos

Passo a passo

Dashboard de monitorização + controlo de custos

  1. Cria um Log Analytics Workspace: az monitor log-analytics workspace create --workspace-name law-lab-final --resource-group rg-lab-mod3 --location PortugalCentral
  2. No portal, vai a Azure Monitor → Metrics. Selecciona a VM vm-lab01 como scope. Adiciona a métrica "Percentage CPU". Anota o valor médio das últimas 24h.
  3. Cria um Action Group com o teu email: az monitor action-group create --name ag-final --resource-group rg-lab-mod3 --short-name ag-final --action email meu-alerta meu@email.com
  4. Cria um alerta de CPU: az monitor metrics alert create --name alerta-cpu-lab --resource-group rg-lab-mod3 --scopes $(az vm show -g rg-lab-mod3 -n vm-lab01 --query id -o tsv) --condition "avg Percentage CPU > 80" --window-size 5m --evaluation-frequency 1m --action ag-final
  5. Vai a Cost Management + Billing → Cost analysis. Agrupa por "Service name". Que serviços estão a custar mais? Qual o custo total acumulado até agora?
  6. Cria um Budget de 5 USD: Cost Management → Budgets → + Add → Scope: subscrição · Valor: 5 USD · Alertas: 80% e 100%.
  7. Na linha de comandos: az network public-ip list --query "[?ipConfiguration==null].{Nome:name}" --output table — há IPs soltos a custar desnecessariamente?
  8. 🧹 Limpeza final: az group delete --name rg-lab-mod3 --yes --no-wait. Isto elimina TODOS os recursos criados durante o curso de uma vez!
🎓
Parabéns! Concluíste os 7 módulos do curso Azure · Edu PT. Agora tens as bases para explorar o Azure de forma autónoma, preparar a certificação AZ-900 e construir infraestruturas reais na cloud.
Quiz Final

Verifica os teus conhecimentos — Módulo 7 e revisão geral

1. Qual a diferença entre Métricas e Logs no Azure Monitor?

2. Um Budget Azure de 50 USD foi configurado com alerta a 100%. O que acontece quando os gastos atingem 50 USD?

3. (Revisão geral) Uma empresa tem VMs que só são usadas durante o horário comercial (9h-18h, dias úteis). Qual a melhor estratégia para reduzir custos?

8 Próximos Passos

Concluíste o curso Azure · Edu PT! Aqui ficam os caminhos recomendados para continuar a aprender:

Certificações Microsoft Azure

Fundamentals
AZ-900

Azure Fundamentals

Conceitos cloud, serviços Azure, segurança, privacidade, compliance e preços. O ponto de partida perfeito após este curso.

Associate
AZ-104

Azure Administrator

Gerir identidades, governança, armazenamento, compute, redes e monitorização. Para administradores de sistemas.

Associate
AZ-204

Azure Developer

Desenvolver soluções cloud, integrar serviços, implementar segurança e monitorização em aplicações.

Associate
AZ-305

Azure Architect

Arquitectar soluções Azure — identidade, governança, dados, continuidade, infra e aplicações.

Expert
AZ-400

DevOps Engineer

Azure DevOps, GitHub Actions, pipelines CI/CD, IaC com Terraform e Bicep, segurança DevSecOps.

Fundamentals
AI-900

AI Fundamentals

Conceitos de IA, machine learning e serviços cognitivos Azure. Bom complemento após o AZ-900.

🎓
Recursos de estudo gratuitos: Microsoft Learn tem percursos de aprendizagem estruturados e gratuitos para todas as certificações. Os exames custam ~165 EUR mas há vouchers de desconto frequentes através de eventos Microsoft e programas para estudantes.

Tópicos avançados para explorar

🏗️

Azure Bicep / Terraform

Infraestrutura como código (IaC) — define toda a infraestrutura em ficheiros declarativos e versiona no Git.

🔄

Azure DevOps / GitHub Actions

Pipelines CI/CD para automatizar build, test e deploy de aplicações e infraestrutura.

🤖

Azure AI / OpenAI

Azure OpenAI Service, Cognitive Services, Machine Learning Studio — IA como serviço.

🗄️

Azure SQL / Cosmos DB

Bases de dados geridas — SQL Database, PostgreSQL Flexible Server, Cosmos DB para NoSQL global.

📡

Azure Service Bus / Event Grid

Mensageria empresarial e eventos — arquitecturas event-driven e microsserviços desacoplados.

🏢

Azure Arc

Gere recursos fora do Azure (on-premises, AWS, GCP) a partir do portal Azure com políticas e monitoring unificados.