Monitorar seus Azure recursos e aplicativos

Use Azure Monitor para coletar logs, métricas e alertas em seus aplicativos JavaScript e os serviços de Azure dos quais eles dependem. Azure Monitor é o serviço de plataforma central que coleta e armazena sua telemetria. Você pode instrumentar seus aplicativos com o Application Insights. Você deve monitorar o serviço de aplicativo hospedado, os serviços de Azure aos quais o aplicativo se integra e o próprio código-fonte do aplicativo.

Entender logs, métricas e alertas

Telemetria é o conjunto de dados coletados de seus aplicativos e serviços para monitorar sua saúde, desempenho e uso. Em Azure, a telemetria é categorizada em logs, métricas e alertas.

Azure oferece quatro tipos de telemetria:

Tipo de telemetria O que te dá Onde encontrá-lo para cada serviço
Métricas Dados numéricos de série temporal (CPU, memória etc.) Métricas no portal ou na az monitor metrics CLI
Alertas Notificações proativas quando os limites são atingidos Alertas no portal ou az monitor metrics alert na linha de comando
Registros Eventos e diagnósticos baseados em texto (Web, aplicativo) Logs do Serviço de Aplicativos, Monitor de Funções, Diagnóstico de Apps de Contêiner
Logs personalizados Sua própria telemetria de aplicativo por meio do App Insights Tabela Logs (Rastreamento) do recurso do Application Insights

Escolha a telemetria certa para sua pergunta:

Cenário Use logs... Use métricas... Use alertas...
"Meu aplicativo Web iniciou e respondeu?" Logs do servidor Web do Serviço de Aplicativo (Logs) Não aplicável Não aplicável
"Minha função está atingindo o tempo limite ou falhando?" Logs de chamadas de função (Monitor) Métrica de duração da execução da função Alerta sobre "Erro de Função >0"
"Quão ocupado está meu serviço e ele pode ser dimensionado?" Não aplicável Rendimento do serviço/CPU nas métricas Alerta de escalonamento automático na CPU% > 70%
"Quais são as exceções que meu código está lançando?" Logs de rastreamento personalizados no Application Insights Não aplicável Alerta em "ServerExceptions >0"
"Excedi meus limites de transação ou cota?" Não aplicável Métricas relacionadas à cota (Transações, Restrição) Alerta em "ThrottlingCount >0"

Otimização de custos

Você pode reduzir significativamente o seu custo do Azure Monitor ao compreender as melhores práticas para opções de configuração e oportunidades para reduzir a quantidade de dados que ele coleta.

Habilitar registro em log e métricas para todos os recursos de Azure

Cada serviço do Azure possui seus próprios recursos de registros e métricas. Habilite logs em cada recurso do Azure para ter a telemetria necessária e monitorar toda a aplicação de ponta a ponta.

Criar recurso do Azure Monitor

Você pode criar um recurso Azure Monitor para coletar logs e métricas de seus recursos de Azure. Esse recurso normalmente é um espaço de trabalho do Log Analytics, que é onde os logs e as métricas são armazenados.

Você pode criar esse recurso de várias maneiras:

  • Azure portal: use o portal Azure para criar um workspace Log Analytics e definir as configurações de diagnóstico para seus recursos.
  • CLI do Azure: use o CLI do Azure para criar um workspace Log Analytics e definir as configurações de diagnóstico para seus recursos.
  • PowerShell: Use o PowerShell para criar um Log Analytics workspace e configurar configurações de diagnóstico para seus recursos.
  • Bicep: use modelos Bicep para definir e implantar seus recursos Azure Monitor declarativamente.

Criar um workspace Log Analytics usando o CLI do Azure

Use o CLI do Azure para criar um workspace Log Analytics, que é onde os logs e as métricas são armazenados. Exemplo:

# Variables
resourceGroup="myResourceGroup"
location="eastus"
workspaceName="myWorkspace"
webAppName="myWebApp"
diagName="${webAppName}/appServiceLogging"
SUBSCRIPTION_ID=$(az account show --query id -o tsv)

# 1) Create a Log Analytics workspace
workspaceId=$(az monitor log-analytics workspace create \
  --resource-group $resourceGroup \
  --workspace-name $workspaceName \
  --location $location \
  --query id -o tsv)

# 2) Enable diagnostic settings on your App Service
az monitor diagnostic-settings create \
  --name "$diagName" \
  --resource "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$resourceGroup/providers/Microsoft.Web/sites/$webAppName" \
  --workspace $workspaceId \
  --logs '[{"category": "Administrative", "enabled": true},{"category":"AppServiceConsoleLogs","enabled":true},{"category":"AppServiceHTTPLogs","enabled":true}]' \
  --metrics '[{"category":"AllMetrics","enabled":true}]'

Criar um espaço de trabalho do Log Analytics usando Bicep

Use Bicep para definir e implantar seus recursos de Azure Monitor declarativamente. Este exemplo cria um workspace Log Analytics e define as configurações de diagnóstico para um Serviço de Aplicativo.

Inclua log, métricas e alertas em seus modelos de IaC com uma referência de recurso Bicep diagnosticSettings. Exemplo (Bicep):

param webAppName string

resource webApp 'Microsoft.Web/sites@2022-09-01' existing = {
  name: webAppName
}

resource logAnalytics 'Microsoft.OperationalInsights/workspaces@2022-10-01' = {
  name: 'myWorkspace'
  location: resourceGroup().location
}

resource diagSettings 'Microsoft.Insights/diagnosticSettings@2021-05-01-preview' = {
  name: '${webApp.name}/appServiceLogging'
  properties: {
    workspaceId: logAnalytics.id
    logs: [
      { category: 'AppServiceConsoleLogs'; enabled: true }
      { category: 'AppServiceHTTPLogs'; enabled: true }
    ]
    metrics: [
      { category: 'AllMetrics'; enabled: true }
    ]
  }
}

Criar alertas para seus recursos

Você pode configurar alertas para métricas no portal Azure ou usando o CLI do Azure. Os alertas podem incluir métricas específicas, fluxos de comunicação (como email) e frequência.

Use os exemplos a seguir para criar alertas de métrica no portal ou programaticamente:

  • CLI do Azure: configuração rápida por meio de az monitor metrics alert
  • Bicep: definição declarativa de IaC para Microsoft.Insights/metricAlerts

Os alertas podem especificar métricas de destino, canais de notificação (email, webhook), severidade, frequência de avaliação e grupos de ações.

az monitor metrics alert create \
  --name HighCpuAlert \
  --resource-group MyResourceGroup \
  --scopes /subscriptions/{sub}/resourceGroups/MyResourceGroup/providers/Microsoft.Web/sites/myApp \
  --condition "avg CpuPercentage > 70" \
  --description "Alert when CPU goes above 70%" \
  --severity 2 \
  --window-size 5m \
  --evaluation-frequency 1m \
  --action /subscriptions/{sub}/resourceGroups/MyResourceGroup/providers/microsoft.insights/actionGroups/MyActionGroup
resource cpuAlert 'Microsoft.Insights/metricAlerts@2018-03-01' = {
  name: 'highCpuAlert'
  location: resourceGroup().location
  properties: {
    description: 'Alert when CPU goes above 70%'
    severity: 2
    enabled: true
    scopes: [
      webApp.id
    ]
    evaluationFrequency: 'PT1M'
    windowSize: 'PT5M'
    criteria: {
      allOf: [
        {
          criterionType: 'StaticThresholdCriterion'
          name: 'HighCpu'
          metricName: 'CpuPercentage'
          metricNamespace: 'Microsoft.Web/sites'
          operator: 'GreaterThan'
          threshold: 70
          timeAggregation: 'Average'
        }
      ]
    }
    autoMitigate: false
    actions: [
      {
        actionGroupId: '/subscriptions/{sub}/resourceGroups/MyResourceGroup/providers/microsoft.insights/actionGroups/MyActionGroup'
      }
    ]
  }
}

Exibir dados do log

Para exibir dados de log no portal Azure, navegue até o workspace Log Analytics e selecione Logs. Você pode executar consultas no Kusto Query Language (KQL) nos logs.

Transmitir logs

Use a tabela a seguir para saber mais sobre como transmitir logs.

servidor MCP Azure

Ao desenvolver localmente, você pode usar a ferramenta Azure MCP Servermonitor para consultar logs sem sair do IDE. Depois de instalar o servidor, exemplos de prompts do Copilot incluem:

  • Listar workspaces: "Mostre-me todos os workspaces de Log Analytics na minha assinatura."
  • Localizar tabelas: "Listar todas as tabelas na minha área de trabalho 'security-logs'"
  • Consulta complexa: "Mostre-me a tendência de uso da CPU para meus servidores Web nas últimas 24 horas"

Adicionar log ao seu código

Para o monitoramento de aplicativos, o Application Insights pode fornecer:

  • Registro padrão no serviço Azure e no seu código-fonte, conforme a inicialização.
  • Registro em log personalizado tanto no pipeline de implantação quanto no código-fonte.

Registro de console padrão (stdout/stderr)

Aplicativos Web do Azure e as Azure Functions fornecerão automaticamente log personalizado para stdout e stderr, se você usar as funções de log corretas.

  • Os aplicativos Web usam console.log('your message here').
  • Os aplicativos de funções usam context.log('your message here').

Adicionar log personalizado do Application Insights

Você pode adicionar um registro em log personalizado mais avançado usando Application Insights em Azure Monitor. O Application Insights oferece cenários de servidor (Node.js) e cliente (navegador):

  • Adicione o SDK do Application Insights ao código-fonte.
  • Faça logon do Node.js usando um pacote npm.
    • Certifique-se de configurar o SDK Node.js com enableAutoCollectConsole: true a fim de coletar logs de console personalizados.
  • Faça logon do código do cliente usando um pacote npm.
  • Faça logon do cluster Kubernetes ou Azure máquina virtual.

Habilitar logs de pipeline do SDK (@Azure/logger)

Controlar a verbosidade do SDK usando a AZURE_LOG_LEVEL variável de ambiente ou o @azure/logger pacote npm:

import { setLogLevel } from "@azure/logger";
// Options: 'error', 'warning', 'info', 'verbose'
setLogLevel(process.env.AZURE_LOG_LEVEL || "info");

Configurar o SDK do Application Insights Node.js

Inicialize o SDK do Application Insights para Node.js com amostragem, coleta de dependências e captura de logs do console.

import appInsights from "applicationinsights";
appInsights
  .setup(process.env.APPLICATIONINSIGHTS_CONNECTION_STRING || "<YOUR_CONNECTION_STRING>")
  .setAutoCollectConsole(true, true)        // collect console.log
  .setAutoCollectDependencies(true)        // track outgoing requests
  .setInternalLogging(false, true)         // SDK internal logs
  .start();

// Optional: add custom properties to all telemetry
appInsights.defaultClient.commonProperties = { serviceName: "my-service" };

Adicionar correlação e rastreamento distribuído

O SDK do Application Insights injeta automaticamente a operação e as IDs de correlação em solicitações. Para adicionar correlação ou propriedades personalizadas:

appInsights.defaultClient.trackTrace({
  message: "Custom trace",
  properties: { userId: user.id }
});

Saiba mais: diretrizes de rastreamento distribuído

Limpar telemetria em scripts de desenvolvimento

Verifique se os logs são enviados antes da saída do processo durante o desenvolvimento local:

appInsights.defaultClient.flush({
  callback: () => process.exit(0)
});

Configuração de telemetria do lado do cliente

Para aplicativos cliente, use o @microsoft/applicationinsights-web pacote :

import { ApplicationInsights } from "@microsoft/applicationinsights-web";
const ai = new ApplicationInsights({ config: {
  connectionString: "<YOUR_CONNECTION_STRING>",
  enableAutoRouteTracking: true
}});
ai.loadAppInsights();