Grundlæggende om Log Analytics og KQL
Indlæs diagnosticeringslogs i et Log Analytics-workspace, og skriv forespørgsler i Kusto Query Language for at filtrere, aggregere og visualisere driftsdata.
Grundlæggende om Log Analytics og KQL er en gratis Azure Fundamentals-lektion på CoddyKit. Dette er lektion 2 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Azure Fundamentals, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Azure Fundamentals-kurset indeholder 4 lektioner i alt.
Hvad er et Log Analytics-arbejdsområde?
Et Log Analytics-arbejdsområde er det centrale datalager i Azure Monitor til log- og telemetridata. Når du konfigurerer diagnosticeringsindstillinger på en Azure-ressource, flyder de strukturerede logge og målinger ind i arbejdsområdet. Derefter kan du forespørge dataene ved hjælp af Kusto Query Language (KQL). Et arbejdsområde har sin egen opbevaringspolitik (30 dage som standard, op til 730 dage) og adgangskontroller.
# Create a Log Analytics workspace
az monitor log-analytics workspace create \
--resource-group myRG \
--workspace-name myWorkspace \
--location eastus \
--retention-time 90Afsendelse af diagnosticeringslogge til et arbejdsområde
Alle Azure-ressourcer kan generere diagnosticeringslogge — detaljerede registreringer af handlinger som API-kald, godkendelseshændelser og udførelse af forespørgsler. Du aktiverer dem via Diagnostic Settings på ressourcen og angiver dit Log Analytics-arbejdsområde som destination. Almindelige logkategorier omfatter AuditEvent for Key Vault, AppServiceHTTPLogs for App Service og NetworkSecurityGroupFlowEvent for NSG'er.
# 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}]'Introduktion til KQL-syntaks
Kusto Query Language (KQL) er et skrivebeskyttet forespørgselssprog til analyse af logdata. En KQL-forespørgsel læses fra venstre mod højre som en pipeline: Start med et tabelnavn, og send derefter dataene gennem operatorer med pipe-tegnet (|). Almindelige operatorer omfatter where til filtrering, project til valg af kolonner, summarize til aggregering og order by til sortering. KQL skelner mellem store og små bogstaver i kolonnenavne, men ikke i nøgleord.
// Basic KQL query structure
AzureActivity
| where TimeGenerated > ago(24h)
| where OperationNameValue == 'MICROSOFT.COMPUTE/VIRTUALMACHINES/DELETE'
| project TimeGenerated, Caller, ResourceGroup, Resource
| order by TimeGenerated descFiltrering med Where-operatoren
Operatoren where filtrerer rækker ved hjælp af booleske udtryk. Du kan kombinere betingelser med and, or og not. Operatoren has udfører en søgning efter ordgrænser uden forskel på store og små bogstaver i strenge, mens contains søger efter en delstreng. Operatoren in tester, om en værdi findes på en liste. Brug ago() til at udtrykke relative tidsintervaller som ago(1h) eller ago(7d).
// 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 descAggregering af data med Summarize
Operatoren summarize beregner aggregeringer på tværs af rækker. Almindelige aggregeringsfunktioner omfatter count(), sum(), avg(), max(), min() og dcount() til optælling af entydige værdier. Du kan gruppere efter én eller flere kolonner ved hjælp af by-sætningen. Funktionen bin() afrunder tidsstempler til intervaller for aggregering af tidsserier.
// 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 descSammenføjning af tabeller i KQL
KQL understøtter join til at sammenkæde data fra flere tabeller. Den som standard anvendte sammenføjningstype er innerunique, men du kan angive inner, leftouter, rightouter eller fullouter. Et almindeligt mønster er at sammenføje AzureActivity med AzureMetrics for at sammenholde administrative ændringer med fald i ydeevnen. Operatoren lookup er et mindre omfattende alternativ til at berige rækker fra en lille referencetabel.
// 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, AverageVisualisering af KQL-resultater
Når du har skrevet en forespørgsel i Log Analytics-portalen, kan du gengive resultaterne som et tidsdiagram, et søjlediagram, et cirkeldiagram eller en tabel ved hjælp af operatoren render. Du kan også fastgøre ethvert forespørgselsresultat til et Azure Dashboard eller gemme det som en projektmappe. Kommandoen render timechart omdanner en forespørgsel med aggregering af tidsserier til et direkte linjediagram til analyse af tendenser.
// Render a time chart of request counts per 5-minute interval
AppRequests
| where TimeGenerated > ago(4h)
| summarize RequestCount = count() by bin(TimeGenerated, 5m)
| render timechartAlarmsøgninger i logge
Alarmsøgninger i logge kører en KQL-forespørgsel efter en tidsplan og udløses, når resultatet opfylder en betingelse, f.eks. at antallet af resultater er større end nul, eller at en numerisk kolonne overskrider en tærskel. De er mere fleksible end metriske alarmer, fordi du kan forespørge alle logdata på tværs af flere tabeller. Evalueringsfrekvensen og tidsvinduet kan konfigureres uafhængigt — du kan f.eks. køre forespørgslen hvert 5. minut for de seneste 15 minutter.
// Example log search alert condition: more than 5 exceptions in 15 min
AppExceptions
| where TimeGenerated > ago(15m)
| summarize ExceptionCount = count()
// Alert when ExceptionCount > 5Reference over almindelige logtabeller
Azure Monitor gemmer logge i velkendte tabeller. AzureActivity registrerer handlinger på abonnementsniveau. SecurityEvent indeholder Windows-sikkerhedslogge fra VM'er med Log Analytics-agenten. Heartbeat viser agentens forbindelse (én række pr. minut pr. tilsluttet VM). AppRequests, AppExceptions og AppDependencies kommer fra Application Insights. Det er afgørende at kende disse tabelnavne for at kunne skrive effektive driftsforespørgsler.
Opbevaring og omkostninger for arbejdsområder
Prisen for Log Analytics består af to dele: dataindtagelse (pr. indtaget GB) og dataopbevaring (de første 30 dage er gratis, hvorefter du betaler pr. GB pr. måned for perioden ud over standarden). Du kan reducere omkostningerne ved at filtrere støjende logkategorier før indtagelse, bruge Basic Logs til datamængder med høj volumen og lav værdi til en reduceret pris samt arkivere ældre data i Azure Data Explorer eller kold lagring til langsigtet opbevaring af hensyn til overholdelse af regler.
Modeller for adgangskontrol i arbejdsområder
Log Analytics-arbejdsområder understøtter to modeller for adgangskontrol. I tilstanden workspace-context kan en bruger med læseadgang til arbejdsområdet forespørge alle tabeller. I tilstanden resource-context kan en bruger kun forespørge de logge, der genereres af ressourcer, som brugeren har RBAC-tilladelse til at læse — også uden udtrykkelig adgang til arbejdsområdet. Tilstanden resource-context anbefales til store organisationer, hvor forskellige teams ejer forskellige ressourcer.
Hurtigt tjek
Test din forståelse af koncepterne i Microsoft Azure Fundamentals (AZ-900) fra denne lektion.
Opsummering af lektionen
I denne lektion har du lært, at Log Analytics-arbejdsområder centraliserer diagnosticeringslogdata fra Azure-ressourcer, at KQL-operatorer som where, summarize og render lader dig filtrere, aggregere og visualisere logge, og at alarmer ved logsøgning udløser automatiserede svar, når resultatet af en KQL-forespørgsel opfylder en defineret betingelse. Herefter udforsker vi Application Insights til telemetri på programniveau.
Lær Azure Fundamentals med en AI-underviser — gratis
Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.
- Kurser
- 30
- Lektioner
- 120
Ofte stillede spørgsmål
Er lektionen “Grundlæggende om Log Analytics og KQL” gratis?
Ja — hele teksten til “Grundlæggende om Log Analytics og KQL” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Azure Fundamentals-kurset, skal du opgradere til CoddyKit PRO. Azure Fundamentals-kurset indeholder 4 lektioner i alt.
Hvad lærer jeg i “Grundlæggende om Log Analytics og KQL”?
Indlæs diagnosticeringslogs i et Log Analytics-workspace, og skriv forespørgsler i Kusto Query Language for at filtrere, aggregere og visualisere driftsdata. Du øver dig i Azure Fundamentals med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.
Skal jeg have erfaring for at begynde på Azure Fundamentals?
Der kræves ingen tidligere erfaring. Azure Fundamentals på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 2 af 4.
Hvor lang tid tager lektionen “Grundlæggende om Log Analytics og KQL”?
De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.
Kan jeg skrive og køre kode i denne Azure Fundamentals-lektion?
Ja. Alle Azure Fundamentals-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.
Alle lektioner i dette kursus
- Azure Monitor-målinger og alarmer
- Grundlæggende om Log Analytics og KQL
- Application Insights
- Azure-dashboards og workbooks