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
SecurityEvent
kezdő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 10
né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 top
haszná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.
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 and
a 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
long
vagy , 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.
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:
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 oszlopokatTimeGenerated
jelölje ki. Activity
Az oszlop megjelenítése .EventDetails
- Hozzon létre egy új oszlopot .
EventCode
Asubstring()
függvény csak az első négy karakter lekérésére szolgál aActivity
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 Computer
a 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 TimeGenerated
azonban 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.
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.