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

Ez a cikk a napló lekérdezések Azure Monitor-naplókban való használatának alapjait ismerteti. Napló lekérdezéseket írhat és futtathat a Log Analytics, amely a Azure portálon Azure Monitor Naplókban lévő adatok lekérdezésére szolgáló eszköz. Adott esetben példákat kínál az adatok KQL és Log Analytics egyszerű módban történő lekérdezésére:

  • A KQL mód lehetővé teszi a speciális lekérdezések írását és testreszabását a Kusto Query Language (KQL) használatával.

    Képernyőkép a KQL mód menüszalagjáról.

  • Az egyszerű mód egy felhasználóbarát felületet biztosít, ahol kiválaszthat egy táblát, és szűrőket alkalmazhat a lekérdezések létrehozásához.

    Képernyőkép az Egyszerű mód menüszalagjáról.

Az Observability Agent használatával természetes nyelv használatával vizsgálhatja meg a naplóadatokat a lekérdezések írása helyett.

A KQL mód és az egyszerű mód közötti részletesebb összehasonlításért tekintse meg a Log Analytics áttekintését az Azure Monitorban.

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 érzékeny a kis- és nagybetűkre. 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 hozzáadás | take 10 nélkül is futtathatja, de a maximális eredményig több eredményt adhat vissza, mint amennyit ésszerűen meg tud tekinteni.

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

take A KQL operátorral vagy az Egyszerű módban történő Megjelenítés lehetőséggel korlátozott számú rekordot ad vissza a naplólekérdezésből.

Az take operátor használatával megtekinthet egy kis mintát a rekordból, legfeljebb a megadott számú rekord megjelenítésével. 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 sort az top operátorokat.

Az eredmények rendezése

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

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 tábla összes elérhető rekordját visszaadja a SecurityEventportál eredménykorlátjának függvényében, és rendezi őket a TimeGenerated oszlop szerint.

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 a TimeGenerated oszlop szerint rendezi. Az Elemzési portál ezután a portál eredménykorlátjának korlátozására 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 a top operátort használja.

Le és fel

Az argumentum használatával csökkenő desc sorrendben rendezheti a rekordokat a KQL-lekérdezésekben. A csökkenő sorrend az alapértelmezett rendezkedési sorrend a sort és a top esetében, ezért általában kihagyhatja a desc argumentumot.

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

Legfelső

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ő KQL összehasonlító operátorokat és logikai operátorokat használhatja:

Kifejezés 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 szükséges 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 a and következőképpen, ahogy itt látható:

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

Több where elemet csatornázzunk 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 az összehasonlítás előtt át kell alakítanunk őket a megfelelő típusra. Az oszlop például SecurityEvent Level karakterlánc típusú, ezért numerikus típusra kell átalakítania, például int, long vagy, mielőtt numerikus operátorokat alkalmazhat rajta, ahogy az itt látható: SecurityEvent | where toint(Level) >= 10.


Időtartomány megadása

Az időválasztóval vagy egy időszűrő hozzáadásával szabályozhatja, hogy a Azure Monitor napló lekérdezése mely időtartamot fedi le.

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

Válassza ki, hogy mely oszlopok jelenjenek meg a Azure Monitor naplólekérdezés eredményei között a KQL-ben project vagy az egyszerű módban lévő oszlopválasztó használatával.

Használja a project parancsot a kívánt oszlopok eredményekbe való beillesztéséhez.

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 project használatával a következőket éri el:

  • Kizárólag az eredeti Computer oszlopokat TimeGenerated jelölje ki.
  • Jelenítsd meg a Activity oszlopot EventDetails-ként.
  • 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 a extend használatával adja hozzá a EventCode oszlopot. 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é váljanak, számítsa ki külön az átlagot minden CounterName és Computer kombinációra 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?

Naplólekérdezések futtatásakor ismétlődő rekordokat észlelhet az eredményekben. 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.