Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Usare Monitoraggio di Azure per raccogliere log, metriche e avvisi nelle applicazioni JavaScript e nei servizi Azure da cui dipendono. Monitoraggio di Azure è il servizio di piattaforma centrale che raccoglie e archivia i dati di telemetria. È possibile instrumentare le applicazioni con Application Insights. È consigliabile monitorare il servizio dell'applicazione ospitata, i servizi 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 risorsa di Application Insights |
Selezionare i dati di telemetria corretti per la domanda:
| Sceneggiatura | Usa i log... | Usare le metriche... | Usare gli avvisi... |
|---|---|---|---|
| "L'app Web è stata avviata ed è funzionante?" | 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 relativo a "Errori >di funzione 0" |
| Quanto è occupato il mio servizio e può espandersi? | Non disponibile | Velocità effettiva del servizio/CPU nelle metriche | Avviso di scalabilità automatica su CPU% > 70% |
| Quali eccezioni sta generando 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 il costo per Monitoraggio di Azure comprendendo le procedure best per le opzioni di configurazione e le opportunità di ridurre la quantità di dati raccolti.
Abilitare la registrazione e le metriche per tutte le risorse Azure
Ogni servizio in Azure ha funzionalità di registrazione e metriche proprie. Abilitare la registrazione in ogni risorsa Azure per assicurarsi di avere i dati di telemetria necessari per monitorare l'intera applicazione end-to-end.
Creare una risorsa Monitoraggio di Azure
È possibile creare una risorsa Monitoraggio di Azure per raccogliere log e metriche dalle risorse 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:
- Azure portale: usare il portale 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 il 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 modelli di Bicep per definire e distribuire le risorse Monitoraggio di Azure in modo dichiarativo.
Creare un'area di lavoro Log Analytics usando il interfaccia della riga di comando di Azure
Usare il 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"
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}]'
Creare un'area di lavoro Log Analytics usando Bicep
Usare Bicep per definire e distribuire le risorse 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.
Includere log, metriche e avvisi nei modelli IaC con un riferimento alla risorsa Bicep diagnosticSettings. Esempio (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 }
]
}
}
Crea avvisi per le risorse
È possibile configurare avvisi per le metriche nel portale di Azure o usando il 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 Logs. È 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.
Server MCP di Azure
Quando si sviluppa in locale, è possibile usare il Azure Server MCPmonitor per eseguire query sui log senza uscire dall'IDE. Dopo aver installato il server, ad esempio i prompt di Copilot 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 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)
Azure app Web e Funzioni di Azure forniscono automaticamente la registrazione personalizzata per 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: trueper raccogliere i log della console personalizzati.
- Assicurarsi di configurare Node.js SDK con
- Eseguire il log dal codice client usando un pacchetto npm.
- Accedere dal cluster Kubernetes o dalla macchina virtuale 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(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" };
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: {
connectionString: "<YOUR_CONNECTION_STRING>",
enableAutoRouteTracking: true
}});
ai.loadAppInsights();