Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Tento článek vysvětluje základy používání dotazů protokolu v protokolech služby Azure Monitor. Dotazy na protokoly zapisujete a spouštíte v nástroji Log Analytics, který na portálu Azure slouží k dotazování dat v Azure Monitor Logs. V případě potřeby poskytuje příklady dotazování dat pomocí režimu KQL i jednoduchého režimu Log Analytics:
Režim KQL umožňuje psát a přizpůsobovat pokročilé dotazy pomocí dotazovacího jazyka Kusto (KQL).
Jednoduchý režim poskytuje uživatelsky přívětivé rozhraní, ve kterém vyberete tabulku a použijete filtry pro sestavování dotazů.
Pomocí agenta pozorovatelnosti můžete zkoumat data protokolů pomocí přirozeného jazyka místo psaní dotazů.
Podrobnější porovnání mezi režimem KQL a jednoduchým režimem najdete v tématu Přehled služby Log Analytics ve službě Azure Monitor.
Pokud shromažďujete data z alespoň jednoho virtuálního počítače, můžete v tomto cvičení pracovat ve svém vlastním prostředí. V jiných scénářích použijte naše ukázkové prostředí, které zahrnuje spoustu ukázkových dat.
Výukové video
Poznámka:
Toto video ukazuje starší verzi uživatelského rozhraní, ale snímky obrazovky v tomto článku jsou aktuální a odrážejí aktuální uživatelské rozhraní.
Požadována oprávnění
Musíte mít Microsoft.OperationalInsights/workspaces/query/*/read oprávnění k pracovním prostorům služby Log Analytics, které chcete dotazovat, jak je poskytováno integrovanou rolí Čtenář Log Analytics, například.
Strukturování dotazu
Dotazy můžou začínat názvem tabulky nebo příkazem search . Je vhodné začít s názvem tabulky, protože definuje jasný obor dotazu. Zlepšuje také výkon dotazů a relevanci výsledků.
Poznámka:
KQL, který používá Azure Monitor, rozlišuje malá a velká písmena. Klíčová slova jazyka se obvykle zapisují malými písmeny. Pokud v dotazu používáte názvy tabulek nebo sloupců, nezapomeňte použít správný případ, jak je znázorněno v podokně schématu.
Tip
Seznamte se s osvědčenými postupy pro dotazy KQL.
Dotazy založené na tabulkách
Azure Monitor organizuje data protokolu v tabulkách, přičemž každá se skládá z několika sloupců. Všechny tabulky a sloupce se zobrazují v podokně schématu v Log Analytics na webu Azure Portal.
Identifikujte tabulku, kterou vás zajímá, a pak se podívejte na část dat:
SecurityEvent
| take 10
Předchozí dotaz vrátí 10 výsledků z SecurityEvent tabulky bez konkrétního pořadí. Tento běžný způsob, jak získat přehled o tabulce, vám pomůže pochopit jeho strukturu a obsah. Pojďme se podívat, jak je sestavená:
- Dotaz začíná názvem
SecurityEventtabulky, která definuje rozsah dotazu. - Znak svislé roury (|) odděluje příkazy, takže výstupem prvního příkazu je vstup dalšího příkazu. Můžete přidat libovolný počet potrubních prvků.
- Za rourou je
takeoperátor. Dotaz můžete spustit bez přidání| take 10, ale může vrátit více výsledků, než můžete přiměřeně zobrazit, až do maximálních výsledků.
Vyhledávací dotazy
Vyhledávací dotazy jsou méně strukturované. Nejlépe se hodí k vyhledání záznamů, které obsahují určitou hodnotu v libovolném sloupci určité tabulky.
Tento dotaz vyhledá SecurityEvent v tabulce záznamy, které obsahují frázi "Kryptografické". Z těchto záznamů se vrátí a zobrazí 10 záznamů:
search in (SecurityEvent) "Cryptographic"
| take 10
Pokud tuto in (SecurityEvent) část vynecháte a spustíte jenom search "Cryptographic", hledání přejde přes všechny tabulky. Proces pak bude trvat déle a bude méně efektivní.
Důležité
Vyhledávací dotazy jsou obvykle pomalejší než dotazy založené na tabulkách, protože musí zpracovávat více dat.
Omezit výsledky
Pomocí operátoru take v KQL nebo možnosti Zobrazit v jednoduchém režimu vrátíte omezený počet záznamů z dotazu protokolu.
Pomocí operátoru take můžete zobrazit malý vzorek záznamů vrácením až do zadaného počtu záznamů. Příklad:
SecurityEvent
| take 10
Vybrané výsledky jsou libovolné a zobrazují se v žádném konkrétním pořadí. Pokud potřebujete vrátit výsledky v určitém pořadí, použijte operátory sort a top.
Řazení výsledků
Tato část popisuje operátory sort a top jejich desc a asc argumenty. I když take je užitečné získat několik záznamů, nemůžete vybrat nebo seřadit výsledky v žádném konkrétním pořadí. Pokud chcete získat seřazené zobrazení, použijte sort a top.
Pomocí operátoru sort můžete výsledky dotazu seřadit podle zadaného sloupce.
sort Neomezuje ale počet záznamů vrácených dotazem.
Následující dotaz například vrátí všechny dostupné záznamy pro SecurityEvent tabulku, až do limitu výsledků portálu a seřadí je podle sloupce TimeGenerated.
SecurityEvent
| sort by TimeGenerated
Předchozí dotaz by mohl vrátit příliš mnoho výsledků. Může také nějakou dobu trvat, než se vrátí výsledky. Dotaz seřadí celou SecurityEvent tabulku podle TimeGenerated sloupce. Portál Analytics pak omezí zobrazení na limit výsledků portálu. Tento přístup není optimální. Nejlepší způsob, jak získat pouze nejnovější záznamy, je použít top operátor.
Sestupně a vzestupně
Pomocí argumentu desc můžete záznamy seřadit sestupně v dotazech KQL. Sestupně je výchozí pořadí řazení pro sort a top, takže můžete obvykle vynechat desc argument.
Například data vrácená oběma následujícími dotazy se seřadí podle sloupce TimeGenerated v sestupném pořadí:
-
SecurityEvent | sort by TimeGenerated desc -
SecurityEvent | sort by TimeGenerated
Pokud chcete řadit vzestupně, zadejte asc.
Hlavní
Operátor slouží top k seřazení celé tabulky na straně serveru a následnému vrácení pouze horních záznamů.
Například následující dotaz vrátí nejnovějších 10 záznamů:
SecurityEvent
| top 10 by TimeGenerated
Výstup vypadá jako v tomto příkladu:
Filtrování výsledků
Filtrování je nejběžnější způsob, jak omezit výsledky dotazů na relevantní informace.
Pokud chcete do dotazu přidat filtr, použijte where operátor následovaný jednou nebo více podmínkami. Například následující dotaz vrátí pouze SecurityEvent záznamy, kde Level equals _8:
SecurityEvent
| where Level == 8
Při zápisu podmínek filtru můžete použít následující relační operátory AQL a logické operátory:
| Výraz | Popis | Příklad |
|---|---|---|
| == | Kontrola rovnosti (rozlišují se malá a velká písmena) |
Level == 8 |
| =~ | Kontrola rovnosti (nerozlišují malá a velká písmena) |
EventSourceName =~ "microsoft-windows-security-auditing" |
| !=, <> | Kontrola nerovnosti (oba výrazy jsou identické) |
Level != 4 |
and, or |
Vyžadováno mezi podmínkami | Level == 16 or CommandLine != "" |
Filtrování podle více podmínek
K filtrování podle několika podmínek můžete použít některý z následujících přístupů:
Použijte and, jak je znázorněno tady:
SecurityEvent
| where Level == 8 and EventID == 4672
Spojte více where prvků, jeden za druhým, jak je znázorněno zde:
SecurityEvent
| where Level == 8
| where EventID == 4672
Poznámka:
Hodnoty můžou mít různé typy, takže je možná budete muset přetypovat, abyste provedli porovnání se správným typem. Například SecurityEvent Level sloupec je typu String, takže ho musíte přetypovat na číselný typ, například int nebo long, před použitím číselných operátorů, jak je znázorněno zde: SecurityEvent | where toint(Level) >= 10
Zadání časového rozsahu
Pomocí nástroje pro výběr času nebo přidáním časového filtru přímo do dotazu můžete určit, jaké časové období dotaz Azure Monitor pokrývá.
Časový rozsah můžete zadat pomocí nástroje pro výběr času nebo filtru času.
Poznámka:
Pokud do dotazu zahrnete časový rozsah, výběr času se automaticky změní na Nastavit v dotazu. Pokud ručně změníte výběr času na jinou hodnotu, log Analytics použije menší ze dvou časových rozsahů.
Použijte výběr času
Vedle tlačítka Spustit se zobrazí časový ovladač, který vás informuje, že dotazujete záznamy pouze z posledních 24 hodin. Tento výchozí časový rozsah se použije pro všechny dotazy. Pokud chcete získat záznamy pouze z poslední hodiny, vyberte Poslední hodinu a pak dotaz spusťte znovu.
Přidání časového filtru do dotazu
Můžete také definovat vlastní časový rozsah přidáním časového filtru do dotazu.
Nejlepší je umístit časový filtr hned za název tabulky:
SecurityEvent
| where TimeGenerated > ago(30m)
| where toint(Level) >= 10
V předchozím filtru času znamená ago(30m) "30 minut zpět". Tento dotaz vrátí záznamy pouze z posledních 30 minut, což je vyjádřeno, například, jako 30m. Mezi další časové jednotky patří dny (například 2d) a sekundy (například 10 sekund).
Zahrnutí nebo vyloučení sloupců ve výsledcích dotazu
Pomocí příkazu project v jazyce KQL nebo nástroje pro výběr sloupců v jednoduchém režimu vyberte, které sloupce se zobrazí ve výsledcích dotazu na protokoly Azure Monitoru.
Slouží project k výběru konkrétních sloupců, které se mají zahrnout do výsledků:
SecurityEvent
| top 10 by TimeGenerated
| project TimeGenerated, Computer, Activity
Předchozí příklad vygeneruje následující výstup:
Můžete také použít project k přejmenování sloupců a definování nových sloupců. V dalším příkladu se project používá k provedení následujícího:
- Vyberte pouze původní sloupce
ComputeraTimeGenerated. - Zobraz sloupec
ActivityjakoEventDetails. - Vytvořte nový sloupec s názvem
EventCode. Funkcesubstring()slouží k získání pouze prvních čtyř znaků zActivitypole.
SecurityEvent
| top 10 by TimeGenerated
| project Computer, TimeGenerated, EventDetails=Activity, EventCode=substring(Activity, 0, 4)
Definování a použití vlastních polí
Můžete použít extend k zachování všech původních sloupců v sadě výsledků a definování dalších sloupců. Následující dotaz používá extend k přidání EventCode sloupce. Tento sloupec nemusí být zobrazen na konci výsledků tabulky. Abyste ho mohli zobrazit, budete muset rozbalit podrobnosti záznamu.
SecurityEvent
| top 10 by TimeGenerated
| extend EventCode=substring(Activity, 0, 4)
Poznámka:
extend Operátor použijte pro ad hoc výpočty v dotazech. K transformaci nebo agregaci dat v době příjmu dat použijte transformacenebo souhrnná pravidla pro efektivnější dotazy.
Agregace a seskupení výsledků
Agregační skupiny řádků
Slouží summarize k identifikaci skupin záznamů podle jednoho nebo více sloupců a použití agregací na ně. Nejběžnějším použitím summarize je count, který vrátí počet výsledků v každé skupině.
Následující dotaz zkontroluje všechny Perf záznamy z poslední hodiny, seskupí je podle ObjectNamea spočítá záznamy v každé skupině:
Perf
| where TimeGenerated > ago(1h)
| summarize count() by ObjectName
Seskupení jedinečných kombinací hodnot ve více sloupcích
Někdy dává smysl definovat skupiny podle více dimenzí. Každá jedinečná kombinace těchto hodnot definuje samostatnou skupinu:
Perf
| where TimeGenerated > ago(1h)
| summarize count() by ObjectName, CounterName
Provádění matematických nebo statistických výpočtů
Dalším běžným použitím je provádění matematických nebo statistických výpočtů v každé skupině. Následující příklad vypočítá průměr CounterValue pro každý počítač:
Perf
| where TimeGenerated > ago(1h)
| summarize avg(CounterValue) by Computer
Výsledky tohoto dotazu jsou bezvýznamné, protože jsme smíchali různé čítače výkonu. Pokud chcete, aby výsledky byly smysluplnější, vypočítejte průměr zvlášť pro každou kombinaci CounterNameComputera:
Perf
| where TimeGenerated > ago(1h)
| summarize avg(CounterValue) by Computer, CounterName
Shrnutí podle časového sloupce
Výsledky seskupení můžou být také založené na časovém sloupci nebo na jiné souvislé hodnotě. Pouhým sumarizováním by TimeGenerated by se vytvořily skupiny pro každou milisekundu v časovém rozsahu, protože tyto hodnoty jsou jedinečné.
Pokud chcete vytvořit skupiny založené na průběžných hodnotách, je nejlepší rozdělit rozsah na spravovatelné jednotky pomocí bin. Následující dotaz analyzuje Perf záznamy, které měří volné paměti (Available MBytes) v určitém počítači. Vypočítá průměrnou hodnotu každého 1hodinového období za posledních 7 dnů:
Perf
| where TimeGenerated > ago(7d)
| where Computer == "DC01.na.contosohotels.com"
| where CounterName == "Available MBytes"
| summarize avg(CounterValue) by bin(TimeGenerated, 1h)
Pokud chcete výstup usnadnit, můžete ho vybrat a zobrazit ho jako časový graf, který zobrazuje dostupnou paměť v průběhu času. Uděláte to tak, že přepnete do zobrazení Graf, otevřete boční panel Formátování grafu vpravo a vyberete Spojnicový pro typ grafu:
Nejčastější dotazy
Tato část obsahuje odpovědi na běžné otázky.
Proč se v protokolech služby Azure Monitor zobrazují duplicitní záznamy?
Při spouštění dotazů protokolu si můžete všimnout duplicitních záznamů ve výsledcích. Tato duplicita obvykle pochází z jedné z následujících dvou podmínek:
- Komponenty v potrubí mají opakování, aby bylo zajištěno spolehlivé doručování do cílového místa. V některých případech může mít tato funkce za následek duplicity pro malé procento položek telemetrie.
- Pokud duplicitní záznamy pocházejí z virtuálního počítače, možná máte nainstalovaného agenta Log Analytics i agenta Služby Azure Monitor. Pokud stále potřebujete nainstalovaného agenta Log Analytics, nakonfigurujte pracovní prostor služby Log Analytics tak, aby už neshromažďoval data shromážděná také pravidlem shromažďování dat používaným agentem služby Azure Monitor.
Další kroky
- Další informace o používání řetězcových dat v dotazu protokolu najdete v tématu Práce s řetězci v dotazech protokolu služby Azure Monitor.
- Další informace o agregaci dat v dotazu protokolu najdete v tématu Pokročilé agregace v dotazech protokolu služby Azure Monitor.
- Informace o spojení dat z více tabulek najdete v tématu Spojení v dotazech protokolu služby Azure Monitor.