Oefening: lijst met onlangs actieve virtuele machines die het verzenden van logboeken hebben gestopt

Voltooid

Hier schrijft u KQL-query's om gegevens op te halen en te transformeren uit de Heartbeat tabel om inzicht te krijgen in de status van machines in uw omgeving.

1. Doelstellingen instellen

Het eerste doel van logboekanalyse is ervoor te zorgen dat u gegevens over alle actieve virtuele machines in uw netwerk krijgt. U wilt machines identificeren die stoppen met het verzenden van gegevens om ervoor te zorgen dat u alle actieve virtuele machines volledig zichtbaar hebt.

Als u wilt bepalen welke machines geen gegevens meer hebben verzonden, hebt u informatie nodig over:

  • Alle computers die onlangs gegevens hebben geregistreerd, maar die in de afgelopen minuten geen gegevens hebben geregistreerd zoals verwacht.
  • Voor een diepere analyse is het handig om te weten welke virtuele-machineagent op elke machine wordt uitgevoerd.

2. Logboeken evalueren

Azure Monitor maakt gebruik van Azure Monitor Agent voor het verzamelen van gegevens over activiteiten en besturingssysteemprocessen die worden uitgevoerd binnen virtuele machines.

Notitie

Sommige van de oudere machines in uw omgeving gebruiken nog steeds de verouderde Log Analytics Windows- en Linux-agents, die Azure Monitor afschatte.

Azure Monitor Agent en Log Analytics Agent verzenden statusgegevens van virtuele machines één keer per minuut naar de Heartbeat tabel.

Laten we een eenvoudige take 10 query uitvoeren in de Heartbeat tabel om het type gegevens te zien dat elk van de kolommen bevat:

Klik om query's uit te voeren in de Log Analytics-demoomgeving

Heartbeat
| take 10

De kolommen TimeGenerated, Computer, Categoryen OSType bevatten allemaal gegevens die relevant zijn voor onze analyse.

Schermopname van de resultaten van een take 10-query in de Heartbeat-tabel met de kolommen TimeGenerated, Computer, Category en OSType gemarkeerd.

Laten we nu evalueren hoe we deze gegevens kunnen gebruiken en welke KQL-bewerkingen kunnen helpen bij het extraheren en transformeren van de gegevens:

Kolom Beschrijving Analysedoel Gerelateerde KQL-bewerkingen
TimeGenerated Geeft aan wanneer de virtuele machine elk logboek heeft gegenereerd.
  • Identificeer onlangs actieve machines.
  • Zoek het laatste logboek dat voor elke machine is gegenereerd en controleer of het in de afgelopen minuten is gegenereerd.
  • where TimeGenerated >ago(48h)
  • summarize max(TimeGenerated)
  • max_TimeGenerated < ago(5m)
Voor meer informatie, zie waar operator, operatorsamenvatten, ago(), en max() (aggregatiefunctie).
Computer Unieke id van de machine.
  • Resultaten samenvatten per computer.
  • Groepeer machines op unieke agentversies.
  • summarize by Computer
  • summarize ComputersList=make_set(Computer)
Zie operator samenvatten en make_set() (aggregatiefunctie)voor meer informatie.
Category Het agenttype:
  • Azure Monitor Agent of
  • Direct Agent, die de Log Analytics-agents vertegenwoordigt. De Log Analytics-agent voor Windows wordt ook wel MMA genoemd. De Log Analytics-agent voor Linux wordt ook wel OMS genoemd.
Identificeer de agent die op de machine draait. Om de resultaten te vereenvoudigen en verdere analyse mogelijk te maken, zoals filteren:
  • De naam van de kolom wijzigen in AgentType (AgentType=Category)
  • Wijzig de Direct Agent-waarde in MMA voor Windows-computers (AgentType= iif(AgentType == "Direct Agent" and OSType =="Windows", "MMA", AgentType).
  • Wijzig de Direct Agent-waarde in OMS voor Linux-machines (AgentType= iif(AgentType == "Direct Agent" and OSType =="Linux", "OMS", AgentType).
Zie iff() en == (is gelijk aan) operatorvoor meer informatie.
OSType Het type besturingssysteem dat wordt uitgevoerd op de virtuele machine. Identificeer het agenttype voor Log Analytics-agents, die verschillen voor Windows en Linux. summarize by... OSType
Zie samenvatten operatorvoor meer informatie.
Version Het versienummer van de agent die de virtuele machine bewaakt. Identificeer de agentversie op elke computer. Wijzig de naam van de kolom in AgentVersion (AgentVersion=Version).

3. Schrijf uw query

Schrijf een query waarin de machines worden vermeld die de afgelopen 48 uur actief waren, maar die in de afgelopen vijf minuten geen gegevens hebben geregistreerd bij de Heartbeat tabel.

  1. Alle logboeken ophalen uit de afgelopen 48 uur:

    Klik om query's uit te voeren in de Log Analytics-demoomgeving

    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
    

    De resultatenset van deze query bevat logboeken van alle machines die in de afgelopen 48 uur logboekgegevens hebben verzonden. Deze resultaten bevatten waarschijnlijk talloze logboeken voor elke actieve machine.

    Schermopname met de resultaten van een query in de Heartbeat-tabel voor alle records die in de afgelopen 48 uur zijn gegenereerd.

    Als u wilt weten welke machines niet onlangs logboeken hebben verzonden, hebt u alleen het laatste logboek nodig dat elke machine heeft verzonden.

  2. Zoek het laatste logboek dat door elke computer is gegenereerd en samenvatten op computer, agenttype en besturingssysteem:

    Klik om query's uit te voeren in de Log Analytics-demoomgeving

    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
    

    U hebt nu één logboek van elke computer die in de afgelopen 48 uur gegevens heeft geregistreerd: het laatste logboek dat elke machine heeft verzonden.

    In de summarize regel hebt u de naam van de kolom Category gewijzigd in AgentType, waarin de informatie die u in de kolom bekijkt, beter wordt beschreven als onderdeel van deze analyse.

    Schermopname met de resultaten van een query voor het laatste logboek dat door elke computer is gegenereerd.

  3. Als u wilt zien welke machines de afgelopen vijf minuten geen logboeken hebben verzonden, filtert u alle logboeken weg die in de afgelopen vijf minuten zijn gegenereerd:

    Klik om query's uit te voeren in de Log Analytics-demoomgeving

    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
    

    De resultatenset van deze query bevat het laatste logboek dat is gegenereerd door alle computers die in de afgelopen 48 uur gegevens hebben geregistreerd, maar bevat geen logboeken die in de afgelopen vijf minuten zijn gegenereerd. Met andere woorden, elke computer die gegevens in de afgelopen vijf minuten heeft geregistreerd, wordt niet opgenomen in de resultatenset.

    Schermopname met de resultaten van een query waarmee alle records die in de afgelopen vijf minuten zijn gegenereerd, worden gefilterd.

    U hebt nu de gegevens die u zoekt: een lijst met alle computers die de afgelopen 48 uur gegevens hebben geregistreerd, maar die in de afgelopen vijf minuten geen logboekgegevens hebben geregistreerd zoals verwacht. De resultatenset bestaat uit de set computers die u verder wilt onderzoeken.

  4. Bewerk de queryresultaten om de informatie duidelijker weer te geven.

    U kunt de logboeken bijvoorbeeld ordenen op tijd die is gegenereerd , van de oudste naar de nieuwste - om te zien welke computers het langst zijn gegaan zonder logboekgegevens te registreren.

    De Direct Agent waarde in de kolom AgentType geeft aan dat de Log Analytics-agent wordt uitgevoerd op de computer. Omdat de Log Analytics-agent voor Windows ook WEL OMS wordt genoemd en voor Linux wordt de agent ook wel MMS genoemd, waarbij de naam van de Direct Agent waarde wordt gewijzigd in MMA voor Windows-machines en OMS voor Linux-machines vereenvoudigt de resultaten en vereenvoudigt verdere analyse, zoals filteren.

    Klik om query's uit te voeren in de Log Analytics-demoomgeving

    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
    

    Fooi

    Gebruik max_TimeGenerated om de laatste heartbeat van de machine te correleren die is gestopt met het rapporteren met machinelogboeken of andere omgevingsgebeurtenissen die zich rond dezelfde tijd hebben voorgedaan. Het correleren van logboeken op deze manier kan helpen bij het vinden van de hoofdoorzaak van het probleem dat u onderzoekt.

    Schermopname van de resultaten van een query waarmee de AgentType-waarden worden gewijzigd in MMA voor Windows-machines en in OMS voor Linux-machines.

Uitdaging: Machines groeperen op monitoringsagent en agentversie

Als u weet welke agents en agentversies op uw computers worden uitgevoerd, kunt u de hoofdoorzaak van problemen analyseren en bepalen welke machines u moet bijwerken naar een nieuwe agent of nieuwe agentversie.

Kunt u een aantal snelle aanpassingen bedenken die u kunt aanbrengen in de query die u hierboven hebt ontwikkeld om deze informatie te verkrijgen?

Houd rekening met het volgende:

  • Welke aanvullende informatie moet u uit uw logboeken extraheren?
  • Welke KQL-bewerking kunt u gebruiken om machines te groeperen op basis van de agentversie die ze uitvoeren?

oplossing:

  1. Kopieer de eerste vijf regels uit de query en voeg de kolom Version toe aan de summarize regel van de query om agentversiegegevens op te halen:

    Klik om query's uit te voeren in de Log Analytics-demoomgeving

    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
    

    Schermopname met de resultaten van de eerste vijf regels van de query die we in deze oefening hebben opgebouwd, met de kolom Versie toegevoegd aan de regel Samenvatten om agentversiegegevens toe te voegen aan de resultaten.

  2. Wijzig de naam van de kolom Version in AgentVersion voor duidelijkheid, voeg nog een summarize regel toe om unieke combinaties van agenttype, agentversie en besturingssysteemtype te vinden en gebruik de statistische functie KQL make_set() om alle computers weer te geven waarop elke combinatie van agenttype en agentversie wordt uitgevoerd:

    Klik om query's uit te voeren in de Log Analytics-demoomgeving

    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
    

    U hebt nu de gegevens die u zoekt: een lijst met unieke combinaties van agenttype en agentversie en de set van alle recent actieve machines waarop een specifieke versie van elke agent wordt uitgevoerd.

    Schermopname van de resultaten van een query waarmee een lijst wordt gemaakt met alle computers waarop elke unieke combinatie van agenttype, agentversie en besturingssysteem wordt uitgevoerd.