Separazione della telemetria da sviluppo, test e produzioneSeparating telemetry from Development, Test, and Production

Quando si sviluppa la versione successiva di un'applicazione Web, non è desiderabile combinare la telemetria di Application Insights della nuova versione con quella della versione già rilasciata.When you are developing the next version of a web application, you don't want to mix up the Application Insights telemetry from the new version and the already released version. Per evitare confusione, inviare i dati di telemetria da diverse fasi di sviluppo per separare le risorse di Application Insights, con chiavi di strumentazione separate (iKey).To avoid confusion, send the telemetry from different development stages to separate Application Insights resources, with separate instrumentation keys (ikeys). Per rendere più semplice la modifica della chiave di strumentazione man mano che una versione si sposta da una fase all'altra, può essere utile impostare il valore ikey nel codice anziché nel file di configurazione.To make it easier to change the instrumentation key as a version moves from one stage to another, it can be useful to set the ikey in code instead of in the configuration file.

Se il sistema è un servizio cloud di Azure, è disponibile un altro metodo di impostazione di valori iKey separati.)(If your system is an Azure Cloud Service, there's another method of setting separate ikeys.)

Sulle risorse e le chiavi di strumentazioneAbout resources and instrumentation keys

Quando si configura il monitoraggio di Application Insights per l'app Web, viene creata una risorsa di Application Insights in Microsoft Azure.When you set up Application Insights monitoring for your web app, you create an Application Insights resource in Microsoft Azure. Aprire questa risorsa nel portale di Azure per visualizzare e analizzare i dati di telemetria raccolti dall'app.You open this resource in the Azure portal in order to see and analyze the telemetry collected from your app. La risorsa viene identificata da una chiave di strumentazione (iKey).The resource is identified by an instrumentation key (ikey). Quando si installa il pacchetto Application Insights per monitorare l'applicazione, questo viene configurato con la chiave di strumentazione, in modo che sappia dove inviare la telemetria.When you install the Application Insights package to monitor your app, you configure it with the instrumentation key, so that it knows where to send the telemetry.

In genere si sceglie di usare risorse separate o una singola risorsa condivisa in scenari diversi:You typically choose to use separate resources or a single shared resource in different scenarios:

  • Diverse applicazioni indipendenti: usare una risorsa separata e l'iKey per ogni applicazione.Different, independent applications - Use a separate resource and ikey for each app.
  • Più componenti o ruoli di un'applicazione aziendale: usare una singola risorsa condivisa per tutte le applicazioni componente.Multiple components or roles of one business application - Use a single shared resource for all the component apps. È possibile filtrare o segmentare i dati di telemetria tramite la proprietà cloud_RoleName.Telemetry can be filtered or segmented by the cloud_RoleName property.
  • Sviluppo, test e rilascio: usare una risorsa separata e l'iKey per le versioni del sistema in 'stamp' o in fase di produzione.Development, Test, and Release - Use a separate resource and ikey for versions of the system in 'stamp' or stage of production.
  • Test A | B: usare una singola risorsa.A | B testing - Use a single resource. Creare un oggetto TelemetryInitializer per aggiungere una proprietà alla telemetria che identifica le varianti.Create a TelemetryInitializer to add a property to the telemetry that identifies the variants.

Chiave di strumentazione dinamicaDynamic instrumentation key

Per rendere più semplice la modifica del valore ikey man mano che il codice attraversa le fasi di produzione, impostarlo nel codice anziché nel file di configurazione.To make it easier to change the ikey as the code moves between stages of production, set it in code instead of in the configuration file.

Impostare la chiave in un metodo di inizializzazione, ad esempio global.aspx.cs in un servizio ASP.NET:Set the key in an initialization method, such as global.aspx.cs in an ASP.NET service:

C#C#

protected void Application_Start()
{
  Microsoft.ApplicationInsights.Extensibility.
    TelemetryConfiguration.Active.InstrumentationKey = 
      // - for example -
      WebConfigurationManager.AppSettings["ikey"];
  ...

In questo esempio i valori ikey per le diverse risorse vengono inseriti in versioni diverse del file di configurazione Web.In this example, the ikeys for the different resources are placed in different versions of the web configuration file. Lo scambio del file di configurazione Web, che è possibile eseguire nell'ambito dello script di rilascio, consente di scambiare la risorsa di destinazione.Swapping the web configuration file - which you can do as part of the release script - will swap the target resource.

Pagina WebWeb pages

Il valore iKey viene usato anche nelle pagine Web dell'app, nello script ottenuto dal pannello Avvio rapido.The iKey is also used in your app's web pages, in the script that you got from the quick start blade. Invece di codificarlo letteralmente nello script, generarlo dallo stato del server.Instead of coding it literally into the script, generate it from the server state. Ad esempio, in un'app ASP.NET:For example, in an ASP.NET app:

JavaScript in RazorJavaScript in Razor

<script type="text/javascript">
// Standard Application Insights web page script:
var appInsights = window.appInsights || function(config){ ...
// Modify this part:
}({instrumentationKey:  
  // Generate from server property:
  "@Microsoft.ApplicationInsights.Extensibility.
     TelemetryConfiguration.Active.InstrumentationKey"
}) // ...

Creare risorse di Application Insights aggiuntiveCreate additional Application Insights resources

Per separare i dati di telemetria per componenti diversi dell'applicazione o per indicatori diversi (sviluppo, test o produzione) dello stesso componente, è necessario creare una nuova risorsa di Application Insights.To separate telemetry for different application components, or for different stamps (dev/test/production) of the same component, then you'll have to create a new Application Insights resource.

In portal.azure.comaggiungere una nuova risorsa di Application Insights:In the portal.azure.com, add an Application Insights resource:

Fare clic su Nuovo, Application Insights

  • tipo di applicazione influisce sul contenuto del pannello Panoramica e sulle proprietà disponibili in Esplora metrichedi Microsoft Azure.Application type affects what you see on the overview blade and the properties available in metric explorer. Se il tipo dell'app non è visualizzato, scegliere uno dei tipi Web per le pagine Web.If you don't see your type of app, choose one of the web types for web pages.
  • gruppo di risorse è utile per gestire le proprietà come il controllo di accessodi Microsoft Azure.Resource group is a convenience for managing properties like access control. È possibile usare gruppi di risorse separati per lo sviluppo, i test e la produzione.You could use separate resource groups for development, test, and production.
  • sottoscrizione è il proprio account di pagamento in Azure.Subscription is your payment account in Azure.
  • Il percorso è la posizione in cui vengono conservati i dati.Location is where we keep your data. e attualmente non è modificabile.Currently it can't be changed.
  • Aggiungi al dashboard inserisce un riquadro di accesso rapido alla propria risorsa nella pagina iniziale di Azure.Add to dashboard puts a quick-access tile for your resource on your Azure Home page.

La creazione della risorsa richiede pochi secondi.Creating the resource takes a few seconds. Al termine della creazione verrà visualizzato un avviso.You'll see an alert when it's done.

È possibile scrivere uno script di PowerShell per creare automaticamente una risorsa.(You can write a PowerShell script to create a resource automatically.)

Ottenere la chiave di strumentazioneGetting the instrumentation key

La chiave di strumentazione identifica la risorsa creata.The instrumentation key identifies the resource that you created.

Fare clic su Informazioni di base, quindi sulla chiave di strumentazione e infine premere CTRL+C.

Sono necessarie le chiavi di strumentazione di tutte le risorse a cui l'app invierà dati.You need the instrumentation keys of all the resources to which your app will send data.

Filtrare in base al numero di buildFilter on build number

Quando si pubblica una nuova versione dell'app, potrebbe essere opportuno separare i dati telemetrici delle diverse build.When you publish a new version of your app, you'll want to be able to separate the telemetry from different builds.

È possibile impostare la proprietà della versione dell'applicazione in modo che sia possibile filtrare i risultati della ricerca e di Esplora metriche.You can set the Application Version property so that you can filter search and metric explorer results.

Filtro su una proprietà

Esistono diversi metodi di impostazione della proprietà della versione dell'applicazione.There are several different methods of setting the Application Version property.

  • Impostare direttamente:Set directly:

    telemetryClient.Context.Component.Version = typeof(MyProject.MyClass).Assembly.GetName().Version;

  • Eseguire il wrapping di tale riga in un inizializzatore di telemetria per assicurarsi che tutte le istanze di TelemetryClient siano impostate in modo coerente.Wrap that line in a telemetry initializer to ensure that all TelemetryClient instances are set consistently.
  • [ASP.NET] Impostare la versione BuildInfo.config.[ASP.NET] Set the version in BuildInfo.config. Il modulo Web selezionerà la versione dal nodo BuildLabel.The web module will pick up the version from the BuildLabel node. Includere questo file nel progetto e ricordarsi di impostare la proprietà Copia sempre in Esplora soluzioni.Include this file in your project and remember to set the Copy Always property in Solution Explorer.

    
    <?xml version="1.0" encoding="utf-8"?>
    <DeploymentEvent xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://schemas.microsoft.com/VisualStudio/DeploymentEvent/2013/06">
      <ProjectName>AppVersionExpt</ProjectName>
      <Build type="MSBuild">
        <MSBuild>
          <BuildLabel kind="label">1.0.0.2</BuildLabel>
        </MSBuild>
      </Build>
    </DeploymentEvent>
    
  • [ASP.NET] Generare automaticamente BuildInfo.config in MSBuild.[ASP.NET] Generate BuildInfo.config automatically in MSBuild. A tale scopo, aggiungere alcune righe al file .csproj:To do this, add a few lines to your .csproj file:

    
    <PropertyGroup>
      <GenerateBuildInfoConfigFile>true</GenerateBuildInfoConfigFile>    <IncludeServerNameInBuildInfo>true</IncludeServerNameInBuildInfo>
    </PropertyGroup>
    

    Viene generato un file denominato NomeProgetto.BuildInfo.config. Il processo di pubblicazione rinomina il file in BuildInfo.config.This generates a file called yourProjectName.BuildInfo.config. The Publish process renames it to BuildInfo.config.

    L'etichetta di compilazione contiene un segnaposto (AutoGen_) se la compilazione viene eseguita in Visual Studio.The build label contains a placeholder (AutoGen_...) when you build with Visual Studio. Se la compilazione viene eseguita con MSBuild, viene inserito il numero di versione corretto.But when built with MSBuild, it is populated with the correct version number.

    Per consentire a MSBuild di generare i numeri di versione, in AssemblyReference.cs impostare la versione come, ad esempio, 1.0.* .To allow MSBuild to generate version numbers, set the version like 1.0.* in AssemblyReference.cs

Verifica della versioneVersion and release tracking

Per tenere traccia della versione dell'applicazione, assicurarsi che il processo di Microsoft Build Engine generi buildinfo.config.To track the application version, make sure buildinfo.config is generated by your Microsoft Build Engine process. Nel file con estensione csproj, aggiungere:In your .csproj file, add:


    <PropertyGroup>
      <GenerateBuildInfoConfigFile>true</GenerateBuildInfoConfigFile>    <IncludeServerNameInBuildInfo>true</IncludeServerNameInBuildInfo>
    </PropertyGroup>

Quando ha le informazioni di compilazione, il modulo Web di Application Insights aggiunge automaticamente la versione dell'applicazione come proprietà a ogni elemento dei dati di telemetria.When it has the build info, the Application Insights web module automatically adds Application version as a property to every item of telemetry. Questo consente di applicare filtri in base alla versione quando si eseguono ricerche diagnostiche o quando si esaminano le metriche.That allows you to filter by version when you perform diagnostic searches, or when you explore metrics.

Si noti tuttavia che il numero di versione della build viene generato solo da Microsoft Build Engine, non dalla build dello sviluppatore in Visual Studio.However, notice that the build version number is generated only by the Microsoft Build Engine, not by the developer build in Visual Studio.

Annotazioni sulle versioniRelease annotations

Se si usa Visual Studio Team Services, è possibile aggiungere un marcatore di annotazione ai grafici quando si rilascia una nuova versione.If you use Visual Studio Team Services, you can get an annotation marker added to your charts whenever you release a new version. L'immagine seguente illustra come viene visualizzato il marcatore.The following image shows how this marker appears.

Screenshot di annotazione sulla versione di esempio in un grafico

Passaggi successiviNext steps