Dela via


Kusto-frågespråk översikt

Gäller för: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

Kusto-frågespråk (KQL) är ett kraftfullt verktyg för att utforska data och upptäcka mönster, identifiera avvikelser och extremvärden, skapa statistisk modellering med mera.

KQL är ett enkelt men kraftfullt språk för att fråga strukturerade, halvstrukturerade och ostrukturerade data. Språket är uttrycksfullt, lättläst och förstår frågesyftet och optimerat för redigeringsupplevelser. KQL är optimalt för att fråga telemetri, mått och loggar med djupt stöd för textsökning och parsning, tidsserieoperatorer och funktioner, analys och aggregering, geospatiala sökningar, vektorlikhetssökningar och många andra språkkonstruktioner som ger det mest optimala språket för dataanalys. Frågan använder schemaentiteter som är ordnade i en hierarki som liknar SQL:er: databaser, tabeller och kolumner.

Om du har en bakgrund inom skriptning eller arbete med databaser bör mycket av innehållet i den här artikeln kännas bekant. Om inte, oroa dig inte, eftersom språkets intuitiva karaktär snabbt gör att du kan börja skriva egna frågor och driva värde för din organisation.

Den här artikeln innehåller en förklaring av frågespråket och erbjuder praktiska övningar för att komma igång med att skriva frågor. Om du vill komma åt frågemiljön använder du webbgränssnittet Azure Data Explorer. Mer information om hur du använder KQL finns i Självstudie: Lär dig vanliga operatorer.

Den här artikeln innehåller en förklaring av frågespråket och erbjuder praktiska övningar för att komma igång med att skriva frågor. Om du vill komma åt frågemiljön använder du KQL-frågeuppsättningen. Mer information om hur du använder KQL finns i Självstudie: Lär dig vanliga operatorer.

KQL är också det språk som du använder för att arbeta med och manipulera data i Microsoft Sentinel. Loggarna som du matar in på din arbetsyta är inte värda mycket om du inte kan analysera dem och få viktig information dold i alla dessa data. KQL har inte bara kraften och flexibiliteten för att få den informationen, utan enkelheten att hjälpa dig att komma igång snabbt.

Den här artikeln beskriver grunderna i KQL, som omfattar några av de mest använda funktionerna och operatorerna, som ska hantera 75 till 80 procent av de frågor som användarna skriver dagligen. När du behöver mer djup eller om du vill köra mer avancerade frågor kan du dra nytta av Advanced KQL för Microsoft Sentinel-arbetsboken.

Varför KQL för Microsoft Sentinel?

Microsoft Sentinel bygger på Azure Monitor-tjänsten och använder Azure Monitors Log Analytics-arbetsytor för att lagra alla sina data. Dessa data innehåller något av följande:

  • data som matas in från externa källor till fördefinierade tabeller med hjälp av Microsoft Sentinel-dataanslutningsprogram.
  • data som matas in från externa källor i användardefinierade anpassade tabeller, med hjälp av anpassade dataanslutningar och vissa typer av färdiga anslutningsappar.
  • data som skapats av Själva Microsoft Sentinel, till följd av de analyser som skapas och utförs, till exempel aviseringar, incidenter och UEBA-relaterad information.
  • data som laddats upp till Microsoft Sentinel för att hjälpa till med identifiering och analys – till exempel hotinformationsflöden och bevakningslistor.

KQL utvecklades som en del av Azure Data Explorer-tjänsten och är därför optimerad för att söka igenom stordatalager i en molnmiljö. Den är utformad för att hjälpa dig att fördjupa dig i dina data och utforska deras dolda skatter.

KQL används också i Azure Monitor och har stöd för extra Azure Monitor-funktioner som gör att du kan hämta, visualisera, analysera och parsa data i Log Analytics-datalager. I Microsoft Sentinel använder du verktyg baserade på KQL när du visualiserar och analyserar data och jagar efter hot, oavsett om det finns i befintliga regler och arbetsböcker eller när du skapar egna.

Eftersom KQL är en del av nästan allt du gör i Microsoft Sentinel hjälper en tydlig förståelse för hur det fungerar att få ut mer av ditt SIEM.

Vad är en Kusto-fråga?

En Kusto-fråga är en skrivskyddad begäran om att bearbeta data och returnera resultat. Begäran anges i oformaterad text med hjälp av en dataflödesmodell som är lätt att läsa, redigera och automatisera. Kusto-frågor görs av en eller flera frågeinstruktioner.

En Kusto-fråga skriver inga data. Frågor körs på data som är ordnade i en hierarki med databaser, tabeller och kolumner, som liknar SQL.

Vad är en frågeuttryck?

Det finns tre typer av frågeuttryck:

Alla frågeinstruktioner avgränsas med en ; (semikolon) och påverkar bara frågan.

Not

Information om programfrågeuttryck finns i Programfrågeuttryck.

Den vanligaste typen av frågeuttryck är ett tabelluttryck -instruktionen, vilket innebär att både indata och utdata består av tabeller eller tabelldatauppsättningar. Tabellinstruktioner innehåller noll eller fler operatorer, som var och en börjar med tabellindata och returnerar tabellutdata. Operatorer sekvenseras av en | (rör). Dataflöden, eller skickas, från en operator till en annan. Data filtreras eller manipuleras i varje steg och matas sedan in i följande steg.

Det är som en tratt, där du börjar med en hel datatabell. Varje gång data passerar genom en annan operator filtreras de, ordnas om eller sammanfattas. Eftersom rördragningen av information från en operator till en annan är sekventiell är frågeoperatorordningen viktig och kan påverka både resultat och prestanda. I slutet av tratten har du en förfinad utdata.

Nu ska vi titta på en exempelfråga.

StormEvents
| where StartTime between (datetime(2007-11-01) .. datetime(2007-12-01))
| where State == "FLORIDA"
| count
Räkna
28

Not

KQL är skiftlägeskänsligt för allt – tabellnamn, tabellkolumnnamn, operatorer, funktioner och så vidare. Nyckelord kan användas som identifierare genom att omsluta dem inom hakparenteser och citattecken ([' och '] eller [" och "]). Till exempel ['where']. Mer information finns i namngivningsregler för identifierare

Den här frågan har ett enda tabelluttryck. -instruktionen börjar med en referens till en tabell med namnet StormEvents och innehåller flera operatorer, where och count, var och en avgränsad med ett rör. Dataraderna för källtabellen filtreras efter värdet för kolumnen StartTime och filtreras sedan efter värdet för kolumnen State. På den sista raden returnerar frågan en tabell med en enda kolumn och en enda rad som innehåller antalet återstående rader.

Om du vill prova några fler Kusto-frågor kan du läsa Självstudie: Skriva Kusto-frågor.

Hanteringskommandon

Till skillnad från Kusto-frågor är Management-kommandon begäranden till Kusto om att bearbeta eller ändra data eller metadata. Följande hanteringskommando skapar till exempel en ny Kusto-tabell med två kolumner, Level och Text:

.create table Logs (Level:string, Text:string)

Hanteringskommandon har sin egen syntax, som inte ingår i KQL-syntaxen, även om de två delar många begrepp. I synnerhet skiljer sig hanteringskommandon från frågor genom att det första tecknet i kommandots text är punkttecknet (.) (som inte kan starta en fråga). Den här skillnaden förhindrar många typer av säkerhetsattacker, bara för att den förhindrar inbäddning av hanteringskommandon i frågor.

Alla hanteringskommandon ändrar inte data eller metadata. Den stora klassen med kommandon som börjar med .showanvänds för att visa metadata eller data. Kommandot .show tables returnerar till exempel en lista över alla tabeller i den aktuella databasen.

Mer information om hanteringskommandon finns i översikten över Management-kommandon.

KQL i andra tjänster

KQL används av många andra Microsoft-tjänster. Specifik information om användningen av KQL i dessa miljöer finns i följande länkar: