Procedura dettagliata: Eseguire l'esportazione in SQL da Application Insights tramite l'analisi di flusso

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.

L'esportazione continua sposta i dati di telemetria in Archiviazione di Azure in formato JSON. Gli oggetti JSON verranno analizzati con l'analisi di flusso di Azure e verranno create righe in una tabella di database.

Più in generale, l'esportazione continua consente di eseguire la propria analisi dei dati di telemetria che le app inviano ad Application Insights. È possibile adattare questo esempio di codice per eseguire altre operazioni con i dati di telemetria esportati, come l’aggregazione dei dati.

Si inizierà dal presupposto che si abbia già l'app che si vuole monitorare.

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.

Aggiunta di Application Insights all'applicazione

Attività iniziali

  1. Installare Application Insights per le pagine Web.

    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.

  2. Pubblicare l'app e controllare i dati di telemetria visualizzati nella risorsa di Application Insights.

Creare l'archivio in Azure

L'esportazione continua invia sempre i dati a un account di Archiviazione di Azure, pertanto è prima necessario creare l'archivio.

  1. Creare un account di archiviazione per la sottoscrizione nel portale di Azure.

    Nel portale di Azure scegliere Nuovo, Dati, Archiviazione Selezionare Classica, scegliere Crea. Specificare un nome di archiviazione.

  2. Creare un contenitore

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

  3. Copiare la chiave di accesso alle risorse di archiviazione.

    Sarà presto necessaria per configurare l'input per il servizio di analisi di flusso.

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

Avviare l'esportazione continua nell'archiviazione di Azure

  1. Nel portale di Azure passare alla risorsa di Application Insights creata per la propria applicazione.

    Scegliere Sfoglia, Application Insights e quindi l'applicazione

  2. Creare un'esportazione continua.

    Scegliere Impostazioni, Esportazione continua, Aggiungi

    Selezionare l'account di archiviazione creato in precedenza:

    Impostare la destinazione di esportazione

    Impostare i tipi di eventi da visualizzare:

    Scegliere i tipi di eventi

  3. Lasciare che alcuni dati si accumulino. Attendere che gli utenti usino l'applicazione per qualche tempo. Verranno restituiti i dati di telemetria e sarà possibile esaminare i grafici statistici in Esplora metriche e i singoli eventi in Ricerca diagnostica.

    I dati verranno inoltre esportati nell'archivio.

  4. Esaminare i dati esportati, nel portale (scegliere Esplora, selezionare l'account di archiviazione, quindi Contenitori) o in Visual Studio. In Visual Studio, scegliere Visualizza/Cloud Explorere aprire Azure/Archiviazione. (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).

    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.

Gli eventi vengono scritti nei file BLOB in formato JSON. Ogni file può contenere uno o più eventi. A questo punto sarà possibile leggere i dati degli eventi e filtrare i campi preferiti. È 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. Sarà quindi più semplice eseguire molte query interessanti.

Creare un database SQL di Azure

Iniziando di nuovo dalla sottoscrizione nel portale di Azure, creare il database (e un nuovo server, se necessario) in cui si scriveranno i dati.

Nuovo, Dati, SQL

Assicurarsi che il server di database consenta di accedere ai servizi di Azure:

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

Creare una tabella nel database SQL di Azure

Connettersi al database creato nella sezione precedente con lo strumento di gestione preferito. In questa procedura dettagliata verranno usati gli strumenti di gestione di SQL Server (SSMS).

Creare una nuova query ed eseguire il codice T-SQL seguente:


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. Per visualizzare gli altri dati disponibili, esaminare l'output JSON e vedere il modello di dati di esportazione.

Creare un'istanza di analisi di flusso di Azure

Nel portale di Azure classicoselezionare il servizio di analisi di flusso di Azure e creare un nuovo processo di analisi di flusso:

Quando viene creato il nuovo processo, espanderne i dettagli:

Impostare il percorso BLOB

Impostarlo in modo da accettare l'input dal BLOB di esportazione continua:

A questo punto è necessaria la chiave di accesso primaria dell'account di archiviazione, di cui si è preso nota in precedenza. Impostarla come chiave dell'account di archiviazione.

Impostare lo schema prefisso percorso

Assicurarsi di impostare il formato della data su AAAA-MM-GG (con i trattini).

Lo schema prefisso percorso specifica il modo in cui l'analisi di flusso trova i file di input nell'archivio. È necessario configurarlo in modo che corrisponda alla modalità di archiviazione dei dati dell'esportazione continua. Impostarlo come segue:

webapplication27_12345678123412341234123456789abcdef0/PageViews/{date}/{time}

Esempio:

  • webapplication27 è il nome della risorsa di Application Insights, tutto minuscolo.
  • 1234... è la chiave di strumentazione della risorsa di Application Insights con i trattini rimossi.
  • PageViews è il tipo di dati da analizzare. I tipi disponibili dipendono dal filtro impostato nell'esportazione continua. Esaminare i dati esportati per vedere gli altri tipi disponibili e vedere il modello di dati di esportazione.
  • /{date}/{time} è uno schema scritto letteralmente.

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.

Completare l'installazione iniziale

Verificare il formato di serializzazione:

Confermare e chiudere la procedura guidata

Chiudere la procedura guidata e attendere il completamento dell'installazione.

Suggerimento

Utilizzare la funzione di esempio per verificare di aver impostato correttamente il percorso di input. In caso di errore: verificare che ci siano dati nell’archiviazione per l’intervallo di tempo esemplificativo che si seleziona. Modificare la definizione di input e controllare di impostare l'account di archiviazione, il prefisso del percorso e il formato di data corretto.

Impostare la query

Aprire la sezione delle query:

In Analisi di flusso selezionare Query

Sostituire la query predefinita con:


    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. Le esportazioni di altri tipi di dati di telemetria avranno proprietà diverse. Vedere il Riferimento dettagliato al modello di dati per i valori e i tipi di proprietà

Configurare l'output nel database

Selezionare SQL come output.

In Analisi di flusso selezionare Output

Specificare il database SQL.

Inserire i dettagli del database

Chiudere la procedura guidata e attendere la notifica di configurazione dell'output.

Avviare l'elaborazione

Avviare il processo dalla barra delle azioni:

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. La seconda opzione è utile se l'esportazione continua è già stata eseguita per un determinato periodo di tempo.

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. Usare ad esempio una query simile alla seguente:

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