Supervisión de los recursos y aplicaciones de Azure

Use Azure Monitor para recopilar registros, métricas y alertas en las aplicaciones de JavaScript y los servicios de Azure de los que dependen. Azure Monitor es el servicio de plataforma central que recopila y almacena la telemetría. Puede instrumentar las aplicaciones con Application Insights. Debe supervisar el servicio de aplicación hospedado, los servicios Azure con los que se integra la aplicación y el propio código fuente de la aplicación.

Descripción de los registros, las métricas y las alertas

La telemetría es los datos recopilados de las aplicaciones y los servicios para supervisar su estado, rendimiento y uso. En Azure, la telemetría se clasifica en registros, métricas y alertas.

Azure ofrece cuatro tipos de telemetría:

Tipo de telemetría Lo que te da Dónde encontrarlo para cada servicio
Métricas Datos numéricos, de serie temporal (CPU, memoria, etc.) Métricas en el portal o az monitor metrics la CLI
Alertas Notificaciones proactivas cuando se alcanzan umbrales Alertas en el portal o az monitor metrics alert CLI
Registros Eventos y diagnósticos basados en texto (web, aplicación) Registros de App Service, Monitor de Functions, Diagnósticos de Container Apps
Registros personalizados Telemetría de su propia aplicación a través de App Insights Tabla de registros (seguimiento) del recurso de Application Insights

Elija la telemetría correcta para su pregunta:

Escenario Usa registros... Usa métricas... Utiliza alertas...
"¿Mi aplicación web se inició y respondió?" Registros del servidor web de App Service No disponible No disponible
"¿Se agota el tiempo de espera o se produce un error en mi función?" Registros de invocación de funciones (Monitor) Métrica de duración de ejecución de funciones Alerta sobre "Errores de función >0"
"¿Qué tan ocupado es mi servicio y puede escalar?" No disponible Rendimiento del servicio/CPU en métricas Alerta de escalado automático en CPU% > 70%
"¿Qué excepciones produce mi código?" Registros de seguimiento personalizados en Application Insights No disponible Alerta sobre "ServerExceptions >0"
"¿He superado mis límites de transacción o cuota?" No disponible Métricas relacionadas con la cuota (transacciones, limitación) Alerta sobre "ThrottlingCount >0"

Optimización de costos

Puede reducir significativamente el costo de Azure Monitor comprendiendo las mejores prácticas para las opciones de configuración y las oportunidades para reducir la cantidad de datos que recopila.

Habilitación del registro y las métricas para todos los recursos de Azure

Cada servicio de Azure tiene sus propias funcionalidades de registro y métricas. Habilite el registro en cada recurso de Azure para asegurarse de que tiene la telemetría que necesita para supervisar toda la aplicación de un extremo a otro.

Creación de un recurso de Azure Monitor

Puede crear un recurso de Azure Monitor para recopilar registros y métricas de los recursos de Azure. Este recurso suele ser un área de trabajo de Log Analytics, que es donde se almacenan los registros y las métricas.

Puede crear este recurso de varias maneras:

  • Azure portal: use el portal Azure para crear un área de trabajo de Log Analytics y configurar las opciones de diagnóstico de los recursos.
  • CLI de Azure: use el CLI de Azure para crear un área de trabajo de Log Analytics y configurar las opciones de diagnóstico para los recursos.
  • PowerShell: use PowerShell para crear un área de trabajo de Log Analytics y configurar las opciones de diagnóstico de los recursos.
  • Bicep: use plantillas de Bicep para definir e implementar los recursos de Azure Monitor mediante declaración.

Creación de un área de trabajo de Log Analytics mediante el CLI de Azure

Use el CLI de Azure para crear un área de trabajo de Log Analytics, que es donde se almacenan los registros y las métricas. Ejemplo:

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

Creación de un área de trabajo de Log Analytics mediante Bicep

Use Bicep para definir e implementar los recursos de Azure Monitor mediante declaración. En este ejemplo se crea un área de trabajo de Log Analytics y se configuran las opciones de diagnóstico de una instancia de App Service.

Incluya el registro, las métricas y las alertas en sus plantillas de IaC con una referencia al recurso diagnosticSettings de Bicep. Ejemplo (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 }
    ]
  }
}

Crear alertas para tus recursos

Puede configurar alertas para métricas en el portal de Azure o mediante el CLI de Azure. Las alertas pueden incluir métricas específicas, flujos de comunicación (por ejemplo, correo electrónico) y frecuencia.

Use los ejemplos siguientes para crear alertas de métricas en el portal o mediante programación:

  • CLI de Azure: configuración rápida a través de az monitor metrics alert
  • Bicep: definición declarativa de IaC para Microsoft.Insights/metricAlerts

Las alertas pueden especificar métricas de destino, canales de notificación (correo electrónico, webhook), gravedad, frecuencia de evaluación y grupos de acciones.

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

Visualización de los datos de registro

Para ver los datos de registro en el portal de Azure, vaya al área de trabajo de Log Analytics y seleccione Logs. Puede ejecutar consultas del Lenguaje de Consulta Kusto (KQL) en los registros.

Transmisión de registros

Use la tabla siguiente para obtener más información sobre cómo transmitir registros.

servidor MCP de Azure

Al desarrollar localmente, puede usar la herramienta Azure MCP Servermonitor para consultar registros sin salir del IDE. Una vez instale el servidor, por ejemplo, los mensajes de Copilot incluyen:

  • Enumerar áreas de trabajo: "Mostrarme todas las áreas de trabajo Log Analytics en mi suscripción".
  • Buscar tablas: "Enumerar todas las tablas en mi espacio de trabajo 'security-logs'"
  • Consulta compleja: "Mostrar la tendencia de uso de CPU para mis servidores web en las últimas 24 horas"

Añade registro a tu código

Para el registro de aplicaciones, Application Insights puede proporcionar:

  • Registro estándar en el servicio Azure y en el código fuente, en función de la inicialización.
  • Registro personalizado desde la canalización de implementación y en el código fuente.

Registro de consola estándar (stdout/stderr)

Azure aplicaciones web y Azure Functions proporcionan automáticamente un registro personalizado para stdout y stderr, si usa las funciones de registro correctas:

  • Las aplicaciones web usan console.log('your message here').
  • Las aplicaciones de funciones usan context.log('your message here').

Añadir registro personalizado de Application Insights.

Puede agregar un registro personalizado más completo mediante Application Insights en Azure Monitor. Application Insights ofrece escenarios de servidor (Node.js) y cliente (explorador):

  • Agregue el SDK de Application Insights al código fuente.
  • Inicie sesión desde Node.js mediante un paquete npm.
    • Asegúrese de configurar el SDK de Node.js con enableAutoCollectConsole: true para recopilar registros de consola personalizados.
  • Inicie sesión desde el código de cliente mediante un paquete npm.
  • Inicie sesión desde el clúster de Kubernetes o Azure máquina virtual.

Habilitar los registros de canalización del SDK (@Azure/logger)

Controle el nivel de detalle del SDK mediante la AZURE_LOG_LEVEL variable de entorno o el @azure/logger paquete npm:

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

Configuración del SDK de Application Insights Node.js

Inicialice Application Insights para Node.js SDK con muestreo, recopilación de dependencias y captura de registros de consola:

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" };

Agregar correlación y seguimiento distribuido

El SDK de Application Insights inserta automáticamente identificadores de operación y correlación en solicitudes. Para agregar una correlación personalizada o propiedades:

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

Más información: guía de seguimiento distribuido

Vaciar la telemetría en scripts de desarrollo

Asegúrese de que los registros se envían antes de la salida del proceso durante el desarrollo local:

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

Configuración de telemetría del lado cliente

En el caso de las aplicaciones cliente, use el @microsoft/applicationinsights-web paquete :

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