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:
- Lekérdezés strukturálása.
- Lekérdezési eredmények rendezése.
- Lekérdezési eredmények szűrése.
- Adjon meg egy időtartományt.
- Oszlopok belefoglalása vagy kizárása a lekérdezési eredményekbe.
- Egyéni mezők definiálása és használata.
- Eredmények összesítése és csoportosítása.
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
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.
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 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
.
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 top
haszná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 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
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:
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 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.
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.
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:
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)
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 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 == "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:
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.