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


A napló lekérdezéseinek első lépései az Azure Monitor-naplókban

Ez a cikk ismerteti a napló lekérdezések Azure Monitor-naplókban való írásának alapjait, többek között az alábbiakat:

Adott esetben a cikk példákat tartalmaz az adatok lekérdezésére Kusto lekérdezésnyelv (KQL) és a Log Analytics egyszerű móddal.

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.

Oktatóvideó

Feljegyzés

Ez a videó a felhasználói felület egy korábbi verzióját mutatja be, de a cikkben szereplő képernyőképek naprakészek, és az aktuális felhasználói felületet tükrözik.


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.

Lekérdezés strukturálá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 Azure PortalOn a Log Analytics sémapaneljén minden tábla és oszlop látható.

Azonosítsa az önt érdeklő táblát, majd tekintse meg az adatok egy részét:

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.

Keresési lekérdezések

A keresési lekérdezések kevésbé strukturáltak. Leginkább olyan rekordok megkeresésére alkalmasak, amelyek egy adott értéket tartalmaznak egy adott tábla bármelyik oszlopában.

Ez a lekérdezés megkeresi a táblában a SecurityEvent "Titkosítás" kifejezést tartalmazó rekordokat. Ezen rekordok közül 10 rekord lesz visszaadva és megjelenítve:

search in (SecurityEvent) "Cryptographic"
| take 10

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.

Eredmények korlátozása

Az operátor használatával megtekintheti a take rekordok egy kis mintáját a megadott számú rekord visszaadásával. Példa:

SecurityEvent
| take 10

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.

Az eredmények rendezése

Ez a szakasz az operátorokat és top azok descsortasc 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.

Sort

Az sort operátorral a lekérdezési eredményeket a megadott oszlop szerint rendezheti. 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.

Desc és asc

desc Az argumentum használatával csökkenő sorrendbe rendezheti a rekordokat. A csökkenő sorrend az alapértelmezett rendezési sorrend sorttop, 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
    

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

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 a hasonlóképpen fog kinézni:

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

Szűrés eredményei

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 != ""

Szűrés több feltétel alapján

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 intlongvagy , 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.

Feljegyzés

Ha egy időtartományt is belefoglal a lekérdezésbe, az időválasztó automatikusan a Set in query (Beállítás) értékre változik. Ha manuálisan módosítja az időválasztót egy másik értékre, a Log Analytics a két időtartomány közül a kisebbet alkalmazza.

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 KQL módban.

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.

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).

Oszlopok belefoglalása vagy kizárása a lekérdezési eredményekbe

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)

Egyéni mezők definiálása és használata

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)

Feljegyzés

Használja az extend operátort alkalmi számításokhoz a lekérdezésekben. Használjon betöltési idejű átalakításokat vagy összegzési szabályokat az adatok betöltési időben történő átalakításához vagy összesítéséhez a hatékonyabb lekérdezések érdekében.

Eredmények összesítése és csoportosítása

Sorok csoportjainak összesítése

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

Értékek egyedi kombinációinak csoportosítása több oszlopban

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

Matematikai vagy statisztikai számítások végrehajtása

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 == "DC01.na.contosohotels.com" 
| 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. Ehhez váltson a Diagram nézetre, nyissa meg a diagramformázás oldalsávot jobbra, és válassza a Diagramtípus vonalalehetőséget:

Képernyőkép egy lekérdezési memória időalapú értékeiről KQL módban.

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.