Cvičení – výpis nedávno aktivních virtuálních počítačů, které přestaly odesílat protokoly

Dokončeno

Tady napíšete dotazy KQL pro načtení a transformaci dat z Heartbeat tabulky, abyste získali přehled o stavu počítačů ve vašem prostředí.

1. Nastavení cílů

Vaším prvním cílem analýzy protokolů je zajistit, abyste získali data o všech aktivních virtuálních počítačích ve vaší síti. Chcete identifikovat počítače, které přestanou odesílat data, abyste měli úplný přehled o všech aktivních virtuálních počítačích.

Pokud chcete zjistit, které počítače přestaly odesílat data, potřebujete informace o:

  • Všechny počítače, které nedávno protokolovaly data, ale nezaprotokolovaly data podle očekávání během několika posledních minut.
  • Pro hlubší analýzu je užitečné vědět, který agent virtuálního počítače běží na každém počítači.

2. Posouzení protokolů

Azure Monitor používá agenta Služby Azure Monitor ke shromažďování dat o aktivitách a procesech operačního systému spuštěných uvnitř virtuálních počítačů.

Poznámka:

Některé starší počítače ve vašem prostředí stále používají starší agenty Log Analytics pro Windows a Linux, které Azure Monitor zastaralá.

Agent Azure Monitor a agent Log Analytics odesílají data o stavu virtuálního počítače do Heartbeat tabulky jednou za minutu.

Pojďme spustit jednoduchý take 10 dotaz na Heartbeat tabulku, abychom viděli typ dat, který obsahuje každý z jejích sloupců:

Kliknutím spustíte dotaz v ukázkové prostředí Log Analytics.

Heartbeat
| take 10

Všechny TimeGeneratedsloupce , Computera CategoryOSType sloupce obsahují data, která jsou relevantní pro naši analýzu.

Screenshot that shows the results of a take 10 query on the Heartbeat table with the TimeGenerated, Computer, Category, and OSType columns highlighted.

Teď se podíváme, jak můžeme tato data používat a které operace KQL můžou pomoct extrahovat a transformovat data:

Sloupec Popis Cíl analýzy Související operace KQL
TimeGenerated Označuje, kdy virtuální počítač vygeneroval každý protokol.
  • Identifikujte nedávno aktivní počítače.
  • Vyhledejte poslední vygenerovaný protokol pro každý počítač a zkontrolujte, jestli se v posledních několika minutách vygeneroval.
  • where TimeGenerated >ago(48h)
  • summarize max(TimeGenerated)
  • max_TimeGenerated < ago(5m)
Další informace najdete v tématu where operator, summarize operator, ago() and max() (agregační funkce).
Computer Jedinečný identifikátor počítače.
  • Shrňte výsledky podle počítače.
  • Seskupte počítače podle různých verzí agenta.
  • summarize by Computer
  • summarize ComputersList=make_set(Computer)
Další informace najdete v tématu operátor sumarizace a make_set() (agregační funkce).
Category Typ agenta:
  • Azure Monitor Agent Nebo
  • Direct Agent, který představuje agenty Log Analytics. Agent Log Analytics pro Windows se také nazývá MMA. Agent Log Analytics pro Linux se také nazývá OMS.
Identifikujte agenta spuštěného na počítači. Zjednodušení výsledků a usnadnění další analýzy, jako je filtrování:
  • Přejmenování sloupce na AgentType (AgentType=Category)
  • Direct Agent Změňte hodnotu na MMA počítače s Windows (AgentType= iif(AgentType == "Direct Agent" and OSType =="Windows", "MMA", AgentType).
  • Direct Agent Změňte hodnotu na OMS počítače s Linuxem (AgentType= iif(AgentType == "Direct Agent" and OSType =="Linux", "OMS", AgentType).
Další informace najdete v operátoru iff() a == (equals).
OSType Typ operačního systému spuštěného na virtuálním počítači. Identifikujte typ agenta pro agenty Log Analytics, které se liší pro Windows a Linux. summarize by... OSType
Další informace najdete v operátoru summarize.
Version Číslo verze agenta, který monitoruje virtuální počítač. Identifikujte verzi agenta na každém počítači. Přejmenujte sloupec na AgentVersion (AgentVersion=Version).

3. Napište svůj dotaz.

Napište dotaz se seznamem počítačů, které byly aktivní za posledních 48 hodin, ale během posledních pěti minut se do Heartbeat tabulky nezaprotokolovaly data.

  1. Načtěte všechny protokoly z posledních 48 hodin:

    Kliknutím spustíte dotaz v ukázkové prostředí Log Analytics.

    Heartbeat // The table you’re querying
    | where TimeGenerated >ago(48h) // Time range for the query - in this case, logs generated in the past 48 hours
    

    Sada výsledků tohoto dotazu obsahuje protokoly ze všech počítačů, které za posledních 48 hodin odesílaly data protokolu. Tyto výsledky pravděpodobně obsahují řadu protokolů pro každý aktivní počítač.

    Screenshot that shows the results of a query on the Heartbeat table for all records generated in the past 48 hours.

    Abyste pochopili, které počítače nedávno neodesílaly protokoly, potřebujete jenom poslední protokol, který každý počítač odeslal.

  2. Vyhledejte poslední protokol vygenerovaný jednotlivými počítači a shrňte je podle počítače, typu agenta a operačního systému:

    Kliknutím spustíte dotaz v ukázkové prostředí Log Analytics.

    Heartbeat // The table you’re querying
    | where TimeGenerated >ago(48h) // Time range for the query - in this case, logs generated in the past 48 hours
    | summarize max(TimeGenerated) by Computer, AgentType=Category, OSType // Retrieves the last record generated by each computer and provides information about computer, agent type, and operating system
    

    Teď máte jeden protokol z každého počítače, který protokoloval data za posledních 48 hodin – poslední protokol odeslaný počítačem.

    summarize Na řádku jste přejmenovali Category sloupec na AgentType, který lépe popisuje informace, na které se díváte ve sloupci jako součást této analýzy.

    Screenshot that shows the results of a query for the last log generated by each machine.

  3. Pokud chcete zjistit, které počítače během posledních pěti minut neodeslaly protokoly, vyfiltrujte všechny protokoly vygenerované během posledních pěti minut:

    Kliknutím spustíte dotaz v ukázkové prostředí Log Analytics.

    Heartbeat // The table you’re querying
    | where TimeGenerated >ago(48h) // Time range for the query - in this case, logs generated in the past 48 hours
    | summarize max(TimeGenerated) by Computer, AgentType=Category, OSType // Retrieves the last record generated by each computer and provides information about computer, agent type, and operating system
    | where max_TimeGenerated < ago(5m) // Filters away all records generated in the last five minutes
    

    Sada výsledků tohoto dotazu zahrnuje poslední protokol vygenerovaný všemi počítači, které protokolovaly data za posledních 48 hodin, ale nezahrnuje protokoly vygenerované během posledních pěti minut. Jinými slovy, každý počítač, který protokoloval data za posledních pět minut, není součástí sady výsledků.

    Screenshot that shows the results of a query that filters away all records generated in the last five minutes.

    Teď máte data, která hledáte: seznam všech počítačů, které protokolovaly data za posledních 48 hodin, ale během posledních pěti minut se data nezaprotokolovala podle očekávání. Sada výsledků se skládá ze sady počítačů, které chcete prozkoumat podrobněji.

  4. S výsledky dotazu můžete pracovat, aby byly informace jasněji prezentovány.

    Protokoly můžete například uspořádat podle času vygenerovaného – od nejstaršího po nejnovější – a zjistit, které počítače se nejdelší dobu bez protokolování dat odebraly.

    Hodnota Direct Agent ve sloupci AgentType vám říká, že na počítači běží agent Log Analytics. Vzhledem k tomu, že se agent Log Analytics pro Windows označuje také jako OMS a pro Linux, nazývá se také MMS, přejmenování Direct Agent hodnoty pro MMA počítače s Windows a OMS pro počítače s Linuxem zjednodušuje výsledky a usnadňuje další analýzu, jako je filtrování.

    Kliknutím spustíte dotaz v ukázkové prostředí Log Analytics.

    Heartbeat // The table you’re querying
    | where TimeGenerated >ago(48h) // Time range for the query - in this case, logs generated in the past 48 hours 
    | summarize max(TimeGenerated) by Computer,AgentType=Category, OSType // Retrieves the last record generated by each computer and provides information about computer, agent type, and operating system
    | where max_TimeGenerated < ago(5m) // Filters away all records generated in the last five minutes
    | extend AgentType= iif(AgentType == "Direct Agent" and OSType =="Windows", "MMA", AgentType) // Changes the AgentType value from "Direct Agent" to "MMA" for Windows machines
    | extend AgentType= iif(AgentType == "Direct Agent" and OSType =="Linux", "OMS", AgentType) // Changes the AgentType value from "Direct Agent" to "OMS" for Linux machines
    | order by max_TimeGenerated asc // Sorts results by max_TimeGenerated from oldest to newest
    | project-reorder max_TimeGenerated,Computer,AgentType,OSType  // Reorganizes the order of columns in the result set
    

    Tip

    Slouží max_TimeGenerated ke korelaci posledního prezenčních signálu počítače, který přestal hlásit sestavy s protokoly počítačů nebo jinými událostmi prostředí, ke kterým došlo přibližně ve stejnou dobu. Korelace protokolů tímto způsobem může pomoct při hledání původní příčiny problému, který prošetřujete.

    Screenshot that shows the results of a query that changes the AgentType values to MMA for Windows machines and to OMS for Linux machines.

Výzva: Seskupení počítačů podle agenta monitorování a verze agenta

Pochopení, kteří agenti a verze agentů běží na vašich počítačích, vám můžou pomoct analyzovat původní příčinu problémů a identifikovat počítače, které je potřeba aktualizovat na nového agenta nebo novou verzi agenta.

Můžete si představit několik rychlých úprav, které můžete provést v dotazu, který jste vytvořili výše, abyste získali tyto informace?

Zvažte toto:

  • Jaké další informace potřebujete extrahovat z protokolů?
  • Kterou operaci KQL můžete použít k seskupení počítačů podle verze agenta, na které běží?

Řešení:

  1. Zkopírujte prvních pět řádků z dotazu a přidejte Version sloupec na summarize řádek dotazu a extrahujte informace o verzi agenta:

    Kliknutím spustíte dotaz v ukázkové prostředí Log Analytics.

    Heartbeat // The table you’re querying
    | where TimeGenerated >ago(48h) // Time range for the query - in this case, logs generated in the past 48 hours 
    | summarize max(TimeGenerated) by Computer,AgentType=Category, OSType, Version // Retrieves the last record generated by each computer and provides information about computer, agent type, operating system, and agent version 
    | extend AgentType= iif(AgentType == "Direct Agent" and OSType =="Windows", "MMA", AgentType) // Changes the AgentType value from "Direct Agent" to "MMA" for Windows machines
    | extend AgentType= iif(AgentType == "Direct Agent" and OSType =="Linux", "OMS", AgentType) // Changes the AgentType value from "Direct Agent" to "OMS" for Linux machines
    

    Screenshot that shows the results of the first five lines of the query we've built up in this exercise, with the Version column added to the Summarize line to add agent version information to the results.

  2. Version Přejmenujte sloupec tak, aby AgentVersion byl přehledný, přidejte další summarize řádek pro vyhledání jedinečných kombinací typu agenta, verze agenta a typu operačního systému a pomocí agregační funkce KQL make_set() zobrazíte seznam všech počítačů, na kterých běží každá kombinace typu agenta a verze agenta:

    Kliknutím spustíte dotaz v ukázkové prostředí Log Analytics.

    Heartbeat // The table you’re querying
    | where TimeGenerated >ago(48h) // Time range for the query - in this case, logs generated in the past 48 hours 
    | summarize max(TimeGenerated) by Computer,AgentType=Category, OSType, Version // Retrieves the last record generated by each computer and provides information about computer, agent type, operating system, and agent version 
    | extend AgentType= iif(AgentType == "Direct Agent" and OSType =="Windows", "MMA", AgentType) // Changes the AgentType value from "Direct Agent" to "MMA" for Windows machines
    | extend AgentType= iif(AgentType == "Direct Agent" and OSType =="Linux", "OMS", AgentType) // Changes the AgentType value from "Direct Agent" to "OMS" for Linux machines
    | summarize ComputersList=make_set(Computer) by AgentVersion=Version, AgentType, OSType // Summarizes the result set by unique combination of agent type, agent version, and operating system, and lists the set of all machines running the specific agent version
    

    Teď máte data, která hledáte: seznam jedinečných kombinací typu agenta a verze agenta a sady všech nedávno aktivních počítačů, na kterých běží konkrétní verze každého agenta.

    Screenshot that shows the results of a query that creates a list of all machines running each unique combination of agent type, agent version, and operating system.