In nahezu allen meinen Azure-, Big-Data- und ML-Kursen werden die in der Überschrift skizzierten Begriffe und Dienste thematisiert, meist im Zusammenhang der Dataanalyse im großen Stil oder mit dem Azure Monitor. Den meisten Teilnehmern ist auch bewusst, dass diese Services und Dienste irgendwie miteinander zusammenhängen. Dieser Beitrag soll aufgehängt an der Kusto-Query-Language (KQL) die Zusammenhänge und Unterschiede aufzeigen, damit sie künftig noch souveräner mit diesen Tools umgehen.
Der Beitrag hat vorab bemerkt nicht zum Ziel, die genannten Dienste zu erklären. Ich gehe davon aus, dass sie grundsätzlich bereits mit dem Azure Monitor gearbeitet haben, dass Sie zwischen Azure Monitor Metric Explorer, Azure Monitor Log Analytics unterscheiden und die Bedeutung der KQL für Log Analytics beurteilen können.
Kusto Query Language (KQL)
Kusto ist eine Abfragesprache von Microsoft, ähnlich wie auch TSQL eine Abfragesprache ist. Mit KQL können sie ihre Daten untersuchen und darin Muster erkennen oder Anomalien und Ausreißer identifizieren sowie statistische Modelle erstellen vieles mehr. KQL kommt vor allem bei großen und verteilten Datasets zum Einsatz. Eine KQL-Abfrage verwendet Schemaentitäten, die in einer Hierarchie ähnlich wie SQLs organisiert sind, also mit Datenbanken, Tabellen und Spalten. Eine typische KQL-Abfrage sieht z. B. so aus:
StormEvents
| where StartTime between (datetime(2007-11-01) .. datetime(2007-12-01))
| where State == „FLORIDA“
| count
Abgesehen davon, dass viele Azure-Werkzeuge, wie z. B. Log Analytics über eine integrierte KQL-Abfrage verfügen gibt es im Grunde genommen zweit primäre Werkzeuge, um KQL-Abfragen abzusetzen, den Kusto Explorer und die Weboberfläche des Azure-Analyse-Dienstes „Azure Data Explorer“ (TDE). Dazu kommen Abfrage-Integrationen mit Azure Monitor, Azure Data Lake, Synapse Apache Spark, Apache Spark, Microsoft Power Apps und Azure Data Studio. Ferner gibt es Notebook-Konnektivität für Jupyter-Notebooks, Azure Notebooks und Azure Data Studio.
Kusto Explorer
Der Kusto-Explorer ist eine Windows-Desktopanwendung, die ihnen hilft, Daten mithilfe der Kusto-Abfragesprache in einer benutzerfreundlichen Benutzeroberfläche analysieren zu können. Herunterladen können sie das Tool hier. Sie können mit dem Kusto-Explorer Daten nicht nur abfragen, sondern auch Daten in mehreren Tabellen durchsuchen oder visualisieren und die Ergebnisse von Anfragen per Deep-Link oder E-Mail freigeben.
Alternativ können sie mit einem ClickOnce-fähigen Browser mit „https://<your_cluster>/?web=0“ auch direkt auf einen Kusto-Cluster zugreifen. Der Kusto-Cluster ist quasi das Speicher-Backend hinter dem Azure-PaaS-Dienst Data Explorer. Sie können das mit dem von Microsoft betriebenen Demo-Cluster „https://help.kusto.windows.net“ direkt ausprobieren.
Azure Data Explorer
Der Azure Data-Explorer (ADE) bringt zwar wie gesehen auch das zugehörige Web-Frontend mit, ist aber in erster Linie eine vollständig verwaltete, leistungsfähige Big-Data-Analyseplattform, auf die sie mit einem passenden Account jederzeit über das Internet zugreifen können. Diese ermöglicht ihnen das Analysieren großer Datenmengen nahezu in Echtzeit und vereinfacht das Abfragen von Telemetriedaten, Protokollen, Ereignissen, Ablaufverfolgungen und Zeitreihendaten mit sehr hoher Leistung.
Die Compute- und Speicher-Basis des Data Explorer ist der erwähnte Kusto-Cluster. Der Azure Data Explorer partitioniert alle erfassten Daten in Blöcke oder Daten-Shards. Letztere sind horizontale Slices der Zieltabelle. Sobald sich Daten in der Tabelle ansammeln, führt ADE Blöcke automatisch so zusammen, dass sie bis auf Millionen von Datensätzen anwachsen können. Jeder Block wird dann unabhängig von anderen Blöcken codiert und indiziert. Das trägt erheblich zur linearen Skalierung des Erfassungsdurchsatzes bei, da alle Blöcke gleichmäßig auf Cluster-Knoten verteilt und sowohl auf der lokalen SSD als auch im Arbeitsspeicher zwischengespeichert werden. Diese Verteilung optimiert die Kapazität zur Vorbereitung und Ausführung von verteilten und parallelen Abfragen.
Der Azure Data Explorer trennt dabei Speicher- und Compute-Ressourcen, wobei sich persistente Daten stets in Azure Blob Storage befinden, während Compute-Ressourcen temporäre Daten speichern oder als Cache für persistenten Speicher fungieren. Die Trennung bietet den Vorteil, dass Speicher- und Compute-Ressourcen unabhängig horizontal hochskalieren können und dass der Zugriff auf identische Daten über mehrere Compute-Cluster hinweg erfolgen kann.
Integrationen und Verbindungsaufbau
Der Azure Data Explorer unterstützt dienstübergreifende Abfragen auch zu Azure Log Analytics (LA) und zu Application Insights (AI). Sie können dann den Log Analytics- oder Application Insights-Arbeitsbereich mithilfe von Azure Data Explorer-Abfragetools und in einer dienstübergreifenden Abfrage abfragen.
Für den Verbindungsaufbau z. B. mit dem Kusto-Explorer müssen sie prinzipiell folgende Fälle unterscheiden;
- Für die „normale“ Verbindung zu einem ADE-Cluster nutzen sie die URL: https://clustername.kusto.windows.net
- Sie können den Kusto-Explorer aber auch verwenden, um sich zu einem Azure Monitor Log Analytics Workspace zu verbinden. Dann verwenden Sie die URL: https://ade.loganalytics.io/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/microsoft.operationalinsights/workspaces/<workspace-name>. Dort können sie dann Log-Analytics-Abfragen absetzen:
Log-Analytics-Abfrage im Kusto Explorer.
- Möchten sie aus dem Kusto Explorer zu Application Insights verbinden, machen sie das mit der URL: https://ade.applicationinsights.io/subscriptions/<subscription-id>/resourcegroups/<resource-group-name>/providers/microsoft.insights/components/<ai-app-name>
Beziehung zu Azure Data Explorer zu Log Analytics
Haben sie die Weboberfläche von Azure Data Explorer bereits genutzt oder sind mit der Überwachung von Azure-Ressourcen und Azure Monitor vertraut, sollten sie auch Azure Log Analytics kennen. Azure Log Analytics hat eine lange Historie, hieß in Azure lange Zeit „Operations Manager Suite“ (OMS) und ist streng genommen die Cloud-basierte Weiterentwicklung des guten alten System Center Operations Manager (SCOM). Konzeptionell verbirgt sich hinter Log Analytics daher eine eigenständige First-Class-Azure-Ressource namens Log Analytics Workspace, die sowohl als Speicher-Backend, als auch als Analyse-Suite dient. Daher nutzt Log Analytics die gleiche Kusto-Abfragesprache.
Allerdings ergänzt Log Analytics Azure Monitor-spezifische Funktionen, wie beispielsweise das das Filtern nach Zeitbereich oder die Möglichkeit, dass sie aus dem Ergebnis einer Abfrage direkt eine neue Warnregel erstellen können. Offensichtlich bringen beide Werkzeuge einen eigenen Explorer mit, mit dem sie die Struktur der verfügbaren Tabellen durchsuchen können. Der konzeptionelle Unterschied ist dabei Folgender:
- Die Webbenutzeroberfläche von Azure Data Explorer arbeitet hauptsächlich mit Tabellen in Azure Data Explorer-Datenbanken, welche letztendlich Kusto Cluster sind.
- Log Analytics arbeitet mit Tabellen in einem Log Analytics-Arbeitsbereich.
Azure Resource Graph, Azure Resource Graph Explorer
Vielleicht sind sie auch schon einmal über den Dienst Azure Resource Graph gestolpert? Hierbei handelt es sich um einen Azure-Dienst, der die Azure-Ressourcenverwaltung durch eine sehr effiziente und leistungsfähige Funktion zur Ressourcenuntersuchung ergänzt. Diese erlaubt es ihnen, übergreifend für eine bestimmte Menge von Abonnements nach Bedarf Abfragen durchzuführen. So können sie ihre Umgebung noch effektiver nach Ressourcen durchsuchen.
Die Abfragen, welche sie im Azure Ressource-Graph tätigen können, bieten ihnen die folgenden Funktionen:
- Abfragen von Ressourcen mit komplexem Filtern sowie das Gruppieren und Sortieren nach Eigenschaften der Ressource.
- Interaktives Untersuchen von Ressourcen auf Basis deine Governance-Anforderungen.
- Bewerten der Auswirkungen der Anwendung von Richtlinien in einer großen Cloudumgebung.
- Abfragen von Änderungen der Ressourceneigenschaften
Sie fragen sich jetzt vielleicht, worin der Unterschied zum Azure Resource Manager besteht, mit dem sie ja ebenfalls im Azure-Portal oder mit der Power Shell, bzw. der Azure CLI, sowie über die REST-API nach Resourcen suchen können? So ist es für sie wahrscheinlich alltäglich, mit einem der drei genannten Tools z. B. eine Bestandsaufnahme ihrer Azure-VMs zu machen?
Was Ihnen aber vielleicht nicht klar ist, ist Folgendes: der Azure Resource Manager sucht bei Abfragen derzeit nur über die grundlegende Ressourcenfelder. Dazu gehören z. B.:
- Ressourcenname
- ID
- type
- Ressourcengruppe
- Subscription
- Standort
Mit dem Azure Resource Graph hingegen können sie ….
- auf sämtliche Eigenschaften zugreifen, die der jeweilige Resource Provider zurück gibt, ohne dass sie jeden Ressourcenanbieter einzeln abrufen müssen.
- Sie können stets die letzten 14 Tage der Änderungen der jeweiligem Ressourcenkonfiguration abfragen. So bekommen sie z. B. heraus, welche Eigenschaften wann geändert wurden.
Sie können dazu z. B. den Azure Resource Graph Explorer verwenden. Suchen sie dazu im Azure-Portal nach „Resource Graph-Explorer“.
Jetzt stellt sich ihnen vielleicht weiterhin die Frage, was das Ganze mit ADE und Kusto zu tun hat?
Mit Ersterem gar nichts, aber mit Kusto, denn der Graph Explorer verwendet ebenfalls Kusto als Abfragesprache. Der Explorer eignet sich darüber hinaus zum Erlernen von Kusto, denn sie können z. B. links im Kategorien-Baum nach einem Ressourcen-Typ fahnden, wie z. B. Ressourcengruppen und der Explorer zeigt ihnen im Abfrage-Fenster auch gleich die passende Kusto-Abfrage:
Gedacht ist das Tool natürlich in erste Linie für komplexe interaktive Abfragen. Außerdem liefert es Ergebnisse gerade bei komplexen Abfragen mit großen Ergebnissätzen viel schneller zurück, als der Azure Resource Manager. Außerdem können sie z. B. Abfrageergebnisse speichern oder exportieren.