Procedura dettagliata: Eseguire l'esportazione in SQL da Application Insights tramite l'analisi di flussoWalkthrough: Export to SQL from Application Insights using Stream Analytics

Questo articolo illustra come spostare i dati di telemetria da Azure Application Insights in un database SQL di Azure usando l'esportazione continua e l'analisi di flusso di Azure.This article shows how to move your telemetry data from Azure Application Insights into an Azure SQL database by using Continuous Export and Azure Stream Analytics.

L'esportazione continua sposta i dati di telemetria in Archiviazione di Azure in formato JSON.Continuous export moves your telemetry data into Azure Storage in JSON format. Gli oggetti JSON verranno analizzati con l'analisi di flusso di Azure e verranno create righe in una tabella di database.We'll parse the JSON objects using Azure Stream Analytics and create rows in a database table.

Più in generale, l'esportazione continua consente di eseguire la propria analisi dei dati di telemetria che le app inviano ad Application Insights.(More generally, Continuous Export is the way to do your own analysis of the telemetry your apps send to Application Insights. È possibile adattare questo esempio di codice per eseguire altre operazioni con i dati di telemetria esportati, come l’aggregazione dei dati.You could adapt this code sample to do other things with the exported telemetry, such as aggregation of data.)

Si inizierà dal presupposto che si abbia già l'app che si vuole monitorare.We'll start with the assumption that you already have the app you want to monitor.

In questo esempio verranno usati i dati relativi alle visualizzazioni pagina, ma gli stessi criteri possono essere estesi facilmente ad altri tipi di dati, ad esempio eccezioni ed eventi personalizzati.In this example, we will be using the page view data, but the same pattern can easily be extended to other data types such as custom events and exceptions.

Aggiunta di Application Insights all'applicazioneAdd Application Insights to your application

Attività inizialiTo get started:

  1. Installare Application Insights per le pagine Web.Set up Application Insights for your web pages.

    In questo esempio viene considerata l'elaborazione dei dati di visualizzazione della pagina dai browser client, ma è possibile anche impostare Application Insights per il lato server dell'app Java o ASP.NET ed elaborare la richiesta, la dipendenza e altri dati di telemetria del server.(In this example, we'll focus on processing page view data from the client browsers, but you could also set up Application Insights for the server side of your Java or ASP.NET app and process request, dependency and other server telemetry.)

  2. Pubblicare l'app e controllare i dati di telemetria visualizzati nella risorsa di Application Insights.Publish your app, and watch telemetry data appearing in your Application Insights resource.

Creare l'archivio in AzureCreate storage in Azure

L'esportazione continua invia sempre i dati a un account di Archiviazione di Azure, pertanto è prima necessario creare l'archivio.Continuous export always outputs data to an Azure Storage account, so you need to create the storage first.

  1. Creare un account di archiviazione per la sottoscrizione nel portale di Azure.Create a storage account in your subscription in the Azure portal.

    Nel portale di Azure scegliere Nuovo, Dati, Archiviazione

  2. Creare un contenitoreCreate a container

    Nel nuovo archivio selezionare Contenitori, fare clic sul riquadro Contenitori e quindi su Aggiungi

  3. Copiare la chiave di accesso alle risorse di archiviazione.Copy the storage access key

    Sarà presto necessaria per configurare l'input per il servizio di analisi di flusso.You'll need it soon to set up the input to the stream analytics service.

    Nella risorsa di archiviazione aprire Impostazioni, Chiavi ed eseguire una copia della chiave di accesso primaria

Avviare l'esportazione continua nell'archiviazione di AzureStart continuous export to Azure storage

  1. Nel portale di Azure passare alla risorsa di Application Insights creata per la propria applicazione.In the Azure portal, browse to the Application Insights resource you created for your application.

    Scegliere Sfoglia, Application Insights e quindi l'applicazione

  2. Creare un'esportazione continua.Create a continuous export.

    Scegliere Impostazioni, Esportazione continua, Aggiungi

    Selezionare l'account di archiviazione creato in precedenza:Select the storage account you created earlier:

    Impostare la destinazione di esportazione

    Impostare i tipi di eventi da visualizzare:Set the event types you want to see:

    Scegliere i tipi di eventi

  3. Lasciare che alcuni dati si accumulino.Let some data accumulate. Attendere che gli utenti usino l'applicazione per qualche tempo.Sit back and let people use your application for a while. Verranno restituiti i dati di telemetria e sarà possibile esaminare i grafici statistici in Esplora metriche e i singoli eventi in Ricerca diagnostica.Telemetry will come in and you'll see statistical charts in metric explorer and individual events in diagnostic search.

    I dati verranno inoltre esportati nell'archivio.And also, the data will export to your storage.

  4. Esaminare i dati esportati, nel portale (scegliere Esplora, selezionare l'account di archiviazione, quindi Contenitori) o in Visual Studio.Inspect the exported data, either in the portal - choose Browse, select your storage account, and then Containers - or in Visual Studio. In Visual Studio, scegliere Visualizza/Cloud Explorere aprire Azure/Archiviazione.In Visual Studio, choose View / Cloud Explorer, and open Azure / Storage. (Se non si dispone di tale opzione del menu, è necessario installare l’SDK di Azure: aprire la finestra di dialogo Nuovo progetto, aprire Visual C#/Cloud/Ottieni Microsoft Azure SDK per .NET).(If you don't have this menu option, you need to install the Azure SDK: Open the New Project dialog and open Visual C# / Cloud / Get Microsoft Azure SDK for .NET.)

    In Visual Studio aprire Esplora server, Azure, Archiviazione

    Prendere nota della parte comune del nome del percorso, derivata dal nome dell’applicazione e dalla chiave di strumentazione.Make a note of the common part of the path name, which is derived from the application name and instrumentation key.

Gli eventi vengono scritti nei file BLOB in formato JSON.The events are written to blob files in JSON format. Ogni file può contenere uno o più eventi.Each file may contain one or more events. A questo punto sarà possibile leggere i dati degli eventi e filtrare i campi preferiti.So we'd like to read the event data and filter out the fields we want. È possibile eseguire una serie di operazioni sui dati, ma lo scopo di questo articolo è usare l'analisi di flusso per spostare i dati in un database SQL.There are all kinds of things we could do with the data, but our plan today is to use Stream Analytics to move the data to a SQL database. Sarà quindi più semplice eseguire molte query interessanti.That will make it easy to run lots of interesting queries.

Creare un database SQL di AzureCreate an Azure SQL Database

Iniziando di nuovo dalla sottoscrizione nel portale di Azure, creare il database (e un nuovo server, se necessario) in cui si scriveranno i dati.Once again starting from your subscription in Azure portal, create the database (and a new server, unless you've already got one) to which you'll write the data.

Nuovo, Dati, SQL

Assicurarsi che il server di database consenta di accedere ai servizi di Azure:Make sure that the database server allows access to Azure services:

Sfoglia, Server, il proprio server, Impostazioni, Firewall, Consenti l'accesso a Servizi di Azure

Creare una tabella nel database SQL di AzureCreate a table in Azure SQL DB

Connettersi al database creato nella sezione precedente con lo strumento di gestione preferito.Connect to the database created in the previous section with your preferred management tool. In questa procedura dettagliata verranno usati gli strumenti di gestione di SQL Server (SSMS).In this walkthrough, we will be using SQL Server Management Tools (SSMS).

Creare una nuova query ed eseguire il codice T-SQL seguente:Create a new query, and execute the following T-SQL:


CREATE TABLE [dbo].[PageViewsTable](
    [pageName] [nvarchar](max) NOT NULL,
    [viewCount] [int] NOT NULL,
    [url] [nvarchar](max) NULL,
    [urlDataPort] [int] NULL,
    [urlDataprotocol] [nvarchar](50) NULL,
    [urlDataHost] [nvarchar](50) NULL,
    [urlDataBase] [nvarchar](50) NULL,
    [urlDataHashTag] [nvarchar](max) NULL,
    [eventTime] [datetime] NOT NULL,
    [isSynthetic] [nvarchar](50) NULL,
    [deviceId] [nvarchar](50) NULL,
    [deviceType] [nvarchar](50) NULL,
    [os] [nvarchar](50) NULL,
    [osVersion] [nvarchar](50) NULL,
    [locale] [nvarchar](50) NULL,
    [userAgent] [nvarchar](max) NULL,
    [browser] [nvarchar](50) NULL,
    [browserVersion] [nvarchar](50) NULL,
    [screenResolution] [nvarchar](50) NULL,
    [sessionId] [nvarchar](max) NULL,
    [sessionIsFirst] [nvarchar](50) NULL,
    [clientIp] [nvarchar](50) NULL,
    [continent] [nvarchar](50) NULL,
    [country] [nvarchar](50) NULL,
    [province] [nvarchar](50) NULL,
    [city] [nvarchar](50) NULL
)

CREATE CLUSTERED INDEX [pvTblIdx] ON [dbo].[PageViewsTable]
(
    [eventTime] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON)

In questo esempio vengono usati i dati delle visualizzazioni pagina.In this sample, we are using data from page views. Per visualizzare gli altri dati disponibili, esaminare l'output JSON e vedere il modello di dati di esportazione.To see the other data available, inspect your JSON output, and see the export data model.

Creare un'istanza di analisi di flusso di AzureCreate an Azure Stream Analytics instance

Nel portale di Azure classicoselezionare il servizio di analisi di flusso di Azure e creare un nuovo processo di analisi di flusso:From the Classic Azure Portal, select the Azure Stream Analytics service, and create a new Stream Analytics job:

Quando viene creato il nuovo processo, espanderne i dettagli:When the new job is created, expand its details:

Impostare il percorso BLOBSet blob location

Impostarlo in modo da accettare l'input dal BLOB di esportazione continua:Set it to take input from your Continuous Export blob:

A questo punto è necessaria la chiave di accesso primaria dell'account di archiviazione, di cui si è preso nota in precedenza.Now you'll need the Primary Access Key from your Storage Account, which you noted earlier. Impostarla come chiave dell'account di archiviazione.Set this as the Storage Account Key.

Impostare lo schema prefisso percorsoSet path prefix pattern

Assicurarsi di impostare il formato della data su AAAA-MM-GG (con i trattini).Be sure to set the Date Format to YYYY-MM-DD (with dashes).

Lo schema prefisso percorso specifica il modo in cui l'analisi di flusso trova i file di input nell'archivio.The Path Prefix Pattern specifies how Stream Analytics finds the input files in the storage. È necessario configurarlo in modo che corrisponda alla modalità di archiviazione dei dati dell'esportazione continua.You need to set it to correspond to how Continuous Export stores the data. Impostarlo come segue:Set it like this:

webapplication27_12345678123412341234123456789abcdef0/PageViews/{date}/{time}

Esempio:In this example:

  • webapplication27 è il nome della risorsa di Application Insights, tutto minuscolo.webapplication27 is the name of the Application Insights resource, all in lower case.
  • 1234... è la chiave di strumentazione della risorsa di Application Insights con i trattini rimossi.1234... is the instrumentation key of the Application Insights resource with dashes removed.
  • PageViews è il tipo di dati da analizzare.PageViews is the type of data we want to analyze. I tipi disponibili dipendono dal filtro impostato nell'esportazione continua.The available types depend on the filter you set in Continuous Export. Esaminare i dati esportati per vedere gli altri tipi disponibili e vedere il modello di dati di esportazione.Examine the exported data to see the other available types, and see the export data model.
  • /{date}/{time} è uno schema scritto letteralmente./{date}/{time} is a pattern written literally.

Per ottenere il nome e la chiave di strumentazione (iKey) della risorsa di Application Insights, aprire Essentials nella relativa pagina di panoramica o aprire le impostazioni.To get the name and iKey of your Application Insights resource, open Essentials on its overview page, or open Settings.

Completare l'installazione inizialeFinish initial setup

Verificare il formato di serializzazione:Confirm the serialization format:

Confermare e chiudere la procedura guidata

Chiudere la procedura guidata e attendere il completamento dell'installazione.Close the wizard and wait for the setup to complete.

Suggerimento

Utilizzare la funzione di esempio per verificare di aver impostato correttamente il percorso di input.Use the Sample function to check that you have set the input path correctly. In caso di errore: verificare che ci siano dati nell’archiviazione per l’intervallo di tempo esemplificativo che si seleziona.If it fails: Check that there is data in the storage for the sample time range you chose. Modificare la definizione di input e controllare di impostare l'account di archiviazione, il prefisso del percorso e il formato di data corretto.Edit the input definition and check you set the storage account, path prefix and date format correctly.

Impostare la querySet query

Aprire la sezione delle query:Open the query section:

In Analisi di flusso selezionare Query

Sostituire la query predefinita con:Replace the default query with:


    SELECT flat.ArrayValue.name as pageName
    , flat.ArrayValue.count as viewCount
    , flat.ArrayValue.url as url
    , flat.ArrayValue.urlData.port as urlDataPort
    , flat.ArrayValue.urlData.protocol as urlDataprotocol
    , flat.ArrayValue.urlData.host as urlDataHost
    , flat.ArrayValue.urlData.base as urlDataBase
    , flat.ArrayValue.urlData.hashTag as urlDataHashTag
      ,A.context.data.eventTime as eventTime
      ,A.context.data.isSynthetic as isSynthetic
      ,A.context.device.id as deviceId
      ,A.context.device.type as deviceType
      ,A.context.device.os as os
      ,A.context.device.osVersion as osVersion
      ,A.context.device.locale as locale
      ,A.context.device.userAgent as userAgent
      ,A.context.device.browser as browser
      ,A.context.device.browserVersion as browserVersion
      ,A.context.device.screenResolution.value as screenResolution
      ,A.context.session.id as sessionId
      ,A.context.session.isFirst as sessionIsFirst
      ,A.context.location.clientip as clientIp
      ,A.context.location.continent as continent
      ,A.context.location.country as country
      ,A.context.location.province as province
      ,A.context.location.city as city
    INTO
      AIOutput
    FROM AIinput A
    CROSS APPLY GetElements(A.[view]) as flat

Tenere presente che le prime proprietà sono specifiche dei dati relativi alle visualizzazioni pagina.Notice that the first few properties are specific to page view data. Le esportazioni di altri tipi di dati di telemetria avranno proprietà diverse.Exports of other telemetry types will have different properties. Vedere il Riferimento dettagliato al modello di dati per i valori e i tipi di proprietàSee the detailed data model reference for the property types and values.

Configurare l'output nel databaseSet up output to database

Selezionare SQL come output.Select SQL as the output.

In Analisi di flusso selezionare Output

Specificare il database SQL.Specify the SQL database.

Inserire i dettagli del database

Chiudere la procedura guidata e attendere la notifica di configurazione dell'output.Close the wizard and wait for a notification that the output has been set up.

Avviare l'elaborazioneStart processing

Avviare il processo dalla barra delle azioni:Start the job from the action bar:

In Analisi di flusso fare clic su Avvia.

È possibile scegliere se avviare l'elaborazione dei dati a partire dai dati correnti o se includere i dati precedenti.You can choose whether to start processing the data starting from now, or to start with earlier data. La seconda opzione è utile se l'esportazione continua è già stata eseguita per un determinato periodo di tempo.The latter is useful if you have had Continuous Export already running for a while.

In Analisi di flusso fare clic su Avvia.

Dopo alcuni minuti, tornare agli strumenti di gestione di SQL Server e controllare il flusso dei dati.After a few minutes, go back to SQL Server Management Tools and watch the data flowing in. Usare ad esempio una query simile alla seguente:For example, use a query like this:

SELECT TOP 100 *
FROM [dbo].[PageViewsTable]