Condividi tramite


Monitorare le risorse e le applicazioni di Azure

Usare Monitoraggio di Azure per raccogliere log, metriche e avvisi nelle applicazioni JavaScript e nei servizi di Azure da cui dipendono. Azure Monitor è il servizio di piattaforma centrale che raccoglie e archivia la telemetria. È possibile instrumentare le applicazioni con Application Insights. È consigliabile monitorare il servizio dell'applicazione ospitata, i servizi di Azure con cui l'applicazione si integra e il codice sorgente dell'applicazione stesso.

Informazioni su log, metriche e avvisi

I dati di telemetria sono i dati raccolti dalle applicazioni e dai servizi per monitorare l'integrità, le prestazioni e l'utilizzo. In Azure i dati di telemetria vengono classificati in log, metriche e avvisi.

Azure offre quattro tipi di dati di telemetria:

Tipo di telemetria Cosa ti offre Dove trovarla per ogni servizio
Metriche Dati numerici, serie temporali (CPU, memoria e così via) Metriche nel portale o az monitor metrics nella CLI
Avvisi Notifiche proattive quando si raggiungono le soglie Avvisi nel portale o nell'interfaccia della CLI
Registrazioni Eventi e diagnostica basati su testo (Web, app) Log del Servizio App, Monitoraggio funzioni, Diagnostica delle app contenitore
Log personalizzati Dati di telemetria dell'applicazione personalizzati tramite App Insights Tabella Log (traccia) della tua risorsa di Application Insights

Selezionare i dati di telemetria corretti per la domanda:

Sceneggiatura Utilizzare i registri… Usare le metriche... Usare gli avvisi...
"La mia app web è stata avviata ed è reattiva?" Log del server Web di App Service Non disponibile Non disponibile
"La mia funzione sta andando in timeout o fallendo?" Registri invocazione funzione (Monitor) Metrica della durata dell'esecuzione della funzione Avviso su "Errori di Funzione >0"
"Quanto è occupato il mio servizio e può scalare?" Non disponibile Velocità effettiva del servizio/CPU nelle metriche Avviso di scalabilità automatica su CPU% > 70%
"Quali eccezioni sta lanciando il mio codice?" Log di traccia personalizzati in Application Insights Non disponibile Avviso in "ServerExceptions >0"
"Ho superato i limiti di transazione o quota?" Non disponibile Metriche correlate alla quota (transazioni, limitazione) Avviso su "ThrottlingCount >0"

Ottimizzazione dei costi

È possibile ridurre significativamente i costi per Monitoraggio di Azure comprendendo le procedure consigliate per le opzioni di configurazione e le opportunità per ridurre la quantità di dati raccolti.

Abilitare la registrazione e le metriche per tutte le risorse di Azure

Ogni servizio in Azure ha funzionalità di registrazione e metriche personalizzate. Abilitare la registrazione in ogni risorsa di Azure per assicurarsi di avere i dati di telemetria necessari per monitorare l'intera applicazione end-to-end.

Creare una risorsa di Monitoraggio di Azure

È possibile creare una risorsa di Monitoraggio di Azure per raccogliere log e metriche dalle risorse di Azure. Questa risorsa è in genere un'area di lavoro Log Analytics, in cui vengono archiviati i log e le metriche.

È possibile creare questa risorsa in diversi modi:

  • Portale di Azure: usare il portale di Azure per creare un'area di lavoro Log Analytics e configurare le impostazioni di diagnostica per le risorse.
  • Interfaccia della riga di comando di Azure: usare l'interfaccia della riga di comando di Azure per creare un'area di lavoro Log Analytics e configurare le impostazioni di diagnostica per le risorse.
  • PowerShell: usare PowerShell per creare un'area di lavoro Log Analytics e configurare le impostazioni di diagnostica per le risorse.
  • Bicep: usare i modelli Bicep per definire e distribuire le risorse di Monitoraggio di Azure in modo dichiarativo.

Creare un'area di lavoro Log Analytics usando l'interfaccia della riga di comando di Azure

Usare l'interfaccia della riga di comando di Azure per creare un'area di lavoro Log Analytics, in cui vengono archiviati i log e le metriche. Esempio:

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

Creare un'area di lavoro Log Analytics usando Bicep

Usare Bicep per definire e distribuire le risorse di Monitoraggio di Azure in modo dichiarativo. Questo esempio crea un'area di lavoro Log Analytics e configura le impostazioni di diagnostica per un servizio app:


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

Crea avvisi per le risorse

È possibile configurare avvisi per le metriche nel portale di Azure o usando l'interfaccia della riga di comando di Azure. Gli avvisi possono includere metriche specifiche, flussi di comunicazione (ad esempio posta elettronica) e frequenza.

Usare gli esempi seguenti per creare avvisi delle metriche nel portale o a livello di codice:

  • Interfaccia della riga di comando di Azure: configurazione rapida tramite az monitor metrics alert
  • Bicep: definizione IaC dichiarativa per Microsoft.Insights/metricAlerts

Gli avvisi possono specificare metriche di destinazione, canali di notifica (posta elettronica, webhook), gravità, frequenza di valutazione e gruppi di azioni.

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

Visualizzare i dati dei log

Per visualizzare i dati di log nel portale di Azure, passare all'area di lavoro Log Analytics e selezionare Log. È possibile eseguire le query KQL (Kusto Query Language) sui log.

Trasmettere i log

Usare la tabella seguente per altre informazioni su come trasmettere i log.

Azure MCP Server

Quando si sviluppa in locale, è possibile utilizzare lo strumento Azure MCP Servermonitor per eseguire query sui log senza lasciare l'IDE. Dopo aver installato il server, i prompt di Copilot di esempio includono:

  • Elencare le aree di lavoro: "Mostra tutte le aree di lavoro Log Analytics nella sottoscrizione".
  • Trovare tabelle: "Elencare tutte le tabelle nell'area di lavoro 'security-logs'"
  • Query complessa: "Mostra la tendenza di utilizzo della CPU per i server Web nelle ultime 24 ore"

Aggiungere la registrazione al codice

Per la registrazione delle applicazioni, Application Insights può fornire:

  • Registrazione standard nel servizio di Azure e nel codice sorgente, a seconda dell'inizializzazione.
  • Registrazione personalizzata della tua pipeline di distribuzione e nel tuo codice sorgente.

Registrazione della console standard (stdout/stderr)

Le app Web di Azure e Funzioni di Azure forniscono automaticamente la registrazione personalizzata a stdout e stderr, se si usano le funzioni di registrazione corrette:

  • Le app web usano console.log('your message here').
  • Le app per le funzioni usano context.log('your message here').

Aggiungere la registrazione personalizzata di Application Insights

È possibile aggiungere una registrazione personalizzata più completa usando Application Insights in Monitoraggio di Azure. Application Insights offre scenari server (Node.js) e client (browser):

  • Aggiungere Application Insights SDK al codice sorgente.
  • Accedere da Node.js usando un pacchetto npm.
    • Assicurarsi di configurare Node.js SDK con enableAutoCollectConsole: true per raccogliere i log della console personalizzati.
  • Eseguire il log dal codice client usando un pacchetto npm.
  • Accedi al tuo cluster Kubernetes o alla tua macchina virtuale di Azure.

Abilitare i log della pipeline SDK (@Azure/logger)

Controlla la verbosità dell'SDK utilizzando la AZURE_LOG_LEVEL variabile di ambiente o il @azure/logger pacchetto npm:

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

Configurare Application Insights Node.js SDK

Inizializzare Application Insights per Node.js SDK con campionamento, raccolta di dipendenze e acquisizione dei log della console:

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

Aggiungere la correlazione e la traccia distribuita

Application Insights SDK inserisce automaticamente le operazioni e gli ID di correlazione nelle richieste. Per aggiungere correlazioni o proprietà personalizzate:

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

Altre informazioni: indicazioni sulla traccia distribuita

Scaricare i dati di telemetria negli script di sviluppo

Assicurarsi che i log vengano inviati prima dell'uscita del processo durante lo sviluppo locale:

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

Configurazione della telemetria lato client

Per le applicazioni client, usare il @microsoft/applicationinsights-web pacchetto :

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

Passaggi successivi