Kusto und LA Workspaces mit KQL abfragen
Kusto vs LA
Kusto Cluster (Kusto) und Log Analytics Workspaces (LA) sind zwei verschiedene Big Data Services in Microsoft Azure. Die beiden Services haben unterschiedliche Einsatzzwecke und sind für unterschiedliche Anwendungsfälle optimiert. Die beiden Dienste haben aber etwas gemeinsam: Sie verwenden die gleiche Abfragesprache, die Kusto Query Language (KQL).
In diesem Post werden drei Tools untersucht, mit denen man KQL Abfragen auf Kusto und LA Workspaces ausführen kann:
- Kusto Explorer
- Azure Data Explorer
- Polyglot Notebooks
Kusto Cluster heißt seit einiger Zeit Azure Data Explorer Cluster (ADE Cluster). Er wird auch ADX Cluster genannt.
Kusto | LA | |
---|---|---|
Name | Kusto Cluster Azure Data Explorer Cluster ADE Cluster ADX Cluster |
Log Analytics Workspace |
Einsatzzweck | Batch Data Processing Streaming Data Processing Telemetry IoT |
Monitoring Security (Sentinel) |
ARM Resource Type | Microsoft.Kusto/Clusters |
Microsoft.OperationalInsights/workspaces |
Cluster URL | https://<clusterName>.<region>.kusto.windows.net |
https://ade.loganalytics.io/<ResourceId> |
Neben Kusto und LA gibt es zahlreiche weitere Big Data Lösungen in Azure.
Cluster URLs
Die Cluster URL (Engine Endpoint) benötigt man, um sich mit Tools auf den Cluster zu verbinden. Die Cluster URL eines LA Workspace ist (siehe Tabelle oben)
https://ade.loganalytics.io/<ResourceId>
wobei die Resource Id wie folgt aus dem Namen des Workspace gebildet werden kann:
<ResourceId> = subscriptions/<subscriptionID>/resourcegroups/<resourceGroupName>/providers/microsoft.operationalinsights/workspaces/<workspaceName>
Diese Resource ID kann man leicht im Azure Portal finden oder mit PowerShell abfragen:
function Get-AzLogAnalyticsWorkspaceResourceId {
param (
[Parameter(Mandatory = $true)]
[string]$ResourceGroupName,
[Parameter(Mandatory = $true)]
[string]$WorkspaceName
)
$workspace = Get-AzOperationalInsightsWorkspace -ResourceGroupName $ResourceGroupName -Name $WorkspaceName
$workspace.ResourceId
}
Cluster zum Ausprobieren
Zum Ausprobieren von KQL stellt Azure einen Kusto Cluster (Storm Events) und einen LA Workspace (LA Demo) mit Beispieldaten zur Verfügung. Beide Cluster sind kostenlos, Login mit Work or School Account.
Kusto | LA |
---|---|
Storm Events | LA Demo |
https://help.kusto.windows.net/Samples | https://aka.ms/lademo |
Man kann auch seinen eigenen, kostenlosen Kusto Cluster anlegen. Um Data Ingestion muß man sich dann selber kümmern.
Tools
Kusto Explorer
Kusto Explorer ist eine ClickOnce Application für Windows - Linux und MacOS User haben Pech. Installation und User Interface werden hier beschrieben.
https://aka.ms/ke
Die App ist in C# geschrieben und nutzt das Kusto SDK.
Man verbindet sich auf einen Cluster (Kusto oder LA) mit der Cluster URL, siehe oben.
Azure Data Explorer
Als Web Applikation ist Azure Data Explorer über jeden Browser erreichbar. Das User Interface ist hier beschrieben. Es ähnelt dem Kusto Explorer.
https://dataexplorer.azure.com
Polyglot Notebooks
Polyglot Notebooks in VS Code, früher .NET Interactive Notebooks genannt, sind eine Erweiterung Microsofts der bekannten und beliebten Jupyter Notebooks durch Microsoft. In einem Polyglot Notebook können mehrere Sprachen verwendet werden, z.B. C#, PowerShell, JavaScript und eben auch KQL.
Wie ein Polyglot Notebook den passenden Kernel finden, wird in diesem Artikel sehr schön beschrieben, einschließlich der Geschichte von iPython und Jupyter seit dem Dreißigjährigen Krieg.
Die Magic Commands sind von Jupyter übernommen und gewöhnungsbedürftig - eben Magic, siehe hier.
Um KQL Queries in einem Polyglot Notebook zu schreiben braucht man zunächst das Nuget Package Microsoft.DotNet.Interactive.Kql
. Das folgende Magic Command installiert es in das aktuelle Verzeichnis:
#r "nuget: Microsoft.DotNet.Interactive.Kql, *-*"
Dann verrät das folgende Magic Command, wie man sich mit einem Cluster verbindet:
#!connect kql --help
also konkret für den Kusto Cluster Storm Events:
#!connect kql --kernel-name stormevents --cluster "https://help.kusto.windows.net" --database "Samples"
Fun Fact
Der Kusto Explorer verrät beim Start, wie Kusto zu seinem Namen kam. Kusto ist benannt nach dem bekannten französischen Tiefseeforscher Jacques-Yves Cousteau [ʒak iv kusto]. Wir erfoschen schließlich auch die Tiefen unserer Daten 🤣.
References
Markus Raatz: Spaß mit KQL und Azure Log Analytics
John Savill: Azure Data Explorer (ADX) Overview
Microsoft Learn: Azure Data Explorer documentation
Microsoft Learn: What is Azure Data Explorer?
Microsoft Learn: Query data in Azure Monitor with Azure Data Explorer
Microsoft Learn: Azure Data Explorer REST API overview
Kusto King: Basic searching and string operators
Thomas Drilling: Dynamic Kernel Picker für VS Code Polyglot Notebooks