Grundlagen von Log Analytics und KQL
Nehmen Sie Diagnoseprotokolle in einen Log-Analytics-Arbeitsbereich auf und schreiben Sie Abfragen in der Kusto Query Language, um Betriebsdaten zu filtern, zu aggregieren und zu visualisieren.
Grundlagen von Log Analytics und KQL ist eine kostenlose Azure Fundamentals-Lektion auf CoddyKit. Dies ist Lektion 2 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Azure Fundamentals-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Azure Fundamentals-Kurs umfasst insgesamt 4 Lektionen.
Was ist ein Log Analytics-Arbeitsbereich?
Ein Log Analytics-Arbeitsbereich ist der zentrale Datenspeicher in Azure Monitor für Protokoll- und Telemetriedaten. Wenn Sie Diagnoseeinstellungen für eine Azure-Ressource konfigurieren, fließen die strukturierten Protokolle und Metriken in den Arbeitsbereich. Anschließend können Sie die Daten mit der Kusto Query Language (KQL) abfragen. Ein Arbeitsbereich verfügt über eine eigene Aufbewahrungsrichtlinie (standardmäßig 30 Tage, bis zu 730 Tage) und eigene Zugriffssteuerungen.
# Create a Log Analytics workspace
az monitor log-analytics workspace create \
--resource-group myRG \
--workspace-name myWorkspace \
--location eastus \
--retention-time 90Diagnoseprotokolle an einen Arbeitsbereich senden
Jede Azure-Ressource kann Diagnoseprotokolle ausgeben – detaillierte Aufzeichnungen von Vorgängen wie API-Aufrufen, Authentifizierungsereignissen und der Ausführung von Abfragen. Sie aktivieren diese über die Diagnoseeinstellungen der Ressource und geben dabei Ihren Log Analytics-Arbeitsbereich als Ziel an. Zu den gängigen Protokollkategorien gehören AuditEvent für Key Vault, AppServiceHTTPLogs für App Service und NetworkSecurityGroupFlowEvent für NSGs.
# Enable diagnostic settings to send Key Vault logs to Log Analytics
az monitor diagnostic-settings create \
--name 'KVLogs' \
--resource /subscriptions/<sub>/resourceGroups/myRG/providers/Microsoft.KeyVault/vaults/myKV \
--workspace myWorkspace \
--logs '[{"category":"AuditEvent","enabled":true}]'Einführung in die KQL-Syntax
Kusto Query Language (KQL) ist eine schreibgeschützte Abfragesprache zur Analyse von Protokolldaten. Eine KQL-Abfrage wird von links nach rechts als Pipeline gelesen: Sie beginnt mit einem Tabellennamen und wird anschließend mit dem Pipe-Operator (|) durch Operatoren geleitet. Zu den gängigen Operatoren gehören where zum Filtern, project zum Auswählen von Spalten, summarize zur Aggregation und order by zum Sortieren. Bei KQL wird zwischen Groß- und Kleinschreibung von Spaltennamen unterschieden, bei Schlüsselwörtern jedoch nicht.
// Basic KQL query structure
AzureActivity
| where TimeGenerated > ago(24h)
| where OperationNameValue == 'MICROSOFT.COMPUTE/VIRTUALMACHINES/DELETE'
| project TimeGenerated, Caller, ResourceGroup, Resource
| order by TimeGenerated descFiltern mit dem Where-Operator
Der Operator where filtert Zeilen anhand boolescher Ausdrücke. Sie können Bedingungen mit and, or und not kombinieren. Der Operator has führt in Zeichenfolgen eine Suche nach Wörtern unter Beachtung von Wortgrenzen und unabhängig von der Groß- und Kleinschreibung durch, während contains nach einem Teilstring sucht. Der Operator in prüft, ob ein Wert in einer Liste enthalten ist. Verwenden Sie ago(), um relative Zeitbereiche wie ago(1h) oder ago(7d) auszudrücken.
// Filter for failed HTTP requests in the last hour
AppRequests
| where TimeGenerated > ago(1h)
| where Success == false
| where ResultCode in (500, 502, 503)
| project TimeGenerated, Name, ResultCode, DurationMs
| order by DurationMs descDaten mit Summarize aggregieren
Der Operator summarize berechnet Aggregationen über mehrere Zeilen hinweg. Zu den gängigen Aggregationsfunktionen gehören count(), sum(), avg(), max(), min() und dcount() für die Anzahl unterschiedlicher Werte. Sie können mit der by-Klausel nach einer oder mehreren Spalten gruppieren. Die Funktion bin() rundet Zeitstempel auf Intervalle, um Zeitreihen zu aggregieren.
// Count failed requests per hour per endpoint
AppRequests
| where TimeGenerated > ago(24h)
| where Success == false
| summarize FailureCount = count() by bin(TimeGenerated, 1h), Name
| order by TimeGenerated desc, FailureCount descTabellen in KQL verknüpfen
KQL unterstützt join, um Daten aus mehreren Tabellen zu korrelieren. Die standardmäßige Join-Art ist innerunique, Sie können jedoch auch inner, leftouter, rightouter oder fullouter angeben. Ein gängiges Muster ist die Verknüpfung von AzureActivity und AzureMetrics, um administrative Änderungen mit Leistungseinbrüchen zu korrelieren. Der Operator lookup ist eine ressourcenschonendere Alternative, um Zeilen mit Daten aus einer kleinen Referenztabelle anzureichern.
// Correlate VM restarts with CPU spike events
AzureActivity
| where OperationNameValue has 'restart'
| join kind=leftouter (
AzureMetrics
| where MetricName == 'Percentage CPU'
| where Average > 90
) on ResourceId
| project TimeGenerated, Resource, AverageKQL-Ergebnisse visualisieren
Nachdem Sie im Log Analytics-Portal eine Abfrage geschrieben haben, können Sie die Ergebnisse mit dem Operator render als Zeitdiagramm, Balkendiagramm, Kreisdiagramm oder Tabelle darstellen. Sie können jedes Abfrageergebnis außerdem an ein Azure-Dashboard anheften oder als Workbook speichern. Der Befehl render timechart wandelt eine aggregierte Zeitreihenabfrage in ein direkt angezeigtes Liniendiagramm zur Trendanalyse um.
// Render a time chart of request counts per 5-minute interval
AppRequests
| where TimeGenerated > ago(4h)
| summarize RequestCount = count() by bin(TimeGenerated, 5m)
| render timechartWarnungen bei der Protokollsuche
Warnungen bei der Protokollsuche führen nach einem Zeitplan eine KQL-Abfrage aus und werden ausgelöst, wenn das Ergebnis eine Bedingung erfüllt, beispielsweise wenn die Anzahl der Ergebnisse größer als null ist oder eine numerische Spalte einen Schwellenwert überschreitet. Sie sind flexibler als Metrikwarnungen, da Sie Protokolldaten aus beliebigen Tabellen abfragen können. Auswertungshäufigkeit und Zeitfenster lassen sich unabhängig voneinander konfigurieren – beispielsweise alle 5 Minuten für die letzten 15 Minuten.
// Example log search alert condition: more than 5 exceptions in 15 min
AppExceptions
| where TimeGenerated > ago(15m)
| summarize ExceptionCount = count()
// Alert when ExceptionCount > 5Referenz gängiger Protokolltabellen
Azure Monitor speichert Protokolle in bekannten Tabellen. AzureActivity zeichnet Vorgänge auf Abonnementebene auf. SecurityEvent enthält Windows-Sicherheitsprotokolle von VMs mit dem Log Analytics-Agent. Heartbeat zeigt die Agent-Konnektivität an (eine Zeile pro Minute und verbundener VM). AppRequests, AppExceptions und AppDependencies stammen aus Application Insights. Die Namen dieser Tabellen zu kennen, ist für das Schreiben effektiver Betriebsabfragen unverzichtbar.
Aufbewahrung und Kosten von Arbeitsbereichen
Die Preise für Log Analytics bestehen aus zwei Komponenten: Datenerfassung (pro erfasstem GB) und Datenaufbewahrung (die ersten 30 Tage sind kostenlos, danach wird jeder GB pro Monat über den Standardzeitraum hinaus berechnet). Sie können Kosten senken, indem Sie störende Protokollkategorien vor der Erfassung filtern, Basic Logs für umfangreiche Daten mit geringem Wert zu einem reduzierten Preis verwenden und ältere Daten zur langfristigen Aufbewahrung aus Compliance-Gründen in Azure Data Explorer oder einen Cold Storage archivieren.
Modelle für die Zugriffssteuerung von Arbeitsbereichen
Log Analytics-Arbeitsbereiche unterstützen zwei Modelle für die Zugriffssteuerung. Im Modus workspace-context kann ein Benutzer mit Leseberechtigung für den Arbeitsbereich alle Tabellen abfragen. Im Modus resource-context kann ein Benutzer nur die von Ressourcen ausgegebenen Protokolle abfragen, für deren Lesen er über RBAC-Berechtigungen verfügt – auch ohne expliziten Zugriff auf den Arbeitsbereich. Der Modus resource-context wird für große Organisationen empfohlen, in denen verschiedene Teams für unterschiedliche Ressourcen verantwortlich sind.
Kurzer Wissenstest
Testen Sie Ihr Verständnis der Konzepte aus Microsoft Azure Fundamentals (AZ-900), die in dieser Lektion behandelt wurden.
Zusammenfassung der Lektion
In dieser Lektion haben Sie gelernt: Log Analytics-Arbeitsbereiche zentralisieren Diagnoseprotokolldaten aus Azure-Ressourcen, KQL-Operatoren wie where, summarize und render ermöglichen das Filtern, Aggregieren und Visualisieren von Protokollen, und Warnungen bei der Protokollsuche lösen automatisierte Reaktionen aus, wenn das Ergebnis einer KQL-Abfrage eine festgelegte Bedingung erfüllt. Als Nächstes betrachten wir Application Insights für Telemetriedaten auf Anwendungsebene.
Lerne Azure Fundamentals mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 30
- Lektionen
- 120
Häufig gestellte Fragen
Ist die Lektion „Grundlagen von Log Analytics und KQL“ kostenlos?
Ja — der vollständige Text von „Grundlagen von Log Analytics und KQL“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Azure Fundamentals-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Azure Fundamentals-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Grundlagen von Log Analytics und KQL“?
Nehmen Sie Diagnoseprotokolle in einen Log-Analytics-Arbeitsbereich auf und schreiben Sie Abfragen in der Kusto Query Language, um Betriebsdaten zu filtern, zu aggregieren und zu visualisieren. Du übst Azure Fundamentals mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Azure Fundamentals zu starten?
Keine Vorkenntnisse erforderlich. Azure Fundamentals auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 2 von 4.
Wie lange dauert die Lektion „Grundlagen von Log Analytics und KQL“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Azure Fundamentals-Lektion Code schreiben und ausführen?
Ja. Jede Azure Fundamentals-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Azure Monitor: Metriken und Warnungen
- Grundlagen von Log Analytics und KQL
- Application Insights
- Azure-Dashboards und Workbooks