Filtrare i dati di telemetria nell'App Web JavaFilter telemetry in your Java web app

I filtri consentono di selezionare i dati di telemetria inviati dall'App Web Java ad Application Insights.Filters provide a way to select the telemetry that your Java web app sends to Application Insights. Esistono alcuni filtri pronti da usare che è possibile applicare, inoltre è possibile creare filtri personalizzati.There are some out-of-the-box filters that you can use, and you can also write your own custom filters.

I filtri pronti da usare includono:The out-of-the-box filters include:

  • Livello di gravità della tracciaTrace severity level
  • URL, parole chiave o codici di risposta specificiSpecific URLs, keywords or response codes
  • Risposte rapide, vale a dire richieste a cui l'app ha risposto rapidamenteFast responses - that is, requests to which your app responded to quickly
  • Nomi degli eventi specificiSpecific event names

Nota

I filtri alterano le metriche dell'app.Filters skew the metrics of your app. Ad esempio, si potrebbe decidere che, per diagnosticare un problema di risposte lente, verrà impostato un filtro per ignorare i tempi di risposta rapidi.For example, you might decide that, in order to diagnose slow responses, you will set a filter to discard fast response times. È necessario però tenere presente che i tempi medi di risposta segnalati da Application Insights saranno così più lenti rispetto alla velocità effettiva e che il numero di richieste sarà inferiore rispetto al numero reale.But you must be aware that the average response times reported by Application Insights will then be slower than the true speed, and the count of requests will be smaller than the real count. Se questo rappresenta un problema, usare il campionamento.If this is a concern, use Sampling instead.

Impostazione di filtriSetting filters

In ApplicationInsights.xml aggiungere una sezione TelemetryProcessors come in questo esempio:In ApplicationInsights.xml, add a TelemetryProcessors section like this example:


    <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 l'insieme completo dei processori incorporati.Inspect the full set of built-in processors.

Filtri incorporatiBuilt-in filters

Filtro Dati di telemetria metricaMetric Telemetry filter


           <Processor type="MetricTelemetryFilter">
                  <Add name="NotNeeded" value="metric1,metric2"/>
           </Processor>
  • NotNeeded: elenco delimitato da virgole con i nomi delle metriche personalizzate.NotNeeded - Comma-separated list of custom metric names.

Filtro Dati di telemetria visualizzazione di paginaPage View Telemetry filter


           <Processor type="PageViewTelemetryFilter">
                  <Add name="DurationThresholdInMS" value="500"/>
                  <Add name="NotNeededNames" value="page1,page2"/>
                  <Add name="NotNeededUrls" value="url1,url2"/>
           </Processor>
  • DurationThresholdInMS: la durata si riferisce al tempo impiegato per caricare la pagina.DurationThresholdInMS - Duration refers to the time taken to load the page. Se è impostato, le pagine caricate più velocemente del tempo definito non vengono segnalate.If this is set, pages that loaded faster than this time are not reported.
  • NotNeededNames: elenco delimitato da virgole con i nomi delle pagine.NotNeededNames - Comma-separated list of page names.
  • NotNeededUrls: elenco delimitato da virgole con i frammenti di URL.NotNeededUrls - Comma-separated list of URL fragments. Ad esempio, "home" esclude tutte le pagine il cui URL include il termine "home".For example, "home" filters out all pages that have "home" in the URL.

Filtro Dati di telemetria richiestaRequest Telemetry Filter


           <Processor type="RequestTelemetryFilter">
                  <Add name="MinimumDurationInMS" value="500"/>
                  <Add name="NotNeededResponseCodes" value="page1,page2"/>
                  <Add name="NotNeededUrls" value="url1,url2"/>
           </Processor>

Filtro Origine sinteticaSynthetic Source filter

Esclude tutti i dati di telemetria che dispongono di valori nella proprietà SyntheticSource.Filters out all telemetry that have values in the SyntheticSource property. Questi dati includono le richieste da bot, spider e test di disponibilità.These include requests from bots, spiders and availability tests.

Escludere i dati di telemetria per tutte le richieste sintetiche:Filter out telemetry for all synthetic requests:


           <Processor type="SyntheticSourceFilter" />

Escludere i dati di telemetria per le origini sintetiche specifiche:Filter out telemetry for specific synthetic sources:


           <Processor type="SyntheticSourceFilter" >
                  <Add name="NotNeeded" value="source1,source2"/>
           </Processor>
  • NotNeeded: elenco delimitato da virgole con i nomi delle origini sintetiche.NotNeeded - Comma-separated list of synthetic source names.

Filtro Eventi di telemetriaTelemetry Event filter

Esclude gli eventi personalizzati (registrati tramite TrackEvent()).Filters custom events (logged using TrackEvent()).


           <Processor type="TelemetryEventFilter" >
                  <Add name="NotNeededNames" value="event1, event2"/>
           </Processor>
  • NotNeededNames: elenco delimitato da virgole con i nomi degli eventi.NotNeededNames - Comma-separated list of event names.

Filtro Dati di telemetria tracciaTrace Telemetry filter

Esclude le tracce di log (registrate tramite TrackTrace() o un agente di raccolta del framework di registrazione).Filters log traces (logged using TrackTrace() or a logging framework collector).


           <Processor type="TraceTelemetryFilter">
                  <Add name="FromSeverityLevel" value="ERROR"/>
           </Processor>
  • I valori FromSeverityLevel validi sono:FromSeverityLevel valid values are:
    • OFF - Esclude TUTTE le tracceOFF - Filter out ALL traces
    • TRACE - Non applica alcun filtro.TRACE - No filtering. Corrisponde al livello Traceequals to Trace level
    • INFO - Esclude il livello TRACEINFO - Filter out TRACE level
    • WARN - Esclude TRACE e INFOWARN - Filter out TRACE and INFO
    • ERROR - Esclude WARN, INFO, TRACEERROR - Filter out WARN, INFO, TRACE
    • CRITICAL - Esclude tutto tranne CRITICALCRITICAL - filter out all but CRITICAL

Filtri personalizzatiCustom filters

1. Codificare il filtro1. Code your filter

Nel codice creare una classe che implementa TelemetryProcessor:In your code, create a class that implements 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;
       }
    }

2. Richiamare il filtro nel file di configurazione2. Invoke your filter in the configuration file

In ApplicationInsights.xml:In ApplicationInsights.xml:



    <ApplicationInsights>
      <TelemetryProcessors>
        <CustomProcessors>
          <Processor type="com.fabrikam.SuccessFilter">
            <Add name="Successful" value="false"/>
          </Processor>
        </CustomProcessors>
      </TelemetryProcessors>
    </ApplicationInsights>

Risoluzione dei problemiTroubleshooting

Il filtro non funziona.My filter isn't working.

  • Verificare che siano stati specificati valori di parametro validi.Check that you have provided valid parameter values. Ad esempio, la durata deve essere espressa da numeri interi.For example, durations should be integers. Se i valori non sono validi, il filtro verrà ignorato.Invalid values will cause the filter to be ignored. Se il filtro personalizzato genera un'eccezione da un costruttore o un metodo impostato, verrà ignorato.If your custom filter throws an exception from a constructor or set method, it will be ignored.

Passaggi successiviNext steps

  • Campionamento: prendere in considerazione il campionamento come un'alternativa che non altera le metriche.Sampling - Consider sampling as an alternative that does not skew your metrics.