Compartir a través de


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 de 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 La tabla de registros (seguimiento) de su recurso de Application Insights

Elija la telemetría correcta para su pregunta:

Escenario Utilizar registros... Usa métricas... Usa 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 mediante la comprensión de los procedimientos recomendados 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 Azure Portal para crear un área de trabajo de Log Analytics y configurar la configuración de diagnóstico de los recursos.
  • CLI de Azure: use la CLI de Azure para crear un área de trabajo de Log Analytics y configurar las opciones de diagnóstico de 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 la CLI de Azure

Use la 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"

# 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 para una instancia de App Service:


Include logging, metrics, and alerting in your IaC templates with a [Bicep diagnosticSettings resource reference](/azure/templates/microsoft.insights/diagnosticsettings). Example (Bicep):

```bicep
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 Azure Portal o mediante la 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 mediante 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 Azure Portal, vaya al área de trabajo de Log Analytics y seleccione Registros. 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 de supervisión del servidor MCP de Azure para consultar registros sin salir del IDE. Una vez que instale el servidor, los mensajes de Copilot de ejemplo incluyen:

  • Enumerar áreas de trabajo: "Mostrar todas las áreas de trabajo de 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 de 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)

Las aplicaciones web de Azure y Azure Functions proporcionan automáticamente el registro personalizado a 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 la máquina virtual de Azure.

Habilitación de los registros de canalización del SDK (@Azure/registrador)

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("<INSTRUMENTATION_KEY>")
  .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: {
  instrumentationKey: "<INSTRUMENTATION_KEY>",
  enableAutoRouteTracking: true
}});
ai.loadAppInsights();

Pasos siguientes