Einleitung

In der heutigen schnelllebigen Geschäftsumgebung kann die Fähigkeit, Daten zu analysieren, wenn sie ankommen - nicht Stunden später - den Unterschied zwischen der Nutzung einer Chance und dem völligen Fehlen dieser bedeuten. Echtzeit-Analyse-Dashboards bieten operativen Teams, Führungskräften und Datenanalysten kontinuierlich aktualisierte Einblicke in Metriken wie Systemzustand, Kundenverhalten, IoT-Sensormessungen und Finanztransaktionen. Der Aufbau eines solchen Dashboards erfordert ein Backend, das Hochgeschwindigkeitsdaten aufnehmen, effizient speichern und komplexe Anfragen innerhalb von Sekunden beantworten kann.

Azure Data Explorer (ADX) entwickelt sich zu einer führenden Lösung, die speziell für diese Anforderungen entwickelt wurde. Sie bietet verwaltete Ingestion-Pipelines, säulenförmigen Speicher, der für Zeitreihen- und Protokolldaten optimiert ist, und die leistungsstarke Kusto Query Language (KQL), um Rohereignisse in umsetzbare Visualisierungen zu verwandeln. Dieser Artikel bietet eine praktische, praktische Anleitung zum Erstellen eines Echtzeit-Analyse-Dashboards in Produktion mit Azure Data Explorer und Integration in Power BI für interaktives Reporting. Sie lernen, wie man einen ADX-Cluster einrichtet, Daten aus Quellen wie Event Hubs streamt, effiziente KQL-Abfragen schreibt, eine Verbindung zu Power BI herstellt und die gesamte Pipeline für Updates mit niedriger Latenz optimiert.

Was ist Azure Data Explorer?

Azure Data Explorer ist ein vollständig verwalteter, leistungsstarker Big Data Analytics-Service, der sich bei der interaktiven Analyse großer Mengen strukturierter und semistrukturierter Daten auszeichnet. Er ist speziell für Szenarien wie Anwendungsüberwachung, IoT-Telemetrie, Sicherheitsprotokollanalyse und Business Intelligence entwickelt, bei denen Daten kontinuierlich ankommen und Abfragen Ergebnisse in Sekunden oder sogar Millisekunden zurückgeben müssen.

Zu den wichtigsten Funktionen, die ADX ideal für Echtzeit-Dashboards machen, gehören:

  • Streaming-Ingestion: Daten aus Azure Event Hubs, IoT Hub, Kafka und anderen Streaming-Quellen mit Latenzen von nur wenigen Sekunden aufnehmen.
  • Columnar Storage and Indexing: Daten werden komprimiert und mit invertierten und B-Baum-Indizes indexiert, was ein schnelles Scannen und Filtern ermöglicht.
  • Kusto Query Language (KQL): Eine schreibgeschützte, SQL-ähnliche Sprache mit eingebauten Operatoren für Zeitreihenanalyse, statistische Funktionen, Verknüpfungen und Aggregationen.
  • Native Power BI Integration: DirectQuery Modus und Import Modus ermöglichen Dashboards automatisch oder nahezu in Echtzeit zu aktualisieren.
  • Auto-Skalierung und Kostenmanagement: Cluster können Rechen- und Speicherfunktionen unabhängig skalieren und Sie können eine Cache-Richtlinie festlegen, um heiße Daten für schnelle Abfragen im Speicher zu halten.

ADX wird oft mit traditionellen Data Warehouses wie Azure Synapse oder Amazon Redshift verglichen, ist aber für high Cardinality (z. B. Millionen von einzigartigen Geräten) und Append-only Workloads, die typisch für Logs und Zeitreihen sind, optimiert.

Umweltaufbau

Erstellen eines Azure Data Explorer Clusters

Melden Sie sich zunächst im Azure-Portal an und erstellen Sie eine neue Ressource vom Typ "Azure Data Explorer Cluster". Wählen Sie ein Abonnement, eine Ressourcengruppe und eine Region, die mit Ihren Datenquellen übereinstimmt (vorzugsweise dieselbe Region, um die Latenz zu minimieren). Wählen Sie eine Rechen-SKU basierend auf Ihrer erwarteten Einnahmerate und Abfragegleichzeitigkeit:

  • Dev/Test: Dev(Standard D13 v2) oder Standard D14 v2 für kleine Workloads.
  • Produktion: Standard L8s v2, Standard L16s v2 oder die neuere SKU-Familie mit lokalen NVMe-SSDs (z. B. Standard L8s v3) für hohen Durchsatz.
  • High Concurrency: Cluster mit mehreren Instanzen, die automatisch basierend auf CPU- oder Ingestion-Load skalieren können.

Nachdem der Cluster bereitgestellt wurde, erstellen Sie eine Datenbank darin. Verwenden Sie zunächst die Standard-Retentions- und Cache-Richtlinien. Für Echtzeit-Dashboards möchten Sie möglicherweise eine cache-Richtlinie von mehreren Tagen (oder Wochen) festlegen, damit alle aktuellen Daten aus dem Speicher bereitgestellt werden. Die retention-Richtlinie sollte lang genug sein, um Ihren Berichtsbedarf zu decken (z. B. 30-90 Tage).

Konfigurieren von Datenaufnahmequellen

Echtzeit-Dashboards sind von Streaming-Daten abhängig. ADX unterstützt mehrere Ingestions-Ansätze:

  • Event Hubs: Am häufigsten für Protokolle und Telemetrie. Erstellen Sie einen Event Hubs-Namespace und einen Hub, und konfigurieren Sie dann eine Datenverbindung in ADX, die die JSON- oder Avro-Ereignisse einem Tabellenschema zuordnet.
  • IoT Hub: Für IoT-Geräte bietet IoT Hub Geräteauthentifizierung und Nachrichtenrouting direkt an ADX.
  • Kafka: Benutze den ADX Kafka-Anschluss, um Streams von Apache Kafka oder Confluent zu bringen.
  • Blob Storage/Data Lake: Für Batch- oder Nahezu-Echtzeit-Einnahme aus Parquet/CSV-Dateien, die in Azure Blob oder ADLS Gen2 gespeichert sind.

Stellen Sie beim Einrichten von Event Hubs sicher, dass die Partitionszahl Ihren Durchsatzanforderungen entspricht. ADX kann Daten von mehreren Partitionen gleichzeitig aufnehmen. Für jede Datenverbindung definieren Sie eine table und eine mapping, die JSON-Felder in ADX-Spalten umwandelt. Die Zuordnung kann auch Datentypkonvertierungen verarbeiten (z. B. Zeitstempel für Epochen bis Datumszeit).

Aufnahme von Echtzeitdaten

Erstellen von Tabellen und Mappings

Vor der Einnahme erstellen Sie die Zieltabelle in Ihrer ADX-Datenbank mit KQL. Eine Tabelle für Anwendungsfehlerprotokolle könnte beispielsweise wie folgt aussehen:

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

Erstellen Sie dann eine Aufnahme-Mapping für das Format Ihrer Streaming-Quelle verwendet.

.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"}}]'

Diese Zuordnungen zeigen ADX, wie Felder aus jedem Ereignis extrahiert werden können.

Einrichten der Event Hubs Connection

Navigieren Sie im Azure-Portal zu Ihrer ADX-Datenbank, wählen Sie "Datenverbindungen" und fügen Sie eine Event-Hubs-Verbindung hinzu. Geben Sie den Event-Hubs-Namespace, den Hub-Namen, die Verbrauchergruppe (verwenden Sie eine dedizierte Verbrauchergruppe für ADX, um Konflikte zu vermeiden) und den Tabellennamen an. Geben Sie die von Ihnen erstellte Zuordnungsreferenz an. ADX startet automatisch mit dem Verbrauch von Ereignissen und stellt sie innerhalb von Sekunden für Abfragen zur Verfügung.

Für Hochdurchsatzszenarien sollten Sie streaming-Ingestion (aktiviert im Cluster) anstelle von Batch-Ingestion verwenden. Streaming-Ingestion schreibt Daten direkt in die säulenförmigen Ausdehnungen ohne Zwischenstufung, was Latenzen unter 10 Sekunden bietet. Für die meisten Echtzeit-Dashboards ist dies der bevorzugte Modus. Batch-Ingestion (Standard) sammelt Daten für bis zu wenigen Minuten, bevor sie die Ausdehnungen finalisiert, was 2-5 Minuten Verzögerung bedeuten kann.

Abfrage mit Kusto Query Language (KQL)

Das Herzstück eines jeden ADX-Dashboards sind die KQL-Abfragen, die Daten in Echtzeit aggregieren und filtern.

Grundlegende Filterung und Aggregation

Um Fehlerereignisse pro Dienst über die letzte Stunde in Ein-Minuten-Binden zu zählen:

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

Dies gibt eine Zeitreihe bereit für ein Liniendiagramm.

Perzentilberechnungen

Für Latenzmetriken möchten Sie möglicherweise P50, P95 und P99:

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

Verknüpfung mit Referenzdaten

Häufig müssen Dashboards Ereignisse mit statischen Lookup-Daten (z. B. Gerätestandorte) anreichern. ADX unterstützt leichte Verknüpfungen, z. B. verbinden Sie den Telemetriestrom mit einer Tabelle von Geräten:

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

Für große Referenztabellen sollten Sie sie mit materialisierten Ansichten materialisieren oder in einem separaten Cluster mit einer geeigneten Cache-Richtlinie speichern.

Zeitreihenfunktionen

ADX umfasst leistungsstarke Zeitreihenoperationen wie für die Anomalieerkennung, für die Saisonalität und für die Frequenzanalyse.

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

Solche Abfragen werden erweitert, können aber Warn Dashboards direkt füttern.

Eine vollständige Referenz finden Sie in der Kusto Query Language Dokumentation.

Aufbau des Power BI Dashboards

Power BI mit ADX verbinden

Azure Data Explorer integriert sich mit Power BI über den Azure Data Explorer (Kusto)-Anschluss.

  1. Open Power BI Desktop, klicken Sie auf "Daten erhalten" > "Mehr ..."
  2. Suchen Sie nach "Azure Data Explorer" und wählen Sie den Connector aus.
  3. Geben Sie Ihre Cluster-URL (z. B. ) und den Datenbanknamen ein.
  4. Wählen Sie zwischen Import (Daten werden in Power BI gezogen und regelmäßig aktualisiert) oder DirectQuery (Abfragen werden bei jeder Interaktion an ADX gesendet). Verwenden Sie DirectQuery für Echtzeit-Dashboards. Dadurch wird sichergestellt, dass jeder Filter, Slicer und visuelle eine KQL-Abfrage mit den neuesten Daten auslöst.

Schreiben von KQL Queries in Power BI

Im Verbindungsdialog können Sie direkt eine KQL-Abfrage eingeben. Anfragen fokussiert halten und sicherstellen, dass sie Tabellendaten zurückgeben, die Power BI modellieren kann.

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

Verwenden Sie nach dem Laden der Abfrage die Power BI-Modellierung, um Maßnahmen, Hierarchien und Beziehungen zu definieren, wenn Sie mehrere Abfragen haben.

Konfigurieren von Echtzeit-Refreshes

Im DirectQuery-Modus wird die visuelle Darstellung automatisch erneut abgefragt, wenn Benutzer mit dem Bericht interagieren (z. B. Ändern eines Datums-Slicers).Um das Dashboard jedoch automatisch ohne Benutzerinteraktion zu aktualisieren, müssen Sie die Funktion auto-page refresh im Power BI-Dienst einstellen:

  1. Veröffentlichen Sie den Bericht in einem App-Arbeitsbereich mit Premium-Kapazität (oder PPU).
  2. In den Berichtseinstellungen unter "Geplante Aktualisierung" legen Sie das DirectQuery-Aktualisierungsintervall fest - für Echtzeit-Dashboards verwenden Sie 1 oder 2 Minuten.
  3. Alternativ verwenden Sie die Funktion Auto-refresh, die die Seite in einem festen Intervall (z. B. alle 30 Sekunden) aktualisiert.

Beachten Sie, dass bei jedem automatischen Refresh alle den Visuals zugrunde liegenden KQL-Abfragen ausgeführt werden.Optimieren Sie Ihre Abfragen so, dass sie schnell (unter 5 Sekunden) zurückkehren, um Wartezeiten und übermäßige Clusterlast zu vermeiden.

Visualisierung Best Practices

  • Verwenden Sie card visuals für KPIs (z.B. Gesamtfehler in den letzten 5 Minuten).
  • Zeilendiagramme für Zeitreihentrends.
  • Bar-Diagramme für Top-N-Aufgliederungen (z. B. Top-Missing-Dienste).
  • Geospatial Maps wenn Sie Standortdaten haben.
  • Gauges, um Fortschritte in Richtung Schwellenwerte zu zeigen.

Da DirectQuery Abfragen zu jeder Interaktion sendet, vermeiden Sie die Verwendung benutzerdefinierter Visuals, die viele Abfragen erzeugen.

Optimierung der Performance für Echtzeit-Abfragen

Clustering und Index Tuning

ADX erstellt und führt automatisch Extensions (Data Shards) über die Zeit zusammen, aber Sie können die Leistung beeinflussen, indem Sie:

  • Wählen Sie eine cluster-Richtlinie, die einen hohen Aufnahmedurchsatz mit Abfragegleichzeit ausgleicht.
  • Setzen Sie die passende cache-Richtlinie in der Datenbank oder den Tabellen, um beispielsweise die letzten 7 Tage im Hot Cache zu halten:
  • Verwenden von materialisierten Ansichten für voraggregierte Ergebnisse, die inkrementell aktualisiert werden. Eine materialisierte Ansicht kann stündliche oder tägliche Zusammenfassungen berechnen, die dann sofort High-Level-Dashboards bedienen.

Query Optimization Tipps

  • Fähig filtern: Verwenden Sie -Klauseln in der Zeitstempelspalte und Dimensionen mit hoher Kardinalität, um gescannte Daten zu reduzieren.
  • Minimize joins: Wenn möglich, denormalisieren Sie Daten während der Aufnahme, so dass Referenzdaten bereits in Ereignisse eingebettet sind.
  • Vermeiden Sie in Projekten: Erklären Sie explizit die benötigten Spalten, um Bandbreite und Speicher zu reduzieren.
  • Verwende für große Operationen, um die Aggregation über Knoten zu verteilen.
  • Limit results: Benutzen Sie immer , oder in Entwicklungsabfragen. In Power BI haben die Visuals normalerweise ihre eigenen Top-N-Filter, aber fügen Sie sie auch in KQL hinzu.

Cluster Gesundheit

Azure Data Explorer bietet integrierte Diagnoseprotokolle und Metriken über Azure Monitor.

  • Ingestion Latenz: Durchschnittliche Zeit von der Ereigniserstellung zu abfrayable.
  • Query Latenz: P50 und P99 Ausführungszeiten.
  • CPU und Speichernutzung: Wenn konstant hoch, sollten Sie die Skalierung in Betracht ziehen.
  • Versorge dich dafür, dass du nicht drosselst; teile die Streams bei Bedarf in weitere Partitionen auf.

Richten Sie in Azure Monitor Benachrichtigungen ein, wenn Abfragelatenzen einen Schwellenwert überschreiten (z. B. P99 > 10 Sekunden), damit Sie proaktiv stimmen können.

Echtzeit-Warnung und Automatisierung

Ein Echtzeit-Dashboard ist am leistungsstärksten, wenn es mit automatisierten Antworten gekoppelt wird. Azure Data Explorer bietet mehrere Integrationspunkte:

Azure Monitor Alerts von ADX

Sie können scheduled queries in ADX erstellen, die nach einem Zeitplan (z. B. alle 5 Minuten) ausgeführt werden und Ergebnisse an Azure Monitor senden. Dann definieren Sie Alarmregeln, die ausgelöst werden, wenn die Bedingungen erfüllt sind (z. B. Fehlerzahl > 100 in einem 5-Minuten-Fenster).

  • Senden einer E-Mail oder SMS über Aktionsgruppen.
  • Auslösen von Azure Logic Apps zum Ausführen von Workflows (z. B. Neustart eines Dienstes, Erstellen eines Incident-Tickets).
  • Aufrufen von Webhooks, um externe Systeme zu benachrichtigen.

Azure Logic Apps und Microsoft Power Automat

Verwenden Sie Logic Apps mit dem "Execute Kusto Query"-Anschluss, um Daten von ADX abzurufen und dann Maßnahmen zu ergreifen. Wenn eine Abfrage beispielsweise einen Anstieg der CPU-Auslastung in VMs feststellt, kann eine Logic App ein Azure Automation-Runbook auslösen, um das VMSS zu skalieren. Dies schließt die Schleife zwischen Überwachung und Behebung.

Stream Analytics und ADX als Sink

Für noch niedrigere Latenzwarnungen, Routen-Streaming-Daten durch Azure Stream Analytics, die zeitliche Fenster anwenden und Alarmereignisse gleichzeitig an ADX (für historische Analysen) und an einen Event Hubs-Abonnenten zur sofortigen Benachrichtigung senden können.

Use Cases und Real-World Beispiele

  • DevOps Observability Dashboard: Aggregieren Sie Protokolle, Metriken und Traces von Microservices über Kubernetes-Cluster. ADX nimmt von Fluentd / Logstash Azure Event Hubs auf und das Power BI-Dashboard zeigt Anforderungsraten, Fehlerantworten und Tail Latenzen.
  • IoT Fleet Monitoring: Verbinden Sie IoT Hub mit ADX für Fahrzeugtelemetrie (Standort, Geschwindigkeit, Batteriestatus).
  • Finanzbetrugserkennung: Streamen Sie Transaktionen über Event Hubs in ADX. Dashboards zeigen Transaktionsvolumen nach Region und Anomalien; Warnungen lösen Blocklisten aus, wenn Schwellenwerte überschritten werden.
  • Clickstream-Analyse: Die Nutzeraktivität von Webseiten wird in ADX aufgenommen. Das Dashboard verfolgt aktive Nutzer, Seitenaufrufe pro Sekunde und Konversions-Trichter, die jede Minute aktualisiert werden.

Schlussfolgerung

Der Aufbau eines Echtzeit-Analyse-Dashboards mit Azure Data Explorer und Power BI ist ein robuster, skalierbarer Ansatz, der die wachsende Nachfrage nach sofortigen Erkenntnissen befriedigt. Durch die Nutzung der ADX-Streaming-Einnahme, der leistungsstarken Zeitreihenfunktionen von KQL und DirectQuery-Verbindungen in Power BI können Sie Dashboards erstellen, die alle paar Sekunden aktualisiert werden und Terabyte an eingehenden Daten verarbeiten. Der Schlüssel zum Erfolg liegt in einer sorgfältigen Kapazitätsplanung, einem durchdachten Abfragedesign und einer kontinuierlichen Überwachung der Leistung.

Beginnen Sie klein mit einem einzigen Telemetrie-Stream, wiederholen Sie Abfragen und erweitern Sie schrittweise auf weitere Datenquellen. Da die Echtzeitanforderungen Ihres Unternehmens steigen, stellt die Elastizität von ADX sicher, dass Ihr Dashboard skaliert wird, ohne die Geschwindigkeit zu beeinträchtigen. Weitere Informationen finden Sie im ADX Event Hubs Ingestion Guide und in der Power BI to Azure Data Explorer Connector-Dokumentation.