Application Insights per Java 2.x
Attenzione
Questo articolo si applica a Application Insights Java 2.x, che non è più consigliato.
La documentazione per la versione più recente è disponibile in Application Insights Java 3.x.
In questo articolo si apprenderà come usare Application Insights Java 2.x. Questo articolo illustra come:
- Introduzione e informazioni su come instrumentare le richieste, tenere traccia delle dipendenze, raccogliere contatori delle prestazioni, diagnosticare i problemi di prestazioni e le eccezioni e scrivere codice per tenere traccia delle operazioni eseguite dagli utenti con l'app.
- Inviare i log di traccia a Application Insights ed esplorarli usando il portale di Application Insights.
- Monitorare le dipendenze, le eccezioni rilevate e i tempi di esecuzione dei metodi nelle app Web Java.
- Filtrare i dati di telemetria nell'app Web Java.
- Esplorare le metriche delle prestazioni del sistema Linux in Application Insights usando
collectd
. - Misurare le metriche per il codice dell'applicazione basato su JVM (Java Virtual Machine). Esportare i dati nei sistemi di monitoraggio preferiti usando il monitoraggio dell'applicazione Micrometer.
Nota
Il 31 marzo 2025, il supporto per l'inserimento delle chiavi di strumentazione terminerà. L'inserimento delle chiavi di strumentazione continuerà a funzionare, ma non verranno più forniti aggiornamenti o supporto per la funzionalità. Passare alle stringhe di connessione per sfruttare le nuove funzionalità.
Introduzione ad Application Insights in un progetto Web Java
In questa sezione si usa Application Insights SDK per instrumentare le richieste, tenere traccia delle dipendenze, raccogliere contatori delle prestazioni, diagnosticare i problemi di prestazioni e le eccezioni e scrivere codice per tenere traccia delle operazioni eseguite dagli utenti con l'app.
Application Insights è un servizio di analisi estendibile per gli sviluppatori Web che semplifica la comprensione delle prestazioni e dell'uso dell'applicazione live. Application Insights supporta le app Java in esecuzione in Linux, Unix o Windows.
Prerequisiti
È necessario:
- Un account Azure con una sottoscrizione attiva. È possibile creare un account gratuitamente.
- Applicazione Java funzionante.
Ottenere una chiave di strumentazione di Application Insights
Accedere al portale di Azure.
Nel portale di Azurecreare una risorsa di Application Insights. Impostare il tipo di applicazione nell'applicazione Web Java.
Ottenere la chiave di strumentazione della nuova risorsa. Questa chiave dovrà a breve essere incollata nel progetto di codice.
Aggiungere SDK per Java di Application Insights al progetto
Scegliere il tipo di progetto.
Se il progetto è già configurato per usare Maven per la compilazione, unire il codice seguente al file pom.xml . Aggiornare quindi le dipendenze progetto per fare in modo che i file binari vengano scaricati.
<dependencies>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-web-auto</artifactId>
<!-- or applicationinsights-web for manual web filter registration -->
<!-- or applicationinsights-core for bare API -->
<version>2.6.4</version>
</dependency>
</dependencies>
Domande frequenti
Qual è la relazione tra ,
-web-auto
-web
e-core
componenti?-
applicationinsights-web-auto
offre metriche che tengono traccia dei conteggi delle richieste e dei tempi di risposta HTTP registrando automaticamente il filtro servlet di Application Insights in fase di esecuzione. -
applicationinsights-web
fornisce anche metriche che tengono traccia dei conteggi delle richieste e dei tempi di risposta HTTP. È tuttavia necessaria la registrazione manuale del filtro servlet di Application Insights nell'applicazione. -
applicationinsights-core
fornisce l'API bare, ad esempio, se l'applicazione non è basata su servlet.
-
Come si esegue l'aggiornamento alla versione più recente dell'SDK?
- A partire da novembre 2020, per il monitoraggio delle applicazioni Java, è consigliabile usare Application Insights Java 3.x. Per altre informazioni su come iniziare, vedere Application Insights Java 3.x.
Aggiungere un file ApplicationInsights.xml
Aggiungere ApplicationInsights.xml alla cartella risorse nel progetto oppure assicurarsi che venga aggiunto al percorso della classe di distribuzione del progetto. Copiarvi il seguente file XML.
Sostituire la chiave di strumentazione con quella ottenuta dalla portale di Azure.
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsights xmlns="http://schemas.microsoft.com/ApplicationInsights/2013/Settings" schemaVersion="2014-05-30">
<!-- The key from the portal: -->
<InstrumentationKey>** Your instrumentation key **</InstrumentationKey>
<!-- HTTP request component (not required for bare API) -->
<TelemetryModules>
<Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebRequestTrackingTelemetryModule"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebSessionTrackingTelemetryModule"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.modules.WebUserTrackingTelemetryModule"/>
</TelemetryModules>
<!-- Events correlation (not required for bare API) -->
<!-- These initializers add context data to each event -->
<TelemetryInitializers>
<Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebOperationIdTelemetryInitializer"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebOperationNameTelemetryInitializer"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebSessionTelemetryInitializer"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebUserTelemetryInitializer"/>
<Add type="com.microsoft.applicationinsights.web.extensibility.initializers.WebUserAgentTelemetryInitializer"/>
</TelemetryInitializers>
</ApplicationInsights>
Facoltativamente, il file di configurazione può trovarsi in qualsiasi posizione accessibile all'applicazione. La proprietà -Dapplicationinsights.configurationDirectory
di sistema specifica la directory contenente ApplicationInsights.xml. Ad esempio, un file di configurazione che si trova in E:\myconfigs\appinsights\ApplicationInsights.xml verrebbe configurato con la proprietà -Dapplicationinsights.configurationDirectory="E:\myconfigs\appinsights"
.
- La chiave di strumentazione viene inviata insieme a tutti gli elementi di dati di telemetria e indica ad Application Insights di visualizzarla nella risorsa.
- Il componente delle richieste HTTP è facoltativo. Invia automaticamente i dati di telemetria sulle richieste e tempi di risposta al portale.
- La correlazione di eventi è un'aggiunta al componente delle richieste HTTP. Assegna un identificatore a ogni richiesta ricevuta dal server. Aggiunge quindi questo identificatore come proprietà a ogni elemento di telemetria come proprietà
Operation.Id
. Consente di correlare i dati di telemetria associati a ogni richiesta impostando un filtro nella ricerca diagnostica.
Modi alternativi per impostare la chiave di strumentazione
Application Insights SDK cerca la chiave nell'ordine seguente.
- Proprietà di sistema: -DAPPINSIGHTS_INSTRUMENTATIONKEY=your_ikey
- Variabile di ambiente: APPINSIGHTS_INSTRUMENTATIONKEY
- File di configurazione: ApplicationInsights.xml
È anche possibile eseguirne l' impostazione nel codice:
String instrumentationKey = "00000000-0000-0000-0000-000000000000";
if (instrumentationKey != null)
{
TelemetryConfiguration.getActive().setInstrumentationKey(instrumentationKey);
}
Aggiungere l'agente
Installare l'agente Java per acquisire chiamate HTTP in uscita, query JDBC, registrazione dell'applicazione e denominazione dell'operazione migliore.
Eseguire l'applicazione
Eseguirlo in modalità di debug nel computer di sviluppo o pubblicarlo nel server.
Visualizzare i dati di telemetria in Application Insights
Tornare alla risorsa di Application Insights nel portale di Azure.
I dati delle richieste HTTP sono visualizzati nel riquadro di panoramica. Se non è presente, attendere alcuni secondi e quindi selezionare Aggiorna.
Altre informazioni sulle metriche.
Fare clic su qualsiasi grafico per visualizzare metriche aggregate più dettagliate.
Dati dell'istanza
Fare clic su un tipo di richiesta specifico per visualizzare le singole istanze.
Log Analytics: linguaggio di query avanzato
Quando si accumulano più dati, è possibile eseguire query per aggregare i dati e trovare singole istanze. Log Analytics è uno strumento potente per comprendere le prestazioni e l'utilizzo e per scopi di diagnostica.
Installare l'applicazione nel server
Pubblicare ora l'app nel server, consentire agli utenti di usarla e guardare i dati di telemetria visualizzati nel portale.
Verificare che il firewall consenta all'applicazione di inviare i dati di telemetria a queste porte:
- dc.services.visualstudio.com:443
- f5.services.visualstudio.com:443
Se il traffico in uscita deve essere instradato tramite un firewall, definire le proprietà
http.proxyHost
di sistema ehttp.proxyPort
.Nei server Windows installare:
Microsoft Visual C++ Redistributable Package
Questo componente abilita i contatori delle prestazioni.
Servizio app di Azure, servizio Azure Kubernetes, configurazione delle macchine virtuali
L'approccio migliore e più semplice per monitorare le applicazioni in esecuzione in qualsiasi provider di risorse di Azure consiste nell'usare Application Insights Java 3.x.
Eccezioni e richieste non eseguite
Le eccezioni e gli errori delle richieste non gestiti vengono raccolti automaticamente dal filtro Web di Application Insights.
Per raccogliere dati in altre eccezioni, è possibile inserire chiamate a trackException() nel codice.
Monitorare le chiamate al metodo e le dipendenze esterne
Installare l'agente Java per registrare i metodi interni e le chiamate specificati tramite JDBC, con i dati di temporizzazione e per la denominazione automatica delle operazioni.
Analisi distribuita W3C
L'SDK di Java di Application Insights adesso supporta l'analisi distribuita W3C.
La configurazione dell'SDK in ingresso viene illustrata ulteriormente nella correlazione dei dati di telemetria in Application Insights.
La configurazione dell'SDK in uscita è definita nel file AI-Agent.xml.
Contatori delle prestazioni
Selezionare Analizza> metriche per visualizzare un intervallo dicontatori delle prestazioni.
Personalizzare la raccolta del contatore delle prestazioni
Per disabilitare la raccolta del set standard di contatori delle prestazioni, aggiungere il codice seguente nel nodo radice del file ApplicationInsights.xml :
<PerformanceCounters>
<UseBuiltIn>False</UseBuiltIn>
</PerformanceCounters>
Raccogliere più contatori delle prestazioni
È possibile specificare più contatori delle prestazioni da raccogliere.
Contatori JMX (esposti dalla macchina virtuale Java)
<PerformanceCounters>
<Jmx>
<Add objectName="java.lang:type=ClassLoading" attribute="TotalLoadedClassCount" displayName="Loaded Class Count"/>
<Add objectName="java.lang:type=Memory" attribute="HeapMemoryUsage.used" displayName="Heap Memory Usage-used" type="composite"/>
</Jmx>
</PerformanceCounters>
-
displayName
: nome visualizzato nel portale di Application Insights. -
objectName
: nome dell'oggetto JMX. -
attribute
: attributo del nome dell'oggetto JMX da recuperare. -
type
(facoltativo): tipo di attributo dell'oggetto JMX:- Impostazione predefinita: tipo semplice, ad esempio int o long.
-
composite
: i dati del contatore perf sono in formatoAttribute.Data
. -
tabular
: i dati del contatore perf sono in formato di una riga di tabella.
Contatori delle prestazioni di Windows
Ogni contatore delle prestazioni Windows è un membro di una categoria (nello stesso modo in cui un campo è un membro di una classe). Le categorie possono essere globali o hanno istanze numerate o denominate.
<PerformanceCounters>
<Windows>
<Add displayName="Process User Time" categoryName="Process" counterName="%User Time" instanceName="__SELF__" />
<Add displayName="Bytes Printed per Second" categoryName="Print Queue" counterName="Bytes Printed/sec" instanceName="Fax" />
</Windows>
</PerformanceCounters>
-
displayName
: nome visualizzato nel portale di Application Insights. -
categoryName
: categoria del contatore delle prestazioni (oggetto prestazioni) con cui è associato questo contatore delle prestazioni. -
counterName
: nome del contatore delle prestazioni. -
instanceName
: nome dell'istanza di categoria del contatore delle prestazioni o stringa vuota (""), se la categoria contiene una singola istanza. SecategoryName
è e il contatore delle prestazioni che si vuole raccogliere èProcess
dal processo JVM corrente in cui è in esecuzione l'app, specificare"__SELF__"
.
Contatori delle prestazioni Unix
Installare raccolto con il plug-in di Application Insights per ottenere un'ampia gamma di dati di sistema e di rete.
Ottenere i dati relativi a utenti e sessioni
A questo momento si inviano dati di telemetria dal server Web. Per ottenere la visualizzazione completa a 360 gradi dell'applicazione, è possibile aggiungere altro monitoraggio:
- Aggiungere la telemetria alle pagine Web per monitorare le visualizzazioni pagina e le metriche utente.
- Configurare i test Web in modo da assicurarsi che l'applicazione sia disponibile e reattiva.
Inviare i propri dati di telemetria
Dopo aver installato l'SDK, è possibile usare l'API per inviare dati di telemetria personalizzati:
- Per informazioni sulle attività svolte dagli utenti con l'applicazione, tenere traccia di eventi e metriche personalizzate.
- Per facilitare la diagnosi dei problemi, cercare eventi e log.
Test Web di disponibilità
Application Insights può testare il sito Web a intervalli regolari per verificare che funzioni e risponda correttamente.
Altre informazioni su come configurare i test Web di disponibilità.
Risoluzione dei problemi
Vedere l'articolo dedicato sulla risoluzione dei problemi.
Testare la connettività tra l'host dell'applicazione e il servizio di inserimento
Gli SDK e gli agenti di Application Insights inviano dati di telemetria per l'inserimento come chiamate REST agli endpoint di inserimento. È possibile testare la connettività dal server Web o dal computer host dell'applicazione agli endpoint del servizio di inserimento usando client REST non elaborati da PowerShell o comandi curl. Vedere Risolvere i problemi relativi ai dati di telemetria delle applicazioni mancanti in Application Insights di Monitoraggio di Azure.
Esplorare i log di traccia Java in Application Insights
Se si usa Logback o Log4J (v1.2 o v2.0) per la traccia, è possibile inviare automaticamente i log di traccia ad Application Insights dove è possibile esplorarli e eseguirvi ricerche.
Suggerimento
È necessario impostare la chiave di strumentazione di Application Insights una sola volta per l'applicazione. Se si usa un framework come Java Spring, potrebbe essere già stata registrata la chiave altrove nella configurazione dell'app.
Usare l'agente Java di Application Insights
Per impostazione predefinita, l'agente Java di Application Insights acquisisce automaticamente la registrazione eseguita a WARN
livello e superiore.
È possibile modificare la soglia di registrazione acquisita usando il file AI-Agent.xml :
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsightsAgent>
<Instrumentation>
<BuiltIn>
<Logging threshold="info"/>
</BuiltIn>
</Instrumentation>
</ApplicationInsightsAgent>
È possibile disabilitare l'acquisizione della registrazione dell'agente Java usando il file AI-Agent.xml :
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsightsAgent>
<Instrumentation>
<BuiltIn>
<Logging enabled="false"/>
</BuiltIn>
</Instrumentation>
</ApplicationInsightsAgent>
Alternativi
Anziché usare l'agente Java, è possibile seguire queste istruzioni.
Installare Java SDK
Seguire le istruzioni per installare Application Insights SDK per Java, se non è già stato fatto.
Aggiungere le librerie di registrazione al progetto
Scegliere il modo più appropriato per il progetto.
Maven
Se il progetto è già configurato per l'uso di Maven per la compilazione, unire uno dei frammenti di codice seguenti nel file pom.xml . Aggiornare quindi le dipendenze progetto per fare in modo che i file binari vengano scaricati.
Logback
<dependencies>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-logging-logback</artifactId>
<version>[2.0,)</version>
</dependency>
</dependencies>
Log4J v2.0
<dependencies>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-logging-log4j2</artifactId>
<version>[2.0,)</version>
</dependency>
</dependencies>
Log4J v1.2
<dependencies>
<dependency>
<groupId>com.microsoft.azure</groupId>
<artifactId>applicationinsights-logging-log4j1_2</artifactId>
<version>[2.0,)</version>
</dependency>
</dependencies>
Gradle
Se il progetto è già configurato per usare Gradle per la compilazione, aggiungere una delle righe seguenti al dependencies
gruppo nel file build.gradle . Aggiornare quindi le dipendenze progetto per fare in modo che i file binari vengano scaricati.
Logback
compile group: 'com.microsoft.azure', name: 'applicationinsights-logging-logback', version: '2.0.+'
Log4J v2.0
compile group: 'com.microsoft.azure', name: 'applicationinsights-logging-log4j2', version: '2.0.+'
Log4J v1.2
compile group: 'com.microsoft.azure', name: 'applicationinsights-logging-log4j1_2', version: '2.0.+'
Usare il collegamento jar
Seguire le linee guida per installare manualmente Application Insights Java SDK e scaricare il file jar. Nella pagina Maven Central selezionare il jar
collegamento nella sezione download per l'accodamento appropriato. Aggiungere il file jar di accodamento scaricato al progetto.
Logger | Scarica | Libreria |
---|---|---|
Logback | Jar dell'appender logback | applicationinsights-logging-logback |
Log4J v2.0 | Jar dell'appender Log4J versione 2 | applicationinsights-logging-log4j2 |
Log4J v1.2 | Jar dell'appender Log4J versione 1.2 | applicationinsights-logging-log4j1_2 |
Aggiungere l'appender per il framework di registrazione
Per iniziare a ottenere tracce, unire il frammento di codice pertinente al file di configurazione Logback o Log4J.
Logback
<appender name="aiAppender"
class="com.microsoft.applicationinsights.logback.ApplicationInsightsAppender">
<instrumentationKey>[APPLICATION_INSIGHTS_KEY]</instrumentationKey>
</appender>
<root level="trace">
<appender-ref ref="aiAppender" />
</root>
Log4J v2.0
<Configuration packages="com.microsoft.applicationinsights.log4j.v2">
<Appenders>
<ApplicationInsightsAppender name="aiAppender" instrumentationKey="[APPLICATION_INSIGHTS_KEY]" />
</Appenders>
<Loggers>
<Root level="trace">
<AppenderRef ref="aiAppender"/>
</Root>
</Loggers>
</Configuration>
Log4J v1.2
<appender name="aiAppender"
class="com.microsoft.applicationinsights.log4j.v1_2.ApplicationInsightsAppender">
<param name="instrumentationKey" value="[APPLICATION_INSIGHTS_KEY]" />
</appender>
<root>
<priority value ="trace" />
<appender-ref ref="aiAppender" />
</root>
Gli appender di Application Insights possono essere referenziati da qualsiasi logger configurato e non necessariamente dal logger radice, come illustrato negli esempi di codice precedenti.
Esplorare le tracce nel portale Application Insights.
Dopo aver configurato il progetto per inviare tracce a Application Insights, è possibile visualizzare e cercare queste tracce nel portale di Application Insights nel riquadro Ricerca .
Le eccezioni inviate tramite loggers verranno visualizzate nel portale come dati di telemetria eccezione .
Monitorare le dipendenze, le eccezioni rilevate e i tempi di esecuzione dei metodi nelle app Web Java
Se l'app Web Java è stata usata con Application Insights SDK, è possibile usare l'agente Java per ottenere informazioni dettagliate più approfondite, senza modifiche al codice:
Dipendenze: dati sulle chiamate effettuate dall'applicazione ad altri componenti, tra cui:
- Chiamate HTTP in uscita: chiamate effettuate tramite
Apache HttpClient
,OkHttp
ejava.net.HttpURLConnection
vengono acquisite. - Chiamate Redis: le chiamate effettuate tramite il client Jedis vengono acquisite.
- Query JDBC: per MySQL e PostgreSQL, se la chiamata richiede più di 10 secondi, l'agente segnala il piano di query.
- Chiamate HTTP in uscita: chiamate effettuate tramite
Registrazione dell'applicazione: acquisire e correlare i log delle applicazioni con richieste HTTP e altri dati di telemetria:
- Log4j 1.2
- Log4j2
- Logback
Denominazione dell'operazione migliore: utilizzata per l'aggregazione delle richieste nel portale.
-
Spring: basato su
@RequestMapping
. -
JAX-RS: basato su
@Path
.
-
Spring: basato su
Per usare l'agente Java, installarlo nel server. Le app Web devono essere instrumentate con Application Insights Java SDK.
Installare l'agente di Application Insights per Java
Nel computer che esegue il server Java scaricare l'agente 2.x. Assicurarsi che la versione dell'agente Java 2.x usata corrisponda alla versione di Application Insights Java SDK 2.x usata.
Modificare lo script di avvio del server applicazioni e aggiungere l'argomento JVM seguente:
-javaagent:<full path to the agent JAR file>
Ad esempio, in Tomcat su un computer Linux:
export JAVA_OPTS="$JAVA_OPTS -javaagent:<full path to agent JAR file>"
Riavviare il server applicazioni.
Configurare l'agente
Creare un file denominato AI-Agent.xml e inserirlo nella stessa cartella del file jar dell'agente.
Impostare il contenuto del file XML. Modificare l'esempio seguente in modo da includere o escludere le funzionalità desiderate.
<?xml version="1.0" encoding="utf-8"?>
<ApplicationInsightsAgent>
<Instrumentation>
<BuiltIn enabled="true">
<!-- capture logging via Log4j 1.2, Log4j2, and Logback, default is true -->
<Logging enabled="true" />
<!-- capture outgoing HTTP calls performed through Apache HttpClient, OkHttp,
and java.net.HttpURLConnection, default is true -->
<HTTP enabled="true" />
<!-- capture JDBC queries, default is true -->
<JDBC enabled="true" />
<!-- capture Redis calls, default is true -->
<Jedis enabled="true" />
<!-- capture query plans for JDBC queries that exceed this value (MySQL, PostgreSQL),
default is 10000 milliseconds -->
<MaxStatementQueryLimitInMS>1000</MaxStatementQueryLimitInMS>
</BuiltIn>
</Instrumentation>
</ApplicationInsightsAgent>
Altre configurazioni (Spring Boot)
java -javaagent:/path/to/agent.jar -jar path/to/TestApp.jar
Per Servizio app di Azure, seguire questa procedura:
Selezionare Impostazioni>applicazione.
In Impostazioni app aggiungere una nuova coppia di valori chiave:
-
Chiave:
JAVA_OPTS
-
Valore:
-javaagent:D:/home/site/wwwroot/applicationinsights-agent-2.6.4.jar
L'agente deve essere in pacchetto come risorsa nel progetto in modo che finisca nella directory D:/home/site/wwwroot/ . Per verificare che l'agente si trova nella directory di servizio app corretta, passare a Consoledidebugstrumenti avanzati strumenti>> di sviluppo ed esaminare il contenuto della directory del sito.
-
Chiave:
Salvare le impostazioni e riavviare l'app. Questi passaggi si applicano solo ai servizi app in esecuzione in Windows.
Nota
AI-Agent.xml e il file jar dell'agente devono trovarsi nella stessa cartella. Spesso vengono posizionati insieme nella cartella /resources del progetto.
Abilitare l'analisi distribuita W3C
Aggiungere il frammento di codice seguente a AI-Agent.xml:
<Instrumentation>
<BuiltIn enabled="true">
<HTTP enabled="true" W3C="true" enableW3CBackCompat="true"/>
</BuiltIn>
</Instrumentation>
Nota
La modalità di compatibilità con le versioni precedenti è abilitata per impostazione predefinita. Il enableW3CBackCompat
parametro è facoltativo e deve essere usato solo quando si vuole disattivarlo.
Idealmente, questo potrebbe essere il caso in cui tutti i servizi sono stati aggiornati alle versioni più recenti degli SDK che supportano il protocollo W3C. È consigliabile passare alle versioni più recenti degli SDK con il supporto W3C il prima possibile.
Assicurarsi che sia le configurazioni in ingresso che in uscita (agente) siano esattamente uguali.
Visualizzare i dati
Nella risorsa Application Insights vengono visualizzati i tempi di esecuzione delle dipendenze remote e dei metodi aggregati nel riquadro Prestazioni.
Per cercare singole istanze di dipendenze, eccezioni e report sui metodi, aprire Ricerca.
Altre informazioni su come diagnosticare i problemi di dipendenza.
Domande o problemi?
Usare le risorse seguenti:
- Dati non visualizzati Impostare eccezioni del firewall.
- Risolvere i problemi di Java.
Filtrare i dati di telemetria nell'App Web Java
I filtri consentono di selezionare i dati di telemetria inviati dall'App Web Java ad Application Insights. Esistono alcuni filtri predefiniti che è possibile usare. È anche possibile scrivere filtri personalizzati.
I filtri pronti da usare includono:
- Livello di gravità della traccia.
- URL, parole chiave o codici di risposta specifici.
- Risposte rapide. In altre parole, le richieste a cui l'app ha risposto rapidamente.
- Nomi di eventi specifici.
Nota
I filtri alterano le metriche dell'app. Ad esempio, è possibile decidere che per diagnosticare risposte lente, si imposta un filtro per eliminare i tempi di risposta rapidi. Tuttavia, è necessario tenere presente che i tempi di risposta medi segnalati da Application Insights saranno quindi più lenti rispetto alla vera velocità. Inoltre, il conteggio delle richieste sarà minore del conteggio reale.
Se questo rappresenta un problema, usare il campionamento.
impostare i filtri
In ApplicationInsights.xmlaggiungere una TelemetryProcessors
sezione come nell'esempio seguente:
<ApplicationInsights>
<TelemetryProcessors>
<BuiltInProcessors>
<Processor type="TraceTelemetryFilter">
<Add name="FromSeverityLevel" value="ERROR"/>
</Processor>
<Processor type="RequestTelemetryFilter">
<Add name="MinimumDurationInMS" value="100"/>
<Add name="NotNeededResponseCodes" value="200-400"/>
</Processor>
<Processor type="PageViewTelemetryFilter">
<Add name="DurationThresholdInMS" value="100"/>
<Add name="NotNeededNames" value="home,index"/>
<Add name="NotNeededUrls" value=".jpg,.css"/>
</Processor>
<Processor type="TelemetryEventFilter">
<!-- Names of events we don't want to see -->
<Add name="NotNeededNames" value="Start,Stop,Pause"/>
</Processor>
<!-- Exclude telemetry from availability tests and bots -->
<Processor type="SyntheticSourceFilter">
<!-- Optional: specify which synthetic sources,
comma-separated
- default is all synthetics -->
<Add name="NotNeededSources" value="Application Insights Availability Monitoring,BingPreview"
</Processor>
</BuiltInProcessors>
<CustomProcessors>
<Processor type="com.fabrikam.MyFilter">
<Add name="Successful" value="false"/>
</Processor>
</CustomProcessors>
</TelemetryProcessors>
</ApplicationInsights>
Esaminare il set completo di processori predefiniti.
Filtri incorporati
Questa sezione illustra i filtri predefiniti disponibili.
Filtro Dati di telemetria metrica
<Processor type="MetricTelemetryFilter">
<Add name="NotNeeded" value="metric1,metric2"/>
</Processor>
-
NotNeeded
: elenco delimitato da virgole di nomi di metriche personalizzati
Filtro Dati di telemetria visualizzazione di pagina
<Processor type="PageViewTelemetryFilter">
<Add name="DurationThresholdInMS" value="500"/>
<Add name="NotNeededNames" value="page1,page2"/>
<Add name="NotNeededUrls" value="url1,url2"/>
</Processor>
-
DurationThresholdInMS
: la durata fa riferimento al tempo impiegato per caricare la pagina. Se questo parametro è impostato, le pagine caricate più velocemente di questa volta non vengono segnalate. -
NotNeededNames
: elenco delimitato da virgole di nomi di pagina. -
NotNeededUrls
: elenco delimitato da virgole di frammenti di URL. Ad esempio,"home"
esclude tutte le pagine il cui URL include il termine "home".
Filtro di telemetria richiesta
<Processor type="RequestTelemetryFilter">
<Add name="MinimumDurationInMS" value="500"/>
<Add name="NotNeededResponseCodes" value="page1,page2"/>
<Add name="NotNeededUrls" value="url1,url2"/>
</Processor>
Filtro Origine sintetica
Filtra tutti i dati di telemetria con valori nella SyntheticSource
proprietà. Le richieste da bot, ragni e test di disponibilità sono incluse.
Filtra i dati di telemetria per tutte le richieste sintetiche:
<Processor type="SyntheticSourceFilter" />
Filtra i dati di telemetria per origini sintetiche specifiche:
<Processor type="SyntheticSourceFilter" >
<Add name="NotNeeded" value="source1,source2"/>
</Processor>
-
NotNeeded
: elenco delimitato da virgole di nomi di origine sintetica
Filtro Eventi di telemetria
Filtra gli eventi personalizzati registrati tramite TrackEvent():
<Processor type="TelemetryEventFilter" >
<Add name="NotNeededNames" value="event1, event2"/>
</Processor>
-
NotNeededNames
: elenco delimitato da virgole di nomi di eventi
Filtro Dati di telemetria traccia
Filtra le tracce dei log registrate usando TrackTrace() o un agente di raccolta del framework di registrazione:
<Processor type="TraceTelemetryFilter">
<Add name="FromSeverityLevel" value="ERROR"/>
</Processor>
I
FromSeverityLevel
valori validi sono:- OFF: filtra tutte le tracce.
- TRACE: nessun filtro. Uguale al livello TRACE.
- INFO: filtra il livello DI TRACCIA.
- AVVISO: filtra TRACCIA e INFO.
- ERRORE: filtra AVVISI, INFO e TRACE.
- CRITICO: filtra tutto ma CRITICO.
Filtri personalizzati
Le sezioni seguenti illustrano i passaggi per creare filtri personalizzati.
Codificare il filtro
Nel codice creare una classe che implementa TelemetryProcessor
:
package com.fabrikam.MyFilter;
import com.microsoft.applicationinsights.extensibility.TelemetryProcessor;
import com.microsoft.applicationinsights.telemetry.Telemetry;
public class SuccessFilter implements TelemetryProcessor {
/* Any parameters that are required to support the filter.*/
private final String successful;
/* Initializers for the parameters, named "setParameterName" */
public void setNotNeeded(String successful)
{
this.successful = successful;
}
/* This method is called for each item of telemetry to be sent.
Return false to discard it.
Return true to allow other processors to inspect it. */
@Override
public boolean process(Telemetry telemetry) {
if (telemetry == null) { return true; }
if (telemetry instanceof RequestTelemetry)
{
RequestTelemetry requestTelemetry = (RequestTelemetry) telemetry;
return request.getSuccess() == successful;
}
return true;
}
}
Richiamare il filtro nel file di configurazione
Ora, in ApplicationInsights.xml:
<ApplicationInsights>
<TelemetryProcessors>
<CustomProcessors>
<Processor type="com.fabrikam.SuccessFilter">
<Add name="Successful" value="false"/>
</Processor>
</CustomProcessors>
</TelemetryProcessors>
</ApplicationInsights>
Richiamare il filtro (Java Spring)
Per le applicazioni basate sul framework Spring, i processori di telemetria personalizzati devono essere registrati nella classe di applicazione principale come bean. Verranno quindi distribuiti automaticamente all'avvio dell'applicazione.
@Bean
public TelemetryProcessor successFilter() {
return new SuccessFilter();
}
Creare i propri parametri di filtro in application.properties
. Usare quindi il framework di configurazione esterna di Spring Boot per passare tali parametri nel filtro personalizzato.
Risoluzione dei problemi
Questa sezione offre un suggerimento per la risoluzione dei problemi.
Il filtro non funziona
Verificare di aver fornito valori di parametro validi. Ad esempio, la durata deve essere espressa da numeri interi. Se i valori non sono validi, il filtro verrà ignorato. Se il filtro personalizzato genera un'eccezione da un costruttore o un metodo impostato, verrà ignorato.
raccolta: metriche delle prestazioni Linux in Application Insights (deprecato)
Per esplorare le metriche delle prestazioni del sistema Linux in Application Insights, installare raccolto insieme al plug-in di Application Insights. Questa soluzione open source raccoglie diverse che relative al sistema e alla rete.
In genere, si userà collectd
se è già stato instrumentato il servizio Web Java con Application Insights. Offre più dati per migliorare le prestazioni dell'app o diagnosticare i problemi.
Ottenere la chiave di strumentazione
Nella portale di Azure aprire la risorsa di Application Insights in cui si desidera visualizzare i dati. In alternativa, è possibile creare una nuova risorsa.
Eseguire una copia della chiave di strumentazione, che identifica la risorsa.
Installare collectd e il plug-in
Nei computer server Linux:
- Installare collectd versione 5.4.0 o successive.
- Scaricare il plug-in writer raccolto di Application Insights. Annotare il numero di versione.
- Copiare il plug-in jar in
/usr/share/collectd/java
. - Modificare
/etc/collectd/collectd.conf
:Assicurarsi che il plug-in Java sia abilitato.
Aggiornare JVMArg per
java.class.path
includere il file jar seguente. Aggiornare il numero di versione in modo che corrisponda a quello scaricato:/usr/share/collectd/java/applicationinsights-collectd-1.0.5.jar
Aggiungere questo frammento di codice usando la chiave di strumentazione dalla risorsa:
LoadPlugin "com.microsoft.applicationinsights.collectd.ApplicationInsightsWriter" <Plugin ApplicationInsightsWriter> InstrumentationKey "Your key" </Plugin>
Di seguito è riportata una parte di un file di configurazione di esempio:
... # collectd plugins LoadPlugin cpu LoadPlugin disk LoadPlugin load ... # Enable Java Plugin LoadPlugin "java" # Configure Java Plugin <Plugin "java"> JVMArg "-verbose:jni" JVMArg "-Djava.class.path=/usr/share/collectd/java/applicationinsights-collectd-1.0.5.jar:/usr/share/collectd/java/collectd-api.jar" # Enabling Application Insights plugin LoadPlugin "com.microsoft.applicationinsights.collectd.ApplicationInsightsWriter" # Configuring Application Insights plugin <Plugin ApplicationInsightsWriter> InstrumentationKey "12345678-1234-1234-1234-123456781234" </Plugin> # Other plugin configurations ... ... </Plugin> ...
Configurare altri plug-in raccolti, che possono raccogliere vari dati da origini diverse.
Riavviare collectd
in base al relativo manuale.
Visualizzare i dati in Application Insights
Nella risorsa di Application Insights aprire Metriche e aggiungere grafici. Selezionare le metriche da visualizzare nella categoria Personalizzata .
Per impostazione predefinita, le metriche vengono aggregate per tutti i computer host da cui vengono raccolte le metriche. Per visualizzare le metriche per host, nel riquadro Dettagli grafico attivare Raggruppamento e quindi scegliere di raggruppare tramite CollectD-Host.
Escludere il caricamento di statistiche specifiche
Per impostazione predefinita, il plug-in Application Insights invia tutti i dati raccolti da tutti i plug-in abilitati collectd read
.
Per escludere i dati da plug-in o origini dati specifiche:
Modificare il file di configurazione.
In
<Plugin ApplicationInsightsWriter>
aggiungere righe di direttiva come quelle della tabella seguente:Direttiva Effetto Exclude disk
Escludere tutti i dati raccolti dal disk
plug-in.Exclude disk:read,write
Escludere le origini denominate read
ewrite
daldisk
plug-in.
Separare le direttive con un valore NewLine.
Problemi?
Questa sezione offre suggerimenti per la risoluzione dei problemi.
I dati non vengono visualizzati nel portale
Provare queste opzioni:
- Aprire Cerca per verificare se gli eventi non elaborati sono stati ricevuti. In alcuni casi necessitano di più tempo per la visualizzazione in Esplora metriche.
- Potrebbe essere necessario impostare eccezioni del firewall per i dati in uscita.
- Abilitare la traccia nel plug-in di Application Insights. Aggiungere questa riga in
<Plugin ApplicationInsightsWriter>
:SDKLogger true
- Aprire un terminale e avviare
collectd
in modalità dettagliata per visualizzare eventuali problemi che segnalano:sudo collectd -f
Problema noto
Il plug-in di scrittura di Application Insights non è compatibile con determinati plug-in di lettura. Alcuni plug-in a volte inviano NaN
, ma il plug-in di Application Insights prevede un numero a virgola mobile.
-
Sintomo: il
collectd
log mostra gli errori che includono "intelligenza artificiale: ... SintassiErrore: token imprevisto N." - Soluzione alternativa: escludere i dati raccolti dai plug-in di scrittura del problema.
Usare Micrometer con Application Insights Java SDK (non consigliato)
Il monitoraggio per applicazioni Micrometer misure le metriche per il codice di applicazione basato su Java Virtual Machine e consente di esportare i dati in sistemi di monitoraggio preferito. Questa sezione illustra come usare Micrometer con Application Insights per applicazioni Spring Boot e non Spring Boot.
Usare Spring Boot 1.5x
Aggiungere le dipendenze seguenti al file pom.xml o build.gradle :
- Application Insights spring-boot-starter 2.5.0 o versione successiva.
- Micrometer Registro di sistema di Azure 1.1.0 o versioni successive.
- Micrometer Spring Legacy 1.1.0 o versione successiva. Esegue il backport del codice autoconfig nel framework Spring.
- Risorsa ApplicationInsights.
Seguire questa procedura:
Aggiornare il file pom.xml dell'applicazione Spring Boot e aggiungere le dipendenze seguenti:
<dependency> <groupId>com.microsoft.azure</groupId> <artifactId>applicationinsights-spring-boot-starter</artifactId> <version>2.5.0</version> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-spring-legacy</artifactId> <version>1.1.0</version> </dependency> <dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-azure-monitor</artifactId> <version>1.1.0</version> </dependency>
Aggiornare il file application.properties o YML con la chiave di strumentazione di Application Insights usando la proprietà seguente:
azure.application-insights.instrumentation-key=<your-instrumentation-key-here>
Compilare l'applicazione ed eseguirla.
I passaggi precedenti devono essere aggiornati e in esecuzione con metriche pre-aggregazioni automaticamente recuperate in Monitoraggio di Azure.
Usare Spring 2.x
Aggiungere le dipendenze seguenti al file pom.xml o build.gradle :
- Application Insights Spring-boot-starter 2.1.2 o versione successiva
- Azure-spring-boot-metrics-starters 2.0.7 o versione successiva
- Una risorsa di Application Insights
Seguire questa procedura:
Aggiornare il file pom.xml dell'applicazione Spring Boot e aggiungerne la dipendenza seguente:
<dependency> <groupId>com.microsoft.azure</groupId> <artifactId>azure-spring-boot-metrics-starter</artifactId> <version>2.0.7</version> </dependency>
Aggiornare il file application.properties o YML con la chiave di strumentazione di Application Insights usando la proprietà seguente:
azure.application-insights.instrumentation-key=<your-instrumentation-key-here>
Compilare l'applicazione ed eseguirla.
I passaggi precedenti dovrebbero essere eseguiti con le metriche preaggregate automaticamente recuperate in Monitoraggio di Azure. Per altre informazioni su come ottimizzare Application Insights Spring Boot Starter, vedere il file leggimi in GitHub.
Metriche predefinite:
- Le metriche configurate automaticamente per Tomcat, JVM, Logback Metrics, Log4J Metrics, Uptime Metrics, Processor Metrics e FileDescriptorMetrics.
- Ad esempio, se Netflix Hystrix è presente nel percorso della classe, anche queste metriche vengono recuperate.
- Le metriche seguenti possono essere disponibili aggiungendo i rispettivi fagioli:
-
CacheMetrics
(CaffeineCache
,EhCache2
,GuavaCache
HazelcastCache
, eJCache
) DataBaseTableMetrics
HibernateMetrics
JettyMetrics
- Metrica di
OkHttp3
- Metrica di
Kafka
-
Disattivare la raccolta automatica delle metriche:
- Metriche JVM:
management.metrics.binders.jvm.enabled=false
- Metriche Logback:
management.metrics.binders.logback.enabled=false
- Metriche tempo di attività:
management.metrics.binders.uptime.enabled=false
- Metriche processore:
management.metrics.binders.processor.enabled=false
- FileDescriptorMetrics:
management.metrics.binders.files.enabled=false
- Hystrix Metrics if library on
classpath
:management.metrics.binders.hystrix.enabled=false
- Metriche di AspectJ se la libreria è in
classpath
:spring.aop.enabled=false
Nota
Specificare le proprietà precedenti nel file application.properties o application.yml dell'applicazione Spring Boot.
Usare Micrometer con applicazioni Web non Spring Boot
Aggiungere le dipendenze seguenti al file pom.xml o build.gradle :
- Application Insights Web Auto 2.5.0 o versione successiva
- Micrometer Azure Registry 1.1.0 o versione successiva
- Una risorsa di Application Insights
Seguire questa procedura:
Aggiungere le dipendenze seguenti nel file pom.xml o build.gradle :
<dependency> <groupId>io.micrometer</groupId> <artifactId>micrometer-registry-azure-monitor</artifactId> <version>1.1.0</version> </dependency> <dependency> <groupId>com.microsoft.azure</groupId> <artifactId>applicationinsights-web-auto</artifactId> <version>2.5.0</version> </dependency>
Se non è già stato fatto, aggiungere il file ApplicationInsights.xml nella cartella resources. Per altre informazioni, vedere Aggiungere un file di ApplicationInsights.xml.
Esempio di classe Servlet (genera una metrica di timer):
@WebServlet("/hello") public class TimedDemo extends HttpServlet { private static final long serialVersionUID = -4751096228274971485L; @Override @Timed(value = "hello.world") protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.getWriter().println("Hello World!"); MeterRegistry registry = (MeterRegistry) getServletContext().getAttribute("AzureMonitorMeterRegistry"); //create new Timer metric Timer sampleTimer = registry.timer("timer"); Stream<Integer> infiniteStream = Stream.iterate(0, i -> i+1); infiniteStream.limit(10).forEach(integer -> { try { Thread.sleep(1000); sampleTimer.record(integer, TimeUnit.MILLISECONDS); } catch (Exception e) {} }); } @Override public void init() throws ServletException { System.out.println("Servlet " + this.getServletName() + " has started"); } @Override public void destroy() { System.out.println("Servlet " + this.getServletName() + " has stopped"); } }
Esempio d classe di configurazione:
@WebListener public class MeterRegistryConfiguration implements ServletContextListener { @Override public void contextInitialized(ServletContextEvent servletContextEvent) { // Create AzureMonitorMeterRegistry private final AzureMonitorConfig config = new AzureMonitorConfig() { @Override public String get(String key) { return null; } @Override public Duration step() { return Duration.ofSeconds(60);} @Override public boolean enabled() { return false; } }; MeterRegistry azureMeterRegistry = AzureMonitorMeterRegistry.builder(config); //set the config to be used elsewhere servletContextEvent.getServletContext().setAttribute("AzureMonitorMeterRegistry", azureMeterRegistry); } @Override public void contextDestroyed(ServletContextEvent servletContextEvent) { } }
Per altre informazioni sulle metriche, vedere la documentazione di Micrometer.
Altro codice di esempio su come creare diversi tipi di metriche è disponibile nel repository GitHub ufficiale di Micrometer.
Associare altre raccolte di metriche
Le sezioni seguenti illustrano come raccogliere più metriche.
SpringBoot/Spring
Creare un oggetto bean della rispettiva categoria di metriche. Si supponga, ad esempio, di aver bisogno delle metriche di Guava Cache:
@Bean
GuavaCacheMetrics guavaCacheMetrics() {
Return new GuavaCacheMetrics();
}
Diverse metriche non sono abilitate per impostazione predefinita, ma possono essere associate nel modo precedente. Per un elenco completo, vedere il repository GitHub di Micrometer.
App non Spring
Aggiungere il codice di associazione seguente al file di configurazione:
New GuavaCacheMetrics().bind(registry);
Passaggi successivi
- Aggiungere il monitoraggio alle pagine Web per monitorare i tempi di caricamento delle pagine, le chiamate AJAX e le eccezioni del browser.
- Scrivere dati di telemetria personalizzati per tenere traccia dell'uso nel browser o nel server.
- Usare Log Analytics per query avanzate sui dati di telemetria dell'app.
- Usare La ricerca diagnostica.
- Prendere in considerazione il campionamento come alternativa al filtro che non sfasa le metriche.
- Per altre informazioni su Micrometer, vedere la documentazione di Micrometer.
- Per informazioni su Spring in Azure, vedere la documentazione di Spring in Azure.
- Per altre informazioni, vedere Azure per sviluppatori Java.