Události
Vytváření aplikací a agentů AI
17. 3. 21 - 21. 3. 10
Připojte se k řadě meetupů a vytvořte škálovatelná řešení AI založená na skutečných případech použití s kolegy vývojáři a odborníky.
ZaregistrovatTento prohlížeč se už nepodporuje.
Upgradujte na Microsoft Edge, abyste mohli využívat nejnovější funkce, aktualizace zabezpečení a technickou podporu.
Tento článek vysvětluje základy zápisu dotazů na protokoly v protokolech služby Azure Monitor, včetně postupu:
V případě potřeby článek obsahuje příklady dotazování dat pomocí jednoduchého režimu dotazovací jazyk Kusto (KQL) i Log Analytics.
Poznámka
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.
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í.
Musíte mít Microsoft.OperationalInsights/workspaces/query/*/read
oprávnění k pracovním prostorům služby Log Analytics, které dotazujete, jak poskytuje integrovaná role Čtenář log Analytics, například.
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šují 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.
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á:
SecurityEvent
tabulky, která definuje rozsah dotazu.take
je operátor. Dotaz bychom mohli spustit i bez přidání | take 10
. Příkaz bude stále platný, ale může vrátit až 30 000 výsledků.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.
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 a top
operátorysort
.
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, což je maximálně 30 000 záznamů 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í jenom na 30 000 záznamů. Tento přístup není optimální. Nejlepší způsob, jak získat pouze nejnovější záznamy, je použít top
operátor.
Pomocí argumentu desc
můžete seřadit záznamy v sestupném pořadí. 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
.
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í 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 psaní podmínek filtru můžete použít následující výrazy:
Expression | 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 |
Požadováno mezi podmínkami | Level == 16 or CommandLine != "" |
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
Roušte více where
prvků, jeden za druhým, jak je znázorněno tady:
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
Č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ů.
Vedle tlačítka Spustit se zobrazí výběr času a označuje, ž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.
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)
před 30 minutami". Tento dotaz vrátí záznamy pouze z posledních 30 minut, což je vyjádřeno například 30 min. Mezi další časové jednotky patří dny (například 2d) a sekundy (například 10 sekund).
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 používá project
následující akce:
Computer
původní a TimeGenerated
původní sloupce.Activity
Zobrazí sloupec jako EventDetails
.EventCode
. Funkce substring()
slouží k získání pouze prvních čtyř znaků z Activity
pole.SecurityEvent
| top 10 by TimeGenerated
| project Computer, TimeGenerated, EventDetails=Activity, EventCode=substring(Activity, 0, 4)
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.
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 ObjectName
a spočítá záznamy v každé skupině:
Perf
| where TimeGenerated > ago(1h)
| summarize count() by ObjectName
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
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 bohužel bezvýznamné, protože jsme se spojili s různými čítači výkonu. Pokud chcete, aby výsledky byly smysluplnější, vypočítejte průměr zvlášť pro každou kombinaci CounterName
Computer
a:
Perf
| where TimeGenerated > ago(1h)
| summarize avg(CounterValue) by Computer, CounterName
Výsledky seskupení můžou být také založené na časovém sloupci nebo na jiné souvislé hodnotě. Jednoduše byste ale sumarizovali by TimeGenerated
skupiny pro každý jeden milisekund 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ý graf pro typ grafu:
Tato část obsahuje odpovědi na běžné otázky.
Občas si můžete všimnout duplicitních záznamů v protokolech služby Azure Monitor. Tato duplicita obvykle pochází z jedné z následujících dvou podmínek:
Události
Vytváření aplikací a agentů AI
17. 3. 21 - 21. 3. 10
Připojte se k řadě meetupů a vytvořte škálovatelná řešení AI založená na skutečných případech použití s kolegy vývojáři a odborníky.
ZaregistrovatŠkolení
Modul
Projekt s asistencí – Analýza protokolů ve službě Azure Monitor pomocí KQL - Training
Napište dotazy na protokoly, abyste získali přehled o vaší firmě, provozu IT a výkonu. K extrakci dat protokolů ve službě Azure Monitor Log Analytics použijte dotazovací jazyk Kusto (KQL).