Monitorize os seus recursos e aplicações Azure

Use o Azure Monitor para recolher logs, métricas e alertas entre as suas aplicações JavaScript e os serviços Azure de que dependem. Azure Monitor é o serviço central da plataforma que recolhe e armazena a sua telemetria. Você pode instrumentar seus aplicativos com o Application Insights. Deves monitorizar o teu serviço de aplicação alojado, os serviços do Azure com que a aplicação se integra e o próprio código-fonte da aplicação.

Compreender logs, métricas e alertas

Telemetria é o conjunto de dados recolhidos das suas aplicações e serviços para monitorizar a sua integridade, desempenho e utilização. No Azure, a telemetria é categorizada em logs, métricas e alertas.

O Azure oferece quatro tipos de telemetria:

Tipo de telemetria O que lhe dá Onde encontrá-lo em cada serviço
Métricas Dados numéricos de séries cronológicas (CPU, memória, etc.) Métricas no portal ou az monitor metrics CLI
Alertas Notificações proativas quando os limites são atingidos Alertas no portal ou az monitor metrics alert CLI
Registos Eventos e diagnósticos baseados em texto (Web, aplicativo) Logs do App Service Aplicações, Monitor de Funções, Diagnóstico de Container Apps
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 a sua pergunta:

Cenário Use registos... Usa métricas... Usa alertas...
Será que a minha aplicação web começou e respondeu? Registos do servidor web do App Service (Logs) N/A N/A
"A minha função está a atingir o tempo limite ou a falhar?" Logs de invocação de função (Monitor) Métrica de duração de execução da função Alerta sobre "Erros de função >0"
"Quão carregado está o meu serviço e ele pode expandir?" N/A Desempenho/CPU do serviço nas métricas Alerta de dimensionamento automático na CPU% > 70%
"Que exceções meu código está lançando?" Registos de rastreamento personalizados no Application Insights N/A Alerta sobre "ServerExceptions >0"
"Excedi os meus limites de transação ou quota?" N/A Métricas relacionadas a cotas (transações, limitação) Alerta sobre "ThrottlingCount >0"

Otimização de custos

Pode reduzir significativamente o seu custo para Azure Monitor compreendendo melhores práticas para opções de configuração e oportunidades para reduzir a quantidade de dados que recolhe.

Ative o registo e métricas para todos os recursos do Azure

Cada serviço no Azure tem as suas próprias capacidades de registo e métricas. Ative o login em cada recurso Azure para garantir que tem a telemetria necessária para monitorizar toda a sua aplicação de ponta a ponta.

Criar recurso do Azure Monitor

Pode criar um recurso Azure Monitor para recolher logs e métricas dos seus recursos Azure. Este recurso é tipicamente um espaço de trabalho de Log Analytics, onde os registos e métricas são armazenados.

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

  • Portal Azure: Utilize o portal Azure para criar um espaço de trabalho do Log Analytics e configurar definições de diagnóstico para os seus recursos.
  • CLI do Azure: Use o CLI do Azure para criar um espaço de trabalho Log Analytics e configurar as definições de diagnóstico dos seus recursos.
  • PowerShell: Use PowerShell para criar um espaço de trabalho Log Analytics e configurar as definições de diagnóstico para os seus recursos.
  • Bicep: Use modelos de Bicep para definir e implementar os seus recursos de Azure Monitor de forma declarativa.

Crie um espaço de trabalho de Log Analytics usando a CLI do Azure

Use a CLI do Azure para criar um espaço de trabalho de Log Analytics, que é onde os registos e 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}]'

Crie um espaço de trabalho de Log Analytics usando o Bicep

Use o Bicep para definir e implementar os seus recursos do Azure Monitor de forma declarativa. Este exemplo cria um espaço de trabalho de Log Analytics e configura as definições de diagnóstico para um Serviço de Aplicações.

Inclua registos, métricas e alertas nos seus modelos IaC com uma referência ao 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 }
    ]
  }
}

Crie alertas para os seus recursos

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 e-mail) 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 via 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 (e-mail, webhook), gravidade, frequência de avaliação e grupos de ação.

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'
      }
    ]
  }
}

Ver os dados do registo

Para visualizar os dados de registo no portal Azure, navegue até ao seu espaço de trabalho de Log Analytics e selecione Logs. Você pode executar consultas KQL (Kusto Query Language) nos logs.

Transmitir registos

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

Azure MCP Server (Servidor MCP do Azure)

Ao desenvolver localmente, pode usar a ferramenta Azure MCP Servermonitor para consultar logs sem sair do seu IDE. Depois de instalar o servidor, incluídos estão exemplos de prompts do Copilot:

  • Lista de espaços de trabalho: "Mostre-me todos os espaços de trabalho do Log Analytics na minha subscrição."
  • Localizar tabelas: "Listar todas as tabelas no meu espaço de trabalho 'security-logs'"
  • Consulta complexa: "Mostre-me a tendência de uso da CPU para meus servidores Web nas últimas 24 horas"

Adicionar registo ao seu código

Para o registro em log de aplicativos, o Application Insights pode fornecer:

  • Login padrão no serviço Azure e no teu código-fonte, dependendo da inicialização.
  • Registo personalizado nos logs do seu pipeline de implantação e no seu código-fonte.

Registro de console padrão (stdout/stderr)

Aplicações web do Azure e Funções do Azure fornecem automaticamente registos personalizados para stdout e stderr, se usar as funções de registo corretas:

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

Adicionar log personalizado do Application Insights

Pode adicionar registos personalizados mais ricos usando Application Insights no Azure Monitor. O Application Insights oferece cenários de servidor (Node.js) e cliente (navegador):

  • Adicione o SDK do Application Insights ao seu código-fonte.
  • Registre-se a partir de Node.js usando um pacote npm.
    • Certifique-se de configurar o SDK do Node.js com enableAutoCollectConsole: true para coletar registos da consola personalizados.
  • Faça log a partir do código do cliente usando um pacote npm.
  • Regista a partir do teu cluster Kubernetes ou da máquina virtual Azure.

Ativar os logs da pipeline do SDK (@Azure/logger)

Controle 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 Application Insights for Node.js SDK com amostragem, coleta de dependências e captura de registos 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 IDs de operação e correlação em solicitações. Para adicionar propriedades ou correlação personalizadas:

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

Saiba mais: Guia de rastreamento distribuído

Liberar telemetria em scripts de desenvolvimento

Certifique-se de que os logs sejam 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();