Övning – Lista nyligen aktiva virtuella datorer som slutade skicka loggar
Här skriver du KQL-frågor för att hämta och transformera data från tabellen Heartbeat
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.
Not
Vissa av de äldre datorerna i din miljö använder fortfarande föråldrade Log Analytics Windows- och Linux-agenter, som Azure Monitor håller på att avveckla.
Azure Monitor-agenten och Log Analytics-agenten skickar hälsodata för virtuella datorer till Heartbeat
-tabellen en gång i minuten.
Nu ska vi köra en enkel take 10
fråga i tabellen Heartbeat
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
, Category
och OSType
har alla data som är relevanta för vår analys.
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:
Spalt | Beskrivning | Analysmål | Relaterade KQL-åtgärder |
---|---|---|---|
TimeGenerated |
Anger när den virtuella datorn genererade varje logg. |
|
|
Computer |
Unik identifierare för datorn. |
|
|
Category |
Agenttypen:
|
Identifiera agenten som körs på datorn. | För att förenkla resultaten och underlätta ytterligare analys, till exempel filtrering:
|
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 till tabellen Heartbeat
under de senaste fem minuterna.
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.
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.
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 namn på kolumnenCategory
tillAgentType
, som bättre beskriver informationen du tittar på i kolumnen som en del av den här analysen.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.
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.
Ä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 agenten för Linux också kallas MMS, gör en namnändring avDirect Agent
-värdet tillMMA
för Windows-datorer ochOMS
för Linux-datorer resultaten enklare och underlättar vidare analys, som 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
Tips
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.
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:
Kopiera de första fem raderna från frågan och lägg till kolumnen
Version
tillsummarize
raden i frågan 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
Byt namn på kolumnen
Version
tillAgentVersion
för tydlighetens skull, lägg till ytterligare ensummarize
rad för att hitta unika kombinationer av agenttyp, agentversion och operativsystemtyp och använd KQL-make_set()
mängdfunktion för att lista alla datorer som kör varje kombination av agenttyp och 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.