Introduzione

Nell'ambiente aziendale di oggi, la capacità di analizzare i dati in quanto arriva, non ore dopo, può significare la differenza tra la presa di un'opportunità e la scomparsa del tutto. I dashboard di analisi in tempo reale forniscono team operativi, dirigenti e analisti di dati con informazioni continuamente aggiornate su metriche come la salute del sistema, il comportamento del cliente, le letture dei sensori IoT e le transazioni finanziarie.

Azure Data Explorer (ADX) emerge come una soluzione leader progettata specificamente per queste esigenze. Offre condotte di ingestione gestite, storage colonnare ottimizzato per le serie temporali e dati di registro, e la potente lingua di query Kusto (KQL) per trasformare gli eventi grezzi in visualizzazioni attuabili. Questo articolo fornisce una guida pratica e pratica per la costruzione di un cruscotto di analisi in tempo reale di produzione utilizzando Azure Data Explorer e l'integrazione di dati di scrittura

Cos'è Azure Data Explorer?

Azure Data Explorer è un servizio di analisi dei dati di grandi dimensioni, gestito e ad alte prestazioni, che eccelle nell'analisi interattiva di grandi volumi di dati strutturati e semistrutturati.

Le caratteristiche chiave che rendono ADX ideale per le dashboard in tempo reale includono:

  • Ingestione di standard:[] I dati ingeriscono da Azure Event Hub, IoT Hub, Kafka e altre fonti di streaming con latenza bassa di pochi secondi.
  • Riservazione e indicizzazione del colonnare:[ I dati vengono compressi e indicizzati utilizzando invertiti e indici B-tree, consentendo una scansione rapida e filtraggio.
  • Kusto Query Language (KQL):[] Una lingua di sola lettura, simile a SQL con operatori integrati per analisi di serie temporali, funzioni statistiche, unimenti e aggregazioni.
  • Native Power BI integration:[ DirectQuery mode and import mode permettono ai cruscotti di rinfrescarsi automaticamente o in tempo reale.
  • Auto-scaling e gestione dei costi:[[] I cluster possono scalare la computazione e lo storage in modo indipendente, e è possibile impostare una politica della cache per mantenere i dati caldi in memoria per domande veloci.

ADX è spesso paragonato ai tradizionali data warehouse come Azure Synapse o Amazon Redshift, ma è ottimizzato per alta cardinalità[] (ad esempio, milioni di dispositivi unici) e append-only workloads]] tipico dei log e time-series.

Impostazione dell'ambiente

Creazione di un cluster di Azure Data Explorer

Per iniziare, accedi al portale [Azure[[]] e crea una nuova risorsa di tipo "Azure Data Explorer Cluster". Scegli un abbonamento, un gruppo di risorse e una regione che si allinea con le tue fonti di dati (preferibilmente la stessa regione per ridurre la latenza).

  • Dev/Test:[ Dev(Standard D13 v2) o Standard D14 v2 per piccoli carichi di lavoro.
  • Produzione:[ Standard L8s v2, Standard L16s v2, o la nuova famiglia SKU con SSD NVMe locali (ad esempio, Standard L8s v3) per un elevato rendimento.
  • Alta concurrenza:[] cluster con più istanze che possono auto-scalarsi in base alla CPU o al carico di ingestione.

Per dashboard in tempo reale, si potrebbe desiderare di impostare una politica cache[[]]] di diversi giorni (o settimane) in modo che tutti i dati recenti siano serviti dalla memoria.

Configurazione delle fonti di ingestione dei dati

Le dashboard in tempo reale dipendono dai dati di streaming. ADX supporta diversi approcci di ingestione:

  • Molti di evento:[] La maggior parte dei comuni per registri e telemetria. Creare uno spazio di nome di Event Hubs e un hub, quindi configurare una connessione di dati in ADX che mappa gli eventi JSON o Avro a uno schema di tabella.
  • IoT Hub:[] Per i dispositivi IoT Hub fornisce l'autenticazione del dispositivo e il routing dei messaggi direttamente a ADX.
  • Kafka:[] Usa il connettore ADX Kafka per portare flussi da Apache Kafka o Confluent.
  • Blob Storage/Data Lake:[ Per l'ingestione in tempo reale o in batch da file Parquet/CSV memorizzati in Azure Blob o ADLS Gen2.

ADX può ingerire i dati da più partizioni contemporaneamente. Per ogni connessione di dati, definirete un table e un mapping[] che trasforma i campi JSON in colonne ADX. L'epoca di mappatura può anche gestire le conversioni di tipo di dati (tempo).

Ingestione di dati in tempo reale

Creazione di tabelle e mappe

Prima di ingerire, creare la tabella di destinazione nel database ADX utilizzando KQL. Ad esempio, una tabella per i log di errore di applicazione potrebbe assomigliare a:

.create table AppLogs (Timestamp: datetime, Level: string, Service: string, Message: string, CorrelationId: string)

Quindi creare una mappatura di ingestione per il formato che utilizza la sorgente di streaming. Per JSON da Event Hubs, il comando è:

.create table AppLogs ingestion json mapping 'AppLogsJsonMapping' '[{"column":"Timestamp","datatype":"datetime","properties":{"path":"$.timestamp"}},{"column":"Level","datatype":"string","properties":{"path":"$.level"}},{"column":"Service","datatype":"string","properties":{"path":"$.service"}},{"column":"Message","datatype":"string","properties":{"path":"$.message"}},{"column":"CorrelationId","datatype":"string","properties":{"path":"$.correlationId"}}]'

Queste mappe dicono ad ADX come estrarre i campi da ogni evento.

Impostazione della connessione degli hub eventi

Nel portale Azure, naviga nel tuo database ADX, seleziona "Connessioni dati", e aggiungi una connessione Event Hubs. Fornisci il namespace, il nome hub, il gruppo di consumatori (utilizza un gruppo di consumatori dedicato per ADX per evitare conflitti), e il nome della tabella. Specifica il riferimento di mappatura creato. ADX inizierà automaticamente a consumare eventi e renderli disponibili per le query entro pochi secondi.

Per scenari di alto rendimento, prendere in considerazione l'utilizzo ]streaming ingestion (attivato sul cluster) invece di ingestione batch. Streaming ingestione scrive i dati direttamente nelle proporzioni colonnari senza stadi intermedi, fornendo latencies sotto 10 secondi. Per la maggior parte in tempo reale dashboard, questa è la modalità preferita.

Accostamento con Kusto Query Language (KQL)

Il cuore di qualsiasi dashboard ADX è la query KQL che aggrega e filtra i dati in tempo reale.

Filtro di base e Aggregazione

Per contare gli eventi di errore per servizio nell'ultima ora in un minuto bins:

AppLogs
| where Timestamp > ago(1h)
| where Level == "Error"
| summarize ErrorCount = count() by Service, bin(Timestamp, 1m)
| order by Timestamp asc

Questo restituisce una serie di tempo pronto per un grafico di linea.

Calcoli percentuali

Per metriche di latenza, si potrebbe desiderare P50, P95 e P99:

ServiceLatency
| where Timestamp > ago(30m)
| summarize P50 = percentile(LatencyMs, 50), P95 = percentile(LatencyMs, 95), P99 = percentile(LatencyMs, 99) by Service

Iscriviti con i dati di riferimento

Spesso i cruscotti devono arricchire gli eventi con dati di ricerca statici (ad esempio, le posizioni dei dispositivi). ADX supporta unizioni leggere. Ad esempio, unisciti al flusso di telemetria con una tabella di dispositivi:

Telemetry
| where Timestamp > ago(15m)
| lookup Devices on DeviceId
| project Timestamp, DeviceId, Region, MetricValue

Per le grandi tabelle di riferimento, si consideri materializzarle utilizzando visualizzazioni materializzate[]] o memorizzarle in un cluster separato con una politica di cache appropriata.

Funzioni di tempo-serie

ADX include potenti operazioni di serie temporali come ] per l'analisi delle frequenze, [ per la stagionalità, e per l'analisi delle frequenze. Esempio: rilevare anomalie nei conteggi di errore HTTP:

AppLogs
| where Timestamp > ago(2h)
| make-series ErrorCount = count() on Timestamp step 1m
| extend anomalies = series_decompose(ErrorCount, -1, 2.0, 'ok')
| mv-expand Timestamp, ErrorCount, anomalies
| where anomalies[2] < 0 or anomalies[2] > 0

Tali query sono avanzate, ma possono alimentare le dashboard di avviso direttamente.

Per un riferimento completo, vedere la Kusto Query documentazione linguistica[.

Costruire il Power BI Dashboard

Collegamento di potenza BI a ADX

Azure Data Explorer si integra con Power BI attraverso il connettore Azure Data Explorer (Kusto)].

  1. Aprire il BI Desktop di potere, fare clic su "Dati di consegna" > "Più..."
  2. Cerca "Azure Data Explorer" e seleziona il connettore.
  3. Inserisci il tuo URL di cluster (ad esempio ]) e il nome del database.
  4. Scegli tra Import[] (i dati vengono estratti in Power BI e aggiornati periodicamente) o [DirectQuery (le richieste vengono inviate ad ADX su ogni interazione). Per dashboard in tempo reale, utilizzare DirectQuery. Questo assicura che ogni filtro, affettatore e visuali attivi una query KQL contro i dati più recenti.

Scrivere le query KQL nel potere BI

Nella finestra di dialogo connettore, è possibile digitare una query KQL direttamente. Tenere le query focalizzate e garantire che restituiscano i dati tabulari che Power BI può modellare. Ad esempio, per creare un set di dati con conteggi di errore per servizio al minuto per l'ultima ora:

AppLogs
| where Timestamp > ago(1h)
| summarize ErrorCount = count() by Service, bin(Timestamp, 1m)

Dopo aver caricato la query, utilizzare la modellazione di Power BI per definire misure, gerarchie e relazioni se si dispone di più query. Evitare di caricare i registri completi grezzi -aggregare il più possibile in KQL.

Configurazione dei Refreshes in tempo reale

In modalità DirectQuery, le immagini automaticamente ri-query ADX quando gli utenti interagiscono con il report (ad esempio, cambiando un tagliandi da data). Tuttavia, per rendere il cruscotto auto-refresh senza interazione dell'utente, è necessario impostare il auto-pagina di aggiornamento funzione nel servizio Power BI:

  1. Pubblicare il rapporto a un App workspace[] con capacità Premium (o PPU).
  2. Nelle impostazioni del report, sotto "Scheduled rinfresca", impostare l'intervallo di aggiornamento DirectQuery - per cruscotti in tempo reale, utilizzare 1 o 2 minuti.
  3. In alternativa, utilizzare la funzione Rifresca automatica[[]] che aggiorna la pagina ad un intervallo fisso (ad esempio, ogni 30 secondi).

Tenete a mente che ogni auto-refresh eseguirà tutte le query KQL sottostanti le immagini. Ottimizzare le vostre domande per tornare rapidamente (sotto 5 secondi) per evitare le attese degli utenti e il carico eccessivo del cluster.

Le migliori pratiche di visualizzazione

  • Utilizzare card visuals[] per KPI (ad esempio, errori totali negli ultimi 5 minuti).
  • Cascicoli linea[] per le tendenze della serie temporale.
  • Cartali a barre[] per i guasti a livello superiore N (ad esempio, i servizi di fallimento superiore).
  • Mappe geospaziali[] se avete dati di localizzazione.
  • Gauges[]]] per mostrare il progresso verso le soglie.

Poiché DirectQuery invia domande su ogni interazione, evitare di utilizzare visuali personalizzate che generano molte query. Inoltre, applicare filtri il più presto possibile in KQL per ridurre il volume dei dati.

Ottimizzazione delle prestazioni per le query in tempo reale

Indice e Indice Tuning

ADX crea e fonde automaticamente le dimensioni (dati shards) nel tempo. Tuttavia, è possibile influenzare le prestazioni da:

  • Scegliere una politica cluster[[] che bilancia l'alta produttività di ingestione con la convalutazione delle query.Per dashboard in tempo reale con molte domande visive, scalare (istanze add) piuttosto che scagliare su.
  • Impostare la politica di cache [] nel database o nelle tabelle, ad esempio per mantenere gli ultimi 7 giorni nella cache calda:
  • Utilizzando visualizzazioni materializzate[] per risultati pre-aggregati che aggiornano in modo incrementale. Una vista materializzata può calcolare riassunti oraria o giornaliera, che poi servono dashboard di alto livello istantaneamente.

Consigli di ottimizzazione della query

  • Filtro presto:[] Usa clausole sulla colonna timestamp e dimensioni ad alta definizione della carta per ridurre i dati scansionati.
  • Minimize si unisce:[ Se possibile, denormalizzare i dati durante l'ingestione in modo che i dati di riferimento siano già incorporati negli eventi.
  • Avoid ] in progetti:[ Elenco esplicitamente necessario colonne per ridurre la larghezza di banda e la memoria.
  • Utilizza per grandi operazioni per distribuire l'aggregazione tra i nodi.
  • Risultati dei titoli:[]] Usare sempre , , o in query di sviluppo.

Monitoraggio della salute del cluster

Azure Data Explorer fornisce registri diagnostici integrati e metriche attraverso Azure Monitor.

  • Latenza di ingestione:[ Tempo medio dalla creazione di eventi alla domanda.
  • Latenza della regina:[ P50 e P99 tempi di esecuzione.
  • CPU e uso della memoria:[ Se costantemente alto, considerare la scalatura.
  • Tasso di ingestione:[] Assicurarsi di non essere trettante; dividere i flussi in più partizioni se necessario.

Impostare gli avvisi in Azure Monitor per quando le latenza delle query superano una soglia (ad esempio, P99 > 10 secondi) in modo da poter sintonizzare proattivamente.

Alerting e automazione in tempo reale

Una dashboard in tempo reale è più potente quando abbinata a risposte automatizzate. Azure Data Explorer offre diversi punti di integrazione:

Avvisi di monitoraggio Azure da ADX

È possibile creare query programmate[[] in ADX che si eseguono su un programma (ad esempio, ogni 5 minuti) e inviare risultati a Azure Monitor. Quindi definire regole di allarme che il fuoco quando le condizioni sono soddisfatte (ad esempio, il conteggio di errore > 100 in una finestra di 5 minuti). Questo consente azioni come:

  • Inviare un'email o SMS tramite Gruppi di Azione.
  • Triggering Azure Logic Apps per eseguire flussi di lavoro (ad esempio, riavviare un servizio, creare un biglietto incidente).
  • Chiamare webhooks per informare i sistemi esterni.

Azzorre Logic Apps e Microsoft Power Automate

Utilizzare Logic Apps con il connettore "Execute Kusto Query" per recuperare i dati da ADX e quindi agire. Ad esempio, se una query rileva un picco di utilizzo della CPU attraverso le VM, una Logic App può attivare un runbook Azure Automation per scalare il VMSS.

Stream Analytics e ADX come Sink

Per avvisi di latenza ancora più bassi, indirizzare i dati in streaming attraverso Azure Stream Analytics, che può applicare finestre temporali e spingere gli eventi di avviso contemporaneamente a ADX (per analisi storica) e a un abbonato Event Hubs per un avviso immediato.

Utilizzare i casi e gli esempi del mondo reale

  • DevOps Osservabilità Dashboard:[[] Aggregate log, metriche e tracce da microservizi attraverso cluster Kubernetes. ADX ingerisce da Fluentd/Logstash Azure Event Hubs, e il cruscotto Power BI mostra tassi di richiesta, risposte di errore e latenze di coda.
  • IoT Fleet Monitoring:[[] Collegare IoT Hub ad ADX per la telemetria del veicolo (locazione, velocità, stato della batteria).
  • Rilevazione finanziaria delle frodi:[[]] Operazioni di streaming attraverso gli hub degli eventi in ADX. I Dashboard mostrano volumi di transazione per regione e punteggi di anomalia; avvisa i blocklist quando le soglie sono violate.
  • Analisi di flusso:[[] L'attività dell'utente da siti web viene ingerita in ADX. Il cruscotto traccia utenti attivi, viste di pagina al secondo, e imbuti di conversione aggiornati ogni minuto.

Conclusioni

Costruire un cruscotto di analisi in tempo reale con Azure Data Explorer e Power BI è un approccio robusto e scalabile che soddisfa la crescente domanda di informazioni istantanee. Sfruttando l'ingestione di streaming di ADX, le potenti funzionalità di serie di KQL e le connessioni DirectQuery in Power BI, è possibile creare dashboard che aggiornano ogni pochi secondi e gestire i terabyte di dati in arrivo.

Iniziare a piccoli con un unico flusso di telemetria, iterare su query e gradualmente espandersi a più fonti di dati. Come le esigenze in tempo reale della vostra organizzazione crescono, l'elasticità di ADX assicura che la vostra dashboard scaglie senza compromettere la velocità. Per ulteriori informazioni, esplorare la documentazione ADX Event Hubs ingestion guide] e il