Oefening: lijst met onlangs actieve virtuele machines die het verzenden van logboeken hebben gestopt
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
, Category
en OSType
bevatten allemaal gegevens die relevant zijn voor onze analyse.
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. |
|
|
Computer |
Unieke id van de machine. |
|
|
Category |
Het agenttype:
|
Identificeer de agent die op de machine draait. | Om de resultaten te vereenvoudigen en verdere analyse mogelijk te maken, zoals filteren:
|
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.
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.
Als u wilt weten welke machines niet onlangs logboeken hebben verzonden, hebt u alleen het laatste logboek nodig dat elke machine heeft verzonden.
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 kolomCategory
gewijzigd inAgentType
, waarin de informatie die u in de kolom bekijkt, beter wordt beschreven als onderdeel van deze analyse.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.
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.
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 deDirect Agent
waarde wordt gewijzigd inMMA
voor Windows-machines enOMS
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.
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:
Kopieer de eerste vijf regels uit de query en voeg de kolom
Version
toe aan desummarize
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
Wijzig de naam van de kolom
Version
inAgentVersion
voor duidelijkheid, voeg nog eensummarize
regel toe om unieke combinaties van agenttype, agentversie en besturingssysteemtype te vinden en gebruik de statistische functie KQLmake_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.