Megosztás a következőn keresztül:


Ismerkedés az Azure Monitor-naplólekérdezésekkel

Feljegyzés

Ha legalább egy virtuális gépről gyűjt adatokat, ezt a gyakorlatot saját környezetében is végrehajthatja. Más forgatókönyvekhez használja a bemutató környezetet, amely rengeteg mintaadatot tartalmaz.

Ha már tudja, hogyan kérdezhet le Kusto lekérdezésnyelv (KQL), de gyorsan létre kell hoznia hasznos lekérdezéseket az erőforrástípusok alapján, tekintse meg a mentett példalekérdezések panelt a Lekérdezések használata az Azure Monitor Log Analyticsben.

Ebben az oktatóanyagban megtudhatja, hogyan írhat napló lekérdezéseket az Azure Monitorban. A cikk bemutatja, hogyan:

  • A lekérdezési struktúra ismertetése.
  • Lekérdezési eredmények rendezése.
  • Lekérdezési eredmények szűrése.
  • Adjon meg egy időtartományt.
  • Adja meg, hogy mely mezők szerepeljenek az eredmények között.
  • Egyéni mezők definiálása és használata.
  • Eredmények összesítése és csoportosítása.

A Log Analytics Azure Portalon való használatával kapcsolatos oktatóanyagért tekintse meg az Azure Monitor Log Analytics használatának első lépéseit.

Az Azure Monitor napló lekérdezéseiről további információt az Azure Monitor napló lekérdezéseinek áttekintése című témakörben talál.

Az oktatóanyag videóverziója:

A szükséges engedélyek

Engedélyekkel kell rendelkeznie Microsoft.OperationalInsights/workspaces/query/*/read a lekérdezett Log Analytics-munkaterületekhez, például a Log Analytics-olvasó beépített szerepkörének megfelelően.

Új lekérdezés írása

A lekérdezések táblanévvel vagy paranccsal search kezdődhetnek. Érdemes táblanévvel kezdeni, mert egyértelmű hatókört határoz meg a lekérdezéshez. Emellett javítja a lekérdezés teljesítményét és az eredmények relevanciáját.

Feljegyzés

Az Azure Monitor által használt KQL a kis- és nagybetűk megkülönböztetése. A nyelvi kulcsszavak általában kisbetűvel vannak megírva. Ha táblák vagy oszlopok nevét használja egy lekérdezésben, ügyeljen arra, hogy a megfelelő esetet használja a sémapanelen látható módon.

Táblaalapú lekérdezések

Az Azure Monitor több oszlopból álló táblákba rendezi a naplóadatokat. Az összes tábla és oszlop megjelenik a Séma panelen a Log Analyticsben az Analytics portálon. Azonosítsa az Önt érdeklő táblázatot, majd tekintse meg az adatokat:

SecurityEvent
| take 10

Az előző lekérdezés 10 eredményt ad vissza a SecurityEvent táblából, nem meghatározott sorrendben. Ez a gyakori módja annak, hogy áttekintse a táblázatokat, segít megérteni annak szerkezetét és tartalmát. Vizsgáljuk meg, hogyan épül fel:

  • A lekérdezés a tábla nevével SecurityEventkezdődik, amely meghatározza a lekérdezés hatókörét.

  • A pipa (|) karakter elválasztja a parancsokat, így az első parancs kimenete a következő bemenete. Tetszőleges számú vezetékes elemet hozzáadhat.

  • A cső követése a take kezelő.

    A lekérdezést a hozzáadás | take 10nélkül is futtathatjuk. A parancs továbbra is érvényes lenne, de akár 30 000 találatot is visszaadhat.

Take

Az operátor használatával megtekintheti a take rekordok egy kis mintáját a megadott számú rekord visszaadásával. A kiválasztott eredmények tetszőlegesek, és nem meghatározott sorrendben jelennek meg. Ha az eredményeket egy adott sorrendben kell visszaadnia, használja az és top az sort operátorokat.

Keresési lekérdezések

A keresési lekérdezések kevésbé strukturáltak. Jobban alkalmasak olyan rekordok megkeresésére, amelyek egy adott értéket tartalmaznak bármelyik oszlopban:

search in (SecurityEvent) "Cryptographic"
| take 10

Ez a lekérdezés megkeresi a táblában a SecurityEvent "Titkosítás" kifejezést tartalmazó rekordokat. Ezek közül 10 rekord lesz visszaadva és megjelenítve. Ha kihagyja a in (SecurityEvent) részt, és csak search "Cryptographic"fut, a keresés végighalad az összes táblán. A folyamat ezután tovább tart, és kevésbé hatékony.

Fontos

A keresési lekérdezések általában lassabbak, mint a táblaalapú lekérdezések, mivel több adatot kell feldolgozniuk.

Rendezés és felül

Ez a szakasz az operátorokat és top azok desc sort asc argumentumait ismerteti. Bár take hasznos néhány rekord lekéréséhez, nem választhatja ki vagy rendezheti az eredményeket egy adott sorrendben. Rendezett nézet lekéréséhez használja sort és top.

Desc és asc

Desc

desc Az argumentum használatával csökkenő sorrendbe rendezheti a rekordokat. A csökkenő sorrend az alapértelmezett rendezési sorrend sort top, ezért általában kihagyhatja az argumentumot desc .

Az alábbi lekérdezések által visszaadott adatokat például a TimeGenerated oszlop rendezi csökkenő sorrendben:

  • SecurityEvent	
    | sort by TimeGenerated desc
    
  • SecurityEvent	
    | sort by TimeGenerated
    

Asc

Növekvő sorrendben történő rendezéshez adja meg a következőt asc: .

Sort

Használhatja az operátortsort. sort A lekérdezés eredményeit a megadott oszlop szerint rendezi. Azonban sort nem korlátozza a lekérdezés által visszaadott rekordok számát.

Az alábbi lekérdezés például a SecurityEvent tábla összes elérhető rekordját adja vissza, amely legfeljebb 30 000 rekordot tartalmaz, és a TimeGenerated oszlop szerint rendezi őket.

SecurityEvent	
| sort by TimeGenerated

Az előző lekérdezés túl sok eredményt adhat vissza. Az eredmények visszaadása is eltarthat egy ideig. A lekérdezés a teljes SecurityEvent táblát az oszlop szerint rendezi TimeGenerated . Az Elemzési portál ezután csak 30 000 rekordra korlátozza a megjelenítést. Ez a megközelítés nem optimális. A legjobb módja annak, hogy csak a legújabb rekordokat szerezze be, ha az operátort tophasználja.

Fent

Az operátorral top rendezheti a teljes táblát a kiszolgálóoldalon, majd csak a legfelső rekordokat adja vissza.

A következő lekérdezés például a legutóbbi 10 rekordot adja vissza:

SecurityEvent
| top 10 by TimeGenerated

A kimenet az alábbi példához hasonlóan néz ki.

Képernyőkép az első 10 rekord csökkenő sorrendben történő rendezéséről.

A where operátor: Szűrés egy feltételre

A szűrők a nevüknek megfelelően egy adott feltétel alapján szűrik az adatokat. A szűrés a lekérdezési eredmények releváns információkra való korlátozásának leggyakoribb módja.

Ha szűrőt szeretne hozzáadni egy lekérdezéshez, használja az where operátort , amelyet egy vagy több feltétel követ. A következő lekérdezés például csak SecurityEvent olyan rekordokat ad vissza, ahol Level equals _8:

SecurityEvent
| where Level == 8

Szűrőfeltételek írásakor a következő kifejezéseket használhatja:

Expression Leírás Példa
== Egyenlőség ellenőrzése
(kis- és nagybetűk megkülönböztetése)
Level == 8
=~ Egyenlőség ellenőrzése
(kis- és nagybetűk megkülönböztetése)
EventSourceName =~ "microsoft-windows-security-auditing"
!=, <> Az egyenlőtlenség ellenőrzése
(mindkét kifejezés azonos)
Level != 4
and, or Feltételek között használandó Level == 16 or CommandLine != ""

Ha több feltétel alapján szeretne szűrni, az alábbi módszerek egyikét használhatja:

Használja anda következőt:

SecurityEvent
| where Level == 8 and EventID == 4672

Több where elem becsúszása egymás után, az itt látható módon:

SecurityEvent
| where Level == 8 
| where EventID == 4672

Feljegyzés

Az értékek különböző típusúak lehetnek, ezért előfordulhat, hogy a megfelelő típus összehasonlításához szükséges. Az oszlop például SecurityEvent Level Sztring típusú, ezért numerikus típusra kell írnia, például int longvagy , mielőtt numerikus operátorokat használhat rajta, az itt látható módon: SecurityEvent | where toint(Level) >= 10

Időtartomány megadása

Az időtartományt az időválasztóval vagy egy időszűrővel adhatja meg.

Az időválasztó használata

Az időválasztó a Futtatás gomb mellett jelenik meg, és azt jelzi, hogy csak az elmúlt 24 óra rekordjait kérdezi le. Ez az alapértelmezett időtartomány minden lekérdezésre érvényes. Ha csak az utolsó órából szeretne rekordokat lekérni, válassza az Utolsó óra lehetőséget, majd futtassa újra a lekérdezést.

Képernyőkép az időválasztóról és az időtartomány-parancsok listájáról.

Időszűrő hozzáadása a lekérdezéshez

Saját időtartományt is meghatározhat, ha időszűrőt ad hozzá a lekérdezéshez. Az időszűrő hozzáadása felülírja az időválasztóban kijelölt időtartományt.

A legjobb, ha az időszűrőt közvetlenül a tábla neve után helyezi el:

SecurityEvent
| where TimeGenerated > ago(30m) 
| where toint(Level) >= 10

Az előző időszűrő azt jelenti, ago(30m) hogy "30 perccel ezelőtt". Ez a lekérdezés csak az utolsó 30 perc rekordjait adja vissza, amely például 30 m-ként van kifejezve. Az egyéb időegységek közé tartoznak a napok (például 2d) és a másodpercek (például 10-ek).

A projekt és a kiterjesztés használata oszlopok kiválasztásához és kiszámításához

Az project eredményekbe belefoglalandó oszlopok kijelölése:

SecurityEvent 
| top 10 by TimeGenerated 
| project TimeGenerated, Computer, Activity

Az előző példa a következő kimenetet hozza létre:

Képernyőkép a lekérdezés

Az oszlopok átnevezésére és újak definiálására is használható project . A következő példa a következőket használja project :

  • Csak az Computer eredeti oszlopokat TimeGenerated jelölje ki.
  • Activity Az oszlop megjelenítése .EventDetails
  • Hozzon létre egy új oszlopot .EventCode A substring() függvény csak az első négy karakter lekérésére szolgál a Activity mezőből.
SecurityEvent
| top 10 by TimeGenerated 
| project Computer, TimeGenerated, EventDetails=Activity, EventCode=substring(Activity, 0, 4)

Az extend összes eredeti oszlopot megtarthatja az eredményhalmazban, és definiálhat más oszlopokat is. Az alábbi lekérdezés az oszlop hozzáadását EventCode használjaextend. Előfordulhat, hogy ez az oszlop nem jelenik meg a tábla eredményeinek végén. A megtekintéshez ki kell bontania egy rekord részleteit.

SecurityEvent
| top 10 by TimeGenerated
| extend EventCode=substring(Activity, 0, 4)

Sorok csoportjainak összesítése összegzéssel

A rekordok egy vagy több oszlop szerinti csoportjainak azonosítására és aggregációk alkalmazására használható summarize . A leggyakoribb használat summarize az count, amely az egyes csoportokban lévő eredmények számát adja vissza.

Az alábbi lekérdezés áttekinti az elmúlt óra összes Perf rekordját, csoportosítja ObjectNameőket, és megszámolja az egyes csoportok rekordjait:

Perf
| where TimeGenerated > ago(1h)
| summarize count() by ObjectName

Néha érdemes több dimenzió alapján definiálni a csoportokat. Az értékek minden egyedi kombinációja külön csoportot határoz meg:

Perf
| where TimeGenerated > ago(1h)
| summarize count() by ObjectName, CounterName

Egy másik gyakori felhasználási módja az egyes csoportok matematikai vagy statisztikai számításainak végrehajtása. Az alábbi példa kiszámítja az egyes számítógépek átlagát CounterValue :

Perf
| where TimeGenerated > ago(1h)
| summarize avg(CounterValue) by Computer

Sajnos a lekérdezés eredményei értelmetlenek, mert különböző teljesítményszámlálókat kevertünk össze. Az eredmények értelmesebbé tételéhez külön számítsa ki az átlagot a következők és Computera következők kombinációira CounterName vonatkozóan:

Perf
| where TimeGenerated > ago(1h)
| summarize avg(CounterValue) by Computer, CounterName

Összegzés időoszlop szerint

Az eredmények csoportosítása egy időoszlopon vagy egy másik folyamatos értéken is alapulhat. Egyszerűen összefoglalva by TimeGeneratedazonban minden egyes ezredmásodperchez létrehozna csoportokat az időtartományon belül, mivel ezek az értékek egyediek.

Ha folyamatos értékek alapján szeretne csoportokat létrehozni, a legjobb, ha a tartományt kezelhető egységekre bontja a használatával bin. Az alábbi lekérdezés elemzi azokat Perf a rekordokat, amelyek egy adott számítógépen mérik a szabad memóriát (Available MBytes). Kiszámítja az elmúlt 7 napban az egyes 1 órás időszakok átlagos értékét:

Perf 
| where TimeGenerated > ago(7d)
| where Computer == "ContosoAzADDS2" 
| where CounterName == "Available MBytes" 
| summarize avg(CounterValue) by bin(TimeGenerated, 1h)

Ha egyértelműbbé szeretné tenni a kimenetet, kiválaszthatja, hogy idődiagramként jelenítse meg, amely a rendelkezésre álló memóriát jeleníti meg az idő függvényében.

Képernyőkép a lekérdezési memória időbeli értékeiről.

Gyakori kérdések

Ez a szakasz választ ad a gyakori kérdésekre.

Miért látok duplikált rekordokat az Azure Monitor-naplókban?

Előfordulhat, hogy ismétlődő rekordokat észlel az Azure Monitor-naplókban. Ez a duplikáció általában az alábbi két feltétel egyikéből áll:

  • A folyamat összetevői újrapróbálkoztak, hogy megbízható kézbesítést biztosítsanak a célhelyen. Előfordulhat, hogy ez a képesség a telemetriai elemek kis százalékában duplikált értékeket eredményez.
  • Ha az ismétlődő rekordok egy virtuális gépről származnak, előfordulhat, hogy a Log Analytics-ügynök és az Azure Monitor Agent is telepítve van. Ha továbbra is szüksége van a Log Analytics-ügynök telepítésére, konfigurálja úgy a Log Analytics-munkaterületet, hogy többé ne gyűjtsön olyan adatokat, amelyeket az Azure Monitor Agent által használt adatgyűjtési szabály is gyűjt.

Következő lépések

  • Ha többet szeretne megtudni a sztringadatok napló lekérdezésben való használatáról, olvassa el a Sztringek használata az Azure Monitor napló lekérdezéseiben című témakört.
  • Ha többet szeretne megtudni az adatok naplózási lekérdezésekben való összesítéséről, tekintse meg az Azure Monitor napló lekérdezéseinek speciális összesítéseit.
  • Ha többet szeretne megtudni arról, hogyan illeszthet össze adatokat több táblából, olvassa el a Csatlakozások az Azure Monitor napló lekérdezéseiben című témakört.
  • A teljes Kusto lekérdezésnyelv dokumentációját a KQL nyelvi referenciájában találja.