Desafio 14: Azure Monitor & alerts
60 minutos | Custo estimado: ~$0,10 | Peso no Exame: 10–15%
Cenário
A Contoso precisa de observabilidade em todo o ambiente Azure. O mandato do CTO é claro: "Se você não pode monitorar, não pode gerenciar." Seu trabalho é configurar o Azure Monitor, criar alertas e provar que a equipe consegue detectar e responder a problemas antes dos clientes.
Habilidades do exame cobertas
- Interpretar métricas no Azure Monitor
- Configurar configurações de log no Azure Monitor
- Consultar e analisar logs no Azure Monitor (KQL)
- Configurar regras de alerta, grupos de ação e regras de processamento de alertas
- Configurar monitoramento para VMs, armazenamento e redes usando Azure Monitor Insights
- Usar Azure Network Watcher e Connection Monitor
Referência sysadmin ➜ Azure
| On-Prem / Tradicional | Equivalente no Azure |
|---|---|
| Nagios / Zabbix | Azure Monitor |
| syslog / Visualizador de Eventos | Log Analytics workspace |
| Dashboards Grafana | Azure Monitor Workbooks |
| Alertas por email/PagerDuty | Action Groups |
| Wireshark | Captura de pacotes do Network Watcher |
Configuração
# Variables
RG="rg-az104-challenge14"
LOCATION="eastus"
# Create resource group
az group create --name $RG --location $LOCATION
Tarefas
Tarefa 1: criar um Log Analytics workspace
az monitor log-analytics workspace create \
--resource-group $RG \
--workspace-name law-contoso \
--location $LOCATION
Tarefa 2: implantar uma VM e habilitar VM Insights
Implante uma VM e habilite o Azure Monitor VM Insights para coletar dados de desempenho e dependência.
az vm create \
--resource-group $RG \
--name vm-monitored \
--image Ubuntu2204 \
--size Standard_B2s \
--admin-username azureuser \
--generate-ssh-keys
Habilite o VM Insights pelo Portal do Azure: VM → Insights → Habilitar.
O VM Insights instala automaticamente o Azure Monitor Agent e configura uma regra de coleta de dados (DCR).
Tarefa 3: explorar métricas do Azure Monitor
Navegue até Azure Monitor → Métricas (ou a aba Métricas da VM) e explore:
- Percentage CPU | Utilização atual da CPU
- Available Memory Bytes | Pressão de memória
- Disk Read/Write Operations/Sec | I/O de disco
Tente fixar um gráfico em um dashboard.
Tarefa 4: configurar diagnostic settings
Envie logs e métricas da plataforma para o Log Analytics:
WORKSPACE_ID=$(az monitor log-analytics workspace show \
--resource-group $RG \
--workspace-name law-contoso \
--query id -o tsv)
VM_ID=$(az vm show \
--resource-group $RG \
--name vm-monitored \
--query id -o tsv)
# Enable diagnostic settings (via portal for VMs, or CLI for supported resources)
# For a storage account example:
az monitor diagnostic-settings create \
--name diag-to-law \
--resource $VM_ID \
--workspace $WORKSPACE_ID \
--metrics '[{"category":"AllMetrics","enabled":true}]'
Pode levar 15–30 minutos para os dados de log aparecerem no Log Analytics após habilitar as configurações de diagnóstico. Isso é normal.
Tarefa 5: escrever consultas KQL
Abra Log Analytics → Logs e execute estas consultas:
// Top 10 processes by CPU usage
Perf
| where ObjectName == "Processor" and CounterName == "% Processor Time"
| where InstanceName == "_Total"
| summarize AvgCPU = avg(CounterValue) by Computer
| top 10 by AvgCPU desc
// Find error events in the last 24 hours
Syslog
| where SeverityLevel == "error" or SeverityLevel == "err"
| where TimeGenerated > ago(24h)
| project TimeGenerated, Computer, SyslogMessage, Facility
| order by TimeGenerated desc
| take 50
// Heartbeat | which VMs are reporting?
Heartbeat
| summarize LastHeartbeat = max(TimeGenerated) by Computer
| extend Status = iff(LastHeartbeat < ago(5m), "Offline", "Online")
| order by Status asc
Mais padrões KQL úteis
// Count events by severity over time (for charting)
Syslog
| where TimeGenerated > ago(7d)
| summarize Count = count() by bin(TimeGenerated, 1h), SeverityLevel
| render timechart
// Memory usage trend
Perf
| where ObjectName == "Memory" and CounterName == "% Used Memory"
| summarize AvgMem = avg(CounterValue) by bin(TimeGenerated, 15m), Computer
| render timechart
Tarefa 6: criar um action Group
Crie um grupo de ação que envia notificações por email:
az monitor action-group create \
--resource-group $RG \
--name ag-ops-team \
--short-name OpsTeam \
--action email ops-email yourname@contoso.com
Tarefa 7: criar um alerta de métrica
Crie um alerta que dispara quando a CPU excede 80% por 5 minutos:
VM_ID=$(az vm show --resource-group $RG --name vm-monitored --query id -o tsv)
az monitor metrics alert create \
--resource-group $RG \
--name alert-high-cpu \
--scopes $VM_ID \
--condition "avg Percentage CPU > 80" \
--window-size 5m \
--evaluation-frequency 1m \
--action ag-ops-team \
--severity 2 \
--description "CPU usage exceeded 80% for 5 minutes"
Tarefa 8: criar um alerta de Log
Crie um alerta baseado em uma consulta KQL | por exemplo, detectar um padrão específico de erro nos logs:
Dica
Use o Portal do Azure: Monitor → Alertas → Criar → Regra de alerta de log
- Escopo: Seu Log Analytics workspace
- Condição: Pesquisa de log personalizada com KQL
- Consulta:
Syslog | where SeverityLevel == "error" | where TimeGenerated > ago(5m) - Limite: Maior que 0
- Grupo de Ação:
ag-ops-team
Tarefa 9: habilitar Storage Insights
- Crie uma conta de armazenamento (se você não tiver uma)
- Navegue até Azure Monitor → Contas de armazenamento (ou Conta de armazenamento → Insights)
- Explore: métricas de transação, latência, disponibilidade, tendências de capacidade
Tarefa 10: usar o Network watcher
Explore estas ferramentas do Network Watcher:
- Topologia | Visualize sua VNet e recursos conectados
- IP Flow Verify | Teste se o tráfego é permitido ou negado entre dois endpoints
- Connection Troubleshoot | Verifique a conectividade de uma VM para um destino
# IP flow verify example
az network watcher test-ip-flow \
--direction Inbound \
--local 10.0.0.4:80 \
--protocol TCP \
--remote 0.0.0.0:* \
--vm vm-monitored \
--resource-group $RG
Quebre & conserte
Quebre
- Alerta sem ação | Crie uma regra de alerta mas não anexe um grupo de ação. Acione a condição. Observe: o alerta dispara no portal mas nenhuma notificação é enviada. Por quê?
- Resultados de log vazios | Consulte logs imediatamente após habilitar as configurações de diagnóstico. Os resultados estão vazios. Isso está quebrado?
Conserte
- Anexe o grupo de ação à regra de alerta
- Entenda que a ingestão de logs tem um atraso (15–30 min) | isso é comportamento esperado, não um bug
- Use a tabela Heartbeat para verificar que o agente está conectado
Teste seus conhecimentos
-
Qual é a diferença entre Métricas e Logs no Azure Monitor?
- Métricas = dados numéricos de séries temporais, quase em tempo real, armazenados em um banco de dados de séries temporais
- Logs = texto estruturado/não estruturado, armazenado no Log Analytics, consultado com KQL
-
Quais são os operadores KQL essenciais para o exame?
where| filtrar linhassummarize| agregar (count, avg, sum, max)ago()| tempo relativo ao agora (ex:ago(1h),ago(7d))project| selecionar colunasrender| visualizar resultados
-
Quais são os níveis de severidade de alerta?
- 0 = Crítico, 1 = Erro, 2 = Aviso, 3 = Informativo, 4 = Detalhado
-
O que são regras de processamento de alertas?
- Regras que modificam o comportamento de alertas disparados (ex: suprimir notificações durante janelas de manutenção, adicionar grupos de ação a todos os alertas em um escopo)
Limpeza
az group delete --name $RG --yes --no-wait
Critérios de sucesso
- ⬜Log Analytics workspace criado
- ⬜VM Insights habilitado e coletando dados
- ⬜Métricas do Azure Monitor exploradas e compreendidas
- ⬜Configurações de diagnóstico configuradas
- ⬜Consultas KQL executadas com sucesso
- ⬜Grupo de ação criado com notificação por email
- ⬜Alerta de métrica criado (CPU > 80%)
- ⬜Alerta de log criado para padrões de erro
- ⬜Storage Insights explorado
- ⬜Ferramentas do Network Watcher usadas (topologia, IP flow verify, connection troubleshoot)
- ⬜Cenários de Quebre & Conserte concluídos
- ⬜Recursos limpos