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 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.
- Assicurarsi di configurare Node.js SDK con
- 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();