Instrumentare app Web in fase di esecuzione con Application InsightsInstrument web apps at runtime with Application Insights

È possibile instrumentare un'app Web attiva con Azure Application Insights senza dover modificare o ridistribuire il codice.You can instrument a live web app with Azure Application Insights, without having to modify or redeploy your code. Se le applicazioni sono ospitate da un server IIS locale, installare Status Monitor.If your apps are hosted by an on-premises IIS server, install Status Monitor. Se si tratta di app Web di Azure o vengono eseguite in una macchina virtuale di Azure, è possibile attivare il monitoraggio di Application Insights dal pannello di controllo di Azure.If they're Azure web apps or run in an Azure VM, you can switch on Application Insights monitoring from the Azure control panel. Sono disponibili anche articoli separati sulla strumentazione di app Web J2EE live e Servizi cloud di Azure. È necessaria una sottoscrizione di Microsoft Azure .(There are also separate articles about instrumenting live J2EE web apps and Azure Cloud Services.) You need a Microsoft Azure subscription.

grafici di esempio

È possibile scegliere di applicare Application Insights alle applicazioni Web .NET in tre modi:You have a choice of three routes to apply Application Insights to your .NET web applications:

  • Fase di compilazione: aggiungere Application Insights SDK al codice dell'app Web.Build time: Add the Application Insights SDK to your web app code.
  • Fase di esecuzione: instrumentare l'app Web sul server, come descritto di seguito, senza ricompilare e ridistribuire il codice.Run time: Instrument your web app on the server, as described below, without rebuilding and redeploying the code.
  • Entrambe le opzioni: compilare l'SDK nel codice dell'app Web e applicare anche le estensioni della fase di esecuzione,Both: Build the SDK into your web app code, and also apply the run-time extensions. sfruttando il meglio delle due opzioni.Get the best of both options.

Ecco un riepilogo di ciò che offrono i singoli modi:Here's a summary of what you get by each route:

Fase di compilazioneBuild time Fase di esecuzioneRun time
Richieste ed eccezioniRequests & exceptions Yes Yes
Eccezioni più dettagliateMore detailed exceptions Yes
Diagnostica delle dipendenzeDependency diagnostics In .NET 4.6 e versioni successive, ma meno dettagliOn .NET 4.6+, but less detail Sì, dettagli completi: codici risultato, testo del comando SQL, verbo HTTPYes, full detail: result codes, SQL command text, HTTP verb
Contatori delle prestazioni di sistemaSystem performance counters Yes Yes
API per telemetria personalizzataAPI for custom telemetry Yes NoNo
Integrazione log di tracciaTrace log integration Yes NoNo
Visualizzazione pagina e dati utentePage view & user data Yes NoNo
Ricompilazione del codice necessariaNeed to rebuild code Yes NoNo

Monitorare un'app Web live di AzureMonitor a live Azure web app

Se l'applicazione è in esecuzione come servizio Web di Azure, ecco come attivare il monitoraggio:If your application is running as an Azure web service, here's how to switch on monitoring:

  • Selezionare Application Insights nel pannello di controllo dell'app in Azure.Select Application Insights on the app's control panel in Azure.

    Configurare Application Insights per un'app Web di Azure

  • Quando viene visualizzata la pagina di riepilogo di Application Insights, fare clic sul collegamento nella parte inferiore per aprire la risorsa completa di Application Insights.When the Application Insights summary page opens, click the link at the bottom to open the full Application Insights resource.

    Fare clic sulle opzioni disponibili fino ad Application Insights

Monitoraggio di app cloud e VM.Monitoring Cloud and VM apps.

Abilitare il monitoraggio lato client in AzureEnable client-side monitoring in Azure

Se è stato abilitato Application Insights in Azure, è possibile aggiungere la visualizzazione delle pagine e la telemetria utente.If you have enabled Application Insights in Azure, you can add page view and user telemetry.

  1. Selezionare Impostazioni > Impostazioni applicazioneSelect Settings > Application Settings
  2. In Impostazioni app aggiungere una nuova coppia chiave-valore:Under App Settings, add a new key value pair:

    Chiave: APPINSIGHTS_JAVASCRIPT_ENABLEDKey: APPINSIGHTS_JAVASCRIPT_ENABLED

    Valore: trueValue: true

  3. Salvare le impostazioni scegliendo Salva e quindi fare clic su Riavvia per riavviare l'app.Save the settings and Restart your app.

Application Insights JavaScript SDK è ora incluso in ogni pagina Web.The Application Insights JavaScript SDK is now injected into each web page.

Monitorare un'app Web live di IISMonitor a live IIS web app

Se l'app è ospitata in un server IIS, abilitare Application Insights usando Status Monitor.If your app is hosted on an IIS server, enable Application Insights by using Status Monitor.

  1. Nel server Web IIS accedere con le credenziali di amministratore.On your IIS web server, sign in with administrator credentials.
  2. Se Application Insights Status Monitor non è già installato, scaricare ed eseguire il programma di installazione di Status Monitor oppure eseguire l'Installazione guidata piattaforma Web e cercarvi Application Insights Status Monitor.If Application Insights Status Monitor is not already installed, download and run the Status Monitor installer (or run Web Platform Installer and search in it for Application Insights Status Monitor).
  3. In Status Monitor selezionare l'applicazione Web installata o il sito Web da monitorare.In Status Monitor, select the installed web application or website that you want to monitor. Accedere con le credenziali di Azure.Sign in with your Azure credentials.

    Configurare la risorsa in cui si vogliono visualizzare i risultati nel portale di Application Insights.Configure the resource where you want to see the results in the Application Insights portal. È in genere consigliabile creare una nuova risorsa.(Normally, it's best to create a new resource. Selezionare una risorsa esistente se sono già disponibili test Web o il monitoraggio del client per questa app.Select an existing resource if you already have web tests or client monitoring for this app.)

    Scegliere un'applicazione e una risorsa.

  4. Riavviare IIS.Restart IIS.

    Scegliere Riavvia nella parte superiore della finestra di dialogo.

    Il servizio Web viene interrotto per un breve periodo di tempo.Your web service is interrupted for a short while.

Personalizzare le opzioni di monitoraggioCustomize monitoring options

L'abilitazione di Application Insights aggiunge DLL e il file ApplicationInsights.config all'app Web.Enabling Application Insights adds DLLs and ApplicationInsights.config to your web app. È possibile modificare il file con estensione config per modificare alcune opzioni.You can edit the .config file to change some of the options.

Quando si ripubblica l'app, riabilitare Application InsightsWhen you re-publish your app, re-enable Application Insights

Prima di ripubblicare l'app, prendere in considerazione l'aggiunta di Application Insights al codice in Visual Studio.Before you re-publish your app, consider adding Application Insights to the code in Visual Studio. Questo approccio consente di ottenere dati di telemetria più dettagliati e di scrivere dati di telemetria personalizzati.You'll get more detailed telemetry and the ability to write custom telemetry.

Per ripetere la pubblicazione senza aggiungere Application Insights al codice, si noti che il processo di distribuzione potrebbe eliminare i file DLL e il file ApplicationInsights.config dal sito Web pubblicato.If you want to re-publish without adding Application Insights to the code, be aware that the deployment process may delete the DLLs and ApplicationInsights.config from the published web site. Di conseguenza:Therefore:

  1. Se sono state apportate modifiche al file ApplicationInsights.config, copiarlo prima di ripubblicare l'app.If you edited ApplicationInsights.config, take a copy of it before you re-publish your app.
  2. Pubblicare di nuovo l'app.Republish your app.
  3. Abilitare di nuovo il monitoraggio di Application Insights.Re-enable Application Insights monitoring. Usare il metodo appropriato, ovvero il pannello di controllo dell'app Web di Azure o Status Monitor in un host IIS.(Use the appropriate method: either the Azure web app control panel, or the Status Monitor on an IIS host.)
  4. Ripristinare eventuali modifiche apportate al file con estensione config.Reinstate any edits you performed on the .config file.

Risoluzione dei problemi della configurazione del runtime di Application InsightsTroubleshooting runtime configuration of Application Insights

Nessuna connessione?Can't connect? Nessun dato di telemetria?No telemetry?

  • Per consentire il funzionamento di Status Monitor, aprire le porte in uscita necessarie nel firewall del server.Open the necessary outgoing ports in your server's firewall to allow Status Monitor to work.

  • Aprire Status Monitor e selezionare la propria applicazione nel pannello a sinistra.Open Status Monitor and select your application on left pane. Verificare se sono presenti messaggi di diagnostica per l'applicazione nella sezione "Configuration notifications":Check if there are any diagnostics messages for this application in the "Configuration notifications" section:

    Aprire il pannello delle prestazioni per visualizzare una richiesta, il tempo di risposta, le dipendenze e altri dati

  • Se sul server viene visualizzato un messaggio relativo alle autorizzazioni insufficienti, provare a seguire questa procedura:On the server, if you see a message about "insufficient permissions", try the following:
    • In Gestione IIS selezionare il pool di applicazioni, aprire Impostazioni avanzate e prendere nota dell'identità in Modello di processo.In IIS Manager, select your application pool, open Advanced Settings, and under Process Model note the identity.
    • Nel pannello di controllo Gestione computer, aggiungere questa identità al gruppo Utenti di Performance Monitor.In Computer management control panel, add this identity to the Performance Monitor Users group.
  • Se nel server è installato MMA/SCOM (System Center Operations Manager), alcune versioni potrebbero entrare in conflitto.If you have MMA/SCOM (Systems Center Operations Manager) installed on your server, some versions can conflict. Disinstallare SCOM e Status Monitor e reinstallare le versioni più recenti.Uninstall both SCOM and Status Monitor, and re-install the latest versions.
  • Vedere Risoluzione dei problemi.See Troubleshooting.

Requisiti di sistemaSystem Requirements

Supporto del sistema operativo per Application Insights Status Monitor sul serverOS support for Application Insights Status Monitor on Server:

  • Windows Server 2008Windows Server 2008
  • Windows Server 2008 R2Windows Server 2008 R2
  • Windows Server 2012Windows Server 2012
  • Windows Server 2012 R2Windows server 2012 R2
  • Windows Server 2016Windows Server 2016

con SP più recente e .NET Framework 4.5with latest SP and .NET Framework 4.5

Sul lato client: Windows 7, 8, 8.1 e 10, con .NET Framework 4.5On the client side: Windows 7, 8, 8.1 and 10, again with .NET Framework 4.5

Il supporto IIS è: IIS 7, 7.5, 8, 8.5 (IIS è obbligatorio)IIS support is: IIS 7, 7.5, 8, 8.5 (IIS is required)

Automazione con PowerShellAutomation with PowerShell

È possibile usare PowerShell nel server IIS per avviare e arrestare il monitoraggio.You can start and stop monitoring by using PowerShell on your IIS server.

Importare prima di tutto il modulo di Application Insights:First import the Application Insights module:

Import-Module 'C:\Program Files\Microsoft Application Insights\Status Monitor\PowerShell\Microsoft.Diagnostics.Agent.StatusMonitor.PowerShell.dll'

Individuare le applicazioni sottoposte a monitoraggio:Find out which apps are being monitored:

Get-ApplicationInsightsMonitoringStatus [-Name appName]

  • -Name (facoltativo): nome di un'app Web.-Name (Optional) The name of a web app.
  • Visualizza lo stato del monitoraggio di Application Insights per ogni app Web o per l'app denominata nel server IIS.Displays the Application Insights monitoring status for each web app (or the named app) in this IIS server.
  • Restituisce ApplicationInsightsApplication per ogni app.Returns ApplicationInsightsApplication for each app:

    • SdkState==EnabledAfterDeployment: l'app viene monitorata ed è stata instrumentata in fase di esecuzione dallo strumento Status Monitor oppure da Start-ApplicationInsightsMonitoring.SdkState==EnabledAfterDeployment: App is being monitored, and was instrumented at run time, either by the Status Monitor tool, or by Start-ApplicationInsightsMonitoring.
    • SdkState==Disabled: l'app non è instrumentata per Application Insights.SdkState==Disabled: The app is not instrumented for Application Insights. Non è mai stata instrumentata oppure il monitoraggio in fase di esecuzione è stato disabilitato con lo strumento Status Monitor o con Stop-ApplicationInsightsMonitoring.Either it was never instrumented, or run-time monitoring was disabled with the Status Monitor tool or with Stop-ApplicationInsightsMonitoring.
    • SdkState==EnabledByCodeInstrumentation: l'app è stata instrumentata aggiungendo l'SDK al codice sorgente.SdkState==EnabledByCodeInstrumentation: The app was instrumented by adding the SDK to the source code. Il relativo SDK non può essere aggiornato o arrestato.Its SDK cannot be updated or stopped.
    • SdkVersion : mostra la versione usata per il monitoraggio dell'app.SdkVersion shows the version in use for monitoring this app.
    • LatestAvailableSdkVersion: mostra la versione attualmente disponibile nella raccolta NuGet.LatestAvailableSdkVersionshows the version currently available on the NuGet gallery. Per aggiornare l'app a questa versione, usare Update-ApplicationInsightsMonitoring.To upgrade the app to this version, use Update-ApplicationInsightsMonitoring.

Start-ApplicationInsightsMonitoring -Name appName -InstrumentationKey 00000000-000-000-000-0000000

  • -Name : nome dell'app in IIS.-Name The name of the app in IIS
  • -InstrumentationKey : valore ikey della risorsa di Application Insights in cui visualizzare i risultati.-InstrumentationKey The ikey of the Application Insights resource where you want the results to be displayed.
  • Questo cmdlet influisce solo sulle app che non sono già instrumentate, ovvero SdkState==NotInstrumented.This cmdlet only affects apps that are not already instrumented - that is, SdkState==NotInstrumented.

    Il cmdlet non influisce sulle app già instrumentate,The cmdlet does not affect an app that is already instrumented. sia che siano state instrumentate in fase di compilazione, aggiungendo l'SDK al codice, o in fase di esecuzione da un uso precedente di questo cmdlet.It does not matter whether the app was instrumented at build time by adding the SDK to the code, or at run time by a previous use of this cmdlet.

    La versione SDK usata per instrumentare l'app è la versione scaricata più di recente nel server.The SDK version used to instrument the app is the version that was most recently downloaded to this server.

    Per scaricare l'ultima versione, usare Update-ApplicationInsightsVersion.To download the latest version, use Update-ApplicationInsightsVersion.

  • Se l'esito è positivo, restituisce ApplicationInsightsApplication .Returns ApplicationInsightsApplication on success. Se l'esito è negativo, registra una traccia in stderr.If it fails, it logs a trace to stderr.

        Name                      : Default Web Site/WebApp1
        InstrumentationKey        : 00000000-0000-0000-0000-000000000000
        ProfilerState             : ApplicationInsights
        SdkState                  : EnabledAfterDeployment
        SdkVersion                : 1.2.1
        LatestAvailableSdkVersion : 1.2.3
    

Stop-ApplicationInsightsMonitoring [-Name appName | -All]

  • -Name : nome di un'app in IIS.-Name The name of an app in IIS
  • -All: arresta il monitoraggio di tutte le app nel server IIS per cui SdkState==EnabledAfterDeployment-All Stops monitoring all apps in this IIS server for which SdkState==EnabledAfterDeployment
  • Arresta il monitoraggio delle app specificate e rimuove la strumentazione.Stops monitoring the specified apps and removes instrumentation. Funziona solo per le app instrumentate in fase di esecuzione usando lo strumento Status Monitor o Start-ApplicationInsightsApplication.It only works for apps that have been instrumented at run-time using the Status Monitoring tool or Start-ApplicationInsightsApplication. (SdkState==EnabledAfterDeployment)(SdkState==EnabledAfterDeployment)
  • Restituisce ApplicationInsightsApplication.Returns ApplicationInsightsApplication.

Update-ApplicationInsightsMonitoring -Name appName [-InstrumentationKey "0000000-0000-000-000-0000"]Update-ApplicationInsightsMonitoring -Name appName [-InstrumentationKey "0000000-0000-000-000-0000"]

  • -Name: nome di un'app Web in IIS.-Name: The name of a web app in IIS.
  • -InstrumentationKey (facoltativo): consente di modificare la risorsa a cui vengono inviati i dati di telemetria dell'app.-InstrumentationKey (Optional.) Use this to change the resource to which the app's telemetry is sent.
  • Questo cmdlet:This cmdlet:
    • Aggiorna l'app denominata alla versione dell'SDK scaricata più di recente nel computer.Upgrades the named app to the version of the SDK most recently downloaded to this machine. Funziona solo se SdkState==EnabledAfterDeployment.(Only works if SdkState==EnabledAfterDeployment)
    • Se si specifica una chiave di strumentazione, l'app denominata viene riconfigurata per l'invio di dati di telemetria alla risorsa con tale chiave.If you provide an instrumentation key, the named app is reconfigured to send telemetry to the resource with that key. Funziona se SdkState != Disabled.(Works if SdkState != Disabled)

Update-ApplicationInsightsVersion

  • Scarica l'ultima versione di Application Insights SDK nel server.Downloads the latest Application Insights SDK to the server.

Domande su Status MonitorQuestions about Status Monitor

Che cos'è Status Monitor?What is Status Monitor?

Un'applicazione desktop che viene installata nel server Web IISA desktop application that you install in your IIS web server. e consente di instrumentare e configurare le app Web.It helps you instrument and configure web apps.

Quando si usa Status Monitor?When do I use Status Monitor?

  • Per instrumentare qualsiasi app Web eseguita nel server IIS, anche se è già in esecuzione.To instrument any web app that is running on your IIS server - even if it is already running.
  • Per abilitare altri dati di telemetria per le app Web compilate con Application Insights SDK in fase di compilazione.To enable additional telemetry for web apps that have been built with the Application Insights SDK at compile time.

È possibile chiudere Status Monitor dopo l'esecuzione?Can I close it after it runs?

Sì.Yes. Dopo aver instrumentato i siti Web selezionati, è possibile chiuderlo.After it has instrumented the websites you select, you can close it.

Status Monitor non raccoglie i dati di telemetria,It doesn't collect telemetry by itself. ma si limita a configurare le app Web e impostare alcune autorizzazioni.It just configures the web apps and sets some permissions.

Che cosa fa Status Monitor?What does Status Monitor do?

Quando si seleziona un'app Web per l'instrumentazione da parte di Status Monitor:When you select a web app for Status Monitor to instrument:

  • Scarica e inserisce gli assembly di Application Insights e il file config nella cartella dei file binari dell'app Web.Downloads and places the Application Insights assemblies and .config file in the web app's binaries folder.
  • Modifica web.config per aggiungere il modulo di rilevamento HTTP di Application Insights.Modifies web.config to add the Application Insights HTTP tracking module.
  • Abilita la profilatura CLR per raccogliere le chiamate alle dipendenze.Enables CLR profiling to collect dependency calls.

È necessario eseguire Status Monitor ogni volta che si aggiorna l'app?Do I need to run Status Monitor whenever I update the app?

Se si esegue la ridistribuzione in modo incrementale, non è necessario.Not if you redeploy incrementally.

Se si seleziona l'opzione "Elimina file esistenti" nel processo di pubblicazione, è necessario eseguire nuovamente Status Monitor per configurare Application Insights.If you select the 'delete existing files' option in the publish process, you would need to re-run Status Monitor to configure Application Insights.

Quali dati di telemetria vengono raccolti?What telemetry is collected?

Per le applicazioni che vengono instrumentate solo in fase di esecuzione tramite Status Monitor:For applications that you instrument only at run-time by using Status Monitor:

  • Richieste HTTPHTTP requests
  • Chiamate alle dipendenzeCalls to dependencies
  • EccezioniExceptions
  • Contatori delle prestazioniPerformance counters

Per le applicazioni già instrumentate in fase di compilazione:For applications already instrumented at compile time:

  • Contatori dei processiProcess counters.
  • Chiamate alle dipendenze (.NET 4.5) e valori restituiti nelle chiamate alle dipendenze (.NET 4.6)Dependency calls (.NET 4.5); return values in dependency calls (.NET 4.6).
  • Valori di analisi dello stack delle eccezioniException stack trace values.

Altre informazioniLearn more

VideoVideo

Passaggi successiviNext steps

Visualizzare i dati di telemetria:View your telemetry:

Aggiungere altri dati di telemetria:Add more telemetry: