Övning – Lista nyligen aktiva virtuella datorer som slutade skicka loggar

Slutförd

Här skriver du KQL-frågor för att hämta och transformera data från Heartbeat tabellen för att få insikter om status för datorer i din miljö.

1. Ange mål

Ditt första logganalysmål är att se till att du får data om alla aktiva virtuella datorer i nätverket. Du vill identifiera datorer som slutar skicka data för att säkerställa att du har fullständig synlighet för alla aktiva virtuella datorer.

För att avgöra vilka datorer som har slutat skicka data behöver du information om:

  • Alla datorer som nyligen har loggat data, men som inte har loggat data som förväntat under de senaste minuterna.
  • För djupare analys är det användbart att veta vilken virtuell datoragent som körs på varje dator.

2. Utvärdera loggar

Azure Monitor använder Azure Monitor Agent för att samla in data om aktiviteter och operativsystemprocesser som körs på virtuella datorer.

Kommentar

Vissa av de äldre datorerna i din miljö använder fortfarande äldre Log Analytics Windows- och Linux-agenter, som Azure Monitor är inaktuella för.

Azure Monitor-agenten och Log Analytics-agenten Heartbeat skickar hälsodata för virtuella datorer till tabellen en gång i minuten.

Nu ska vi köra en enkel take 10 fråga i Heartbeat tabellen för att se vilken typ av data var och en av dess kolumner innehåller:

Klicka för att köra frågan i Log Analytics-demomiljön

Heartbeat
| take 10

Kolumnerna TimeGenerated, Computer, Categoryoch OSType har alla data som är relevanta för vår analys.

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

Nu ska vi utvärdera hur vi kan använda dessa data och vilka KQL-åtgärder som kan hjälpa till att extrahera och transformera data:

Kolumn beskrivning Analysmål Relaterade KQL-åtgärder
TimeGenerated Anger när den virtuella datorn genererade varje logg.
  • Identifiera nyligen aktiva datorer.
  • Leta reda på den senaste loggen som genererats för varje dator och kontrollera om den har genererats under de senaste minuterna.
  • where TimeGenerated >ago(48h)
  • summarize max(TimeGenerated)
  • max_TimeGenerated < ago(5m)
Mer information finns i var operator, sammanfatta operator, ago()och max() (sammansättningsfunktion).
Computer Unik identifierare för datorn.
  • Sammanfatta resultat per dator.
  • Gruppera datorer efter distinkta agentversioner.
  • summarize by Computer
  • summarize ComputersList=make_set(Computer)
Mer information finns i sammanfatta operatorn och make_set() (sammansättningsfunktionen).
Category Agenttypen:
  • Azure Monitor Agent Eller
  • Direct Agent, som representerar Log Analytics-agenterna. Log Analytics-agenten för Windows kallas även MMA. Log Analytics-agenten för Linux kallas även OMS.
Identifiera agenten som körs på datorn. För att förenkla resultaten och underlätta ytterligare analys, till exempel filtrering:
  • Byt namn på kolumnen till AgentType (AgentType=Category)
  • Ändra värdet Direct Agent till MMA för Windows-datorer (AgentType= iif(AgentType == "Direct Agent" and OSType =="Windows", "MMA", AgentType).
  • Ändra värdet Direct Agent till OMS för Linux-datorer (AgentType= iif(AgentType == "Direct Agent" and OSType =="Linux", "OMS", AgentType).
Mer information finns i operatorn iff() och == (lika med).
OSType Vilken typ av operativsystem som körs på den virtuella datorn. Identifiera agenttyp för Log Analytics-agenter som skiljer sig åt för Windows och Linux. summarize by... OSType
Mer information finns i sammanfatta operatorn.
Version Versionsnumret för agenten som övervakar den virtuella datorn. Identifiera agentversionen på varje dator. Byt namn på kolumnen till AgentVersion (AgentVersion=Version).

3. Skriv din fråga

Skriv en fråga som visar de datorer som har varit aktiva under de senaste 48 timmarna, men som inte har loggat data Heartbeat i tabellen under de senaste fem minuterna.

  1. Hämta alla loggar från de senaste 48 timmarna:

    Klicka för att köra frågan i Log Analytics-demomiljön

    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
    

    Resultatuppsättningen för den här frågan innehåller loggar från alla datorer som har skickat loggdata under de senaste 48 timmarna. Dessa resultat innehåller sannolikt många loggar för varje aktiv dator.

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

    För att förstå vilka datorer som inte nyligen har skickat loggar behöver du bara den senaste loggen som varje dator har skickat.

  2. Hitta den senaste loggen som genererades av varje dator och sammanfatta efter dator, agenttyp och operativsystem:

    Klicka för att köra frågan i Log Analytics-demomiljön

    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
    

    Nu har du en logg från varje dator som loggat data under de senaste 48 timmarna – den senaste loggen som varje dator skickade.

    På raden summarize har du bytt Category namn på kolumnen till AgentType, som bättre beskriver informationen du tittar på i kolumnen som en del av den här analysen.

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

  3. Om du vill se vilka datorer som inte har skickat loggar under de senaste fem minuterna filtrerar du bort alla loggar som genererats under de senaste fem minuterna:

    Klicka för att köra frågan i Log Analytics-demomiljön

    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
    

    Resultatuppsättningen för den här frågan innehåller den senaste loggen som genererats av alla datorer som loggat data under de senaste 48 timmarna, men som inte innehåller loggar som genererats under de senaste fem minuterna. Med andra ord ingår inte datorer som loggat data under de senaste fem minuterna i resultatuppsättningen.

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

    Nu har du de data du letar efter: en lista över alla datorer som loggat data under de senaste 48 timmarna, men som inte har loggat data som förväntat under de senaste fem minuterna. Resultatuppsättningen består av den uppsättning datorer som du vill undersöka ytterligare.

  4. Ändra frågeresultatet så att informationen visas tydligare.

    Du kan till exempel organisera loggarna efter tid som genererats – från den äldsta till den senaste – för att se vilka datorer som har gått längst utan att logga data.

    Värdet Direct Agent i kolumnen AgentType anger att Log Analytics-agenten körs på datorn. Eftersom Log Analytics-agenten för Windows även kallas OMS och för Linux kallas agenten även FÖR MMS, vilket innebär att byta namn på Direct Agent värdet till MMA för Windows-datorer och OMS Linux-datorer förenklar resultatet och underlättar ytterligare analys, till exempel filtrering.

    Klicka för att köra frågan i Log Analytics-demomiljön

    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
    

    Dricks

    Använd max_TimeGenerated för att korrelera det sista pulsslaget för den dator som slutade rapportera med datorloggar eller andra miljöhändelser som inträffade ungefär samtidigt. Korrelering av loggar på det här sättet kan hjälpa dig att hitta rotorsaken till det problem som du undersöker.

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

Utmaning: Gruppera datorer efter övervakningsagent och agentversion

Att förstå vilka agenter och agentversioner som körs på dina datorer kan hjälpa dig att analysera rotorsaken till problem och identifiera vilka datorer du behöver uppdatera till en ny agent eller ny agentversion.

Kan du tänka dig ett par snabba justeringar som du kan göra i frågan du utvecklade ovan för att få den här informationen?

Tänk på detta:

  • Vilken ytterligare information behöver du extrahera från loggarna?
  • Vilken KQL-åtgärd kan du använda för att gruppera datorer efter den agentversion som de kör?

Lösning:

  1. Kopiera de första fem raderna från frågan och lägg till Version kolumnen på frågeraden summarize för att extrahera agentversionsinformation:

    Klicka för att köra frågan i Log Analytics-demomiljön

    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. Byt namn på kolumnen till för tydlighetens Version skull, lägg till en annan summarize rad för att hitta unika kombinationer av agenttyp, agentversion och operativsystemtyp och använd KQL-mängdfunktionen make_set() för att visa en lista över alla datorer som kör varje kombination av agenttyp och agentversion:AgentVersion

    Klicka för att köra frågan i Log Analytics-demomiljön

    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
    

    Nu har du de data du letar efter: en lista över unika kombinationer av agenttyp och agentversion och uppsättningen med alla nyligen aktiva datorer som kör en specifik version av varje agent.

    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.