Übung: Auflisten kürzlich aktiver virtueller Computer, die das Senden von Protokollen beendet haben
Hier schreiben Sie KQL-Abfragen zum Abrufen und Transformieren von Daten aus der Tabelle Heartbeat
, um Erkenntnisse über den Status der Computer in Ihrer Umgebung zu erhalten.
1. Festlegen von Zielen
Ihr erstes Ziel bei der Protokollanalyse ist es, sicherzustellen, dass Sie Daten über alle aktiven virtuellen Computer in Ihrem Netzwerk erhalten. Sie möchten Computer identifizieren, die keine Daten mehr senden, um sicherzustellen, dass Sie einen vollständigen Überblick über alle aktiven virtuellen Computer haben.
Sie benötigen folgende Informationen, um festzustellen, welche Computer keine Daten mehr senden:
- Alle Computer, die kürzlich Daten protokolliert haben, die aber in den letzten Minuten nicht wie erwartet Daten protokolliert haben.
- Für eine genauere Analyse ist es nützlich zu wissen, welcher Agent für virtuelle Computer auf den einzelnen Computern ausgeführt wird.
2. Auswerten von Protokollen
Azure Monitor verwendet den Azure Monitor-Agent, um Daten über Aktivitäten und Betriebssystemprozesse zu sammeln, die auf virtuellen Computern ausgeführt werden.
Hinweis
Einige der älteren Computer in Ihrer Umgebung verwenden immer noch die alten Windows- und Linux-Agents von Log Analytics, die von Azure Monitor nicht mehr unterstützt werden.
Der Azure Monitor-Agent und Log Analytics-Agent senden die Integritätsdaten des virtuellen Computers einmal pro Minute an die Tabelle Heartbeat
.
Lassen Sie uns eine einfache take 10
-Abfrage für die Tabelle Heartbeat
ausführen, um zu prüfen, welche Art von Daten jede ihrer Spalten enthält:
Klicken Sie hier, um die Abfrage in der Log Analytics-Demoumgebung auszuführen
Heartbeat
| take 10
Die Spalten TimeGenerated
, Computer
, Category
und OSType
enthalten alle Daten, die für unsere Analyse relevant sind.
Lassen Sie uns jetzt prüfen, wie wir diese Daten nutzen können und welche KQL-Vorgänge bei der Extraktion und Transformation der Daten helfen können:
Column | BESCHREIBUNG | Analyseziel | Zugehörige KQL-Vorgänge |
---|---|---|---|
TimeGenerated |
Gibt an, wann der virtuelle Computer die einzelnen Protokolle generiert hat. |
|
|
Computer |
Eindeutiger Bezeichner des Computers. |
|
|
Category |
Der Agent-Typ:
|
Identifizieren Sie den Agent, der auf dem Computer ausgeführt wird. | Zur Vereinfachung der Ergebnisse und zur Erleichterung der weiteren Analyse, z. B. durch Filterung, gehen Sie wie folgt vor:
|
OSType |
Der Typ des Betriebssystems, das auf dem virtuellen Computer ausgeführt wird. | Identifizieren Sie den Agent-Typ für Log Analytics-Agents, die für Windows und Linux unterschiedlich sind. | summarize by... OSType Weitere Informationen finden Sie unter SUMMARIZE-Operator. |
Version |
Die Versionsnummer des Agents, der den virtuellen Computer überwacht. | Ermitteln Sie die Version des Agents auf jedem Computer. | Benennen Sie die Spalte in AgentVersion (AgentVersion=Version ) um. |
3. Schreiben der Abfrage
Schreiben Sie eine Abfrage, die die Computer auflistet, die in den letzten 48 Stunden aktiv waren, aber in den letzten fünf Minuten keine Daten in der Tabelle Heartbeat
protokolliert haben.
Abrufen aller Protokolle aus den letzten 48 Stunden:
Klicken Sie hier, um die Abfrage in der Log Analytics-Demoumgebung auszuführen
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
Das Resultset dieser Abfrage enthält Protokolle von allen Computern, die in den letzten 48 Stunden Protokolldaten gesendet haben. Diese Ergebnisse enthalten wahrscheinlich zahlreiche Protokolle für jeden aktiven Computer.
Um zu verstehen, welche Computer in letzter Zeit keine Protokolle gesendet haben, benötigen Sie nur das letzte Protokoll, das jeder Computer gesendet hat.
Finden Sie das letzte von jedem Computer generierte Protokoll und fassen Sie es nach Computer, Agent-Typ und Betriebssystem zusammen:
Klicken Sie hier, um die Abfrage in der Log Analytics-Demoumgebung auszuführen
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
Sie verfügen jetzt über ein Protokoll von jedem Computer, der in den letzten 48 Stunden Daten protokolliert hat – das letzte Protokoll, das jeder Computer gesendet hat.
In der Zeile
summarize
haben Sie die SpalteCategory
inAgentType
umbenannt, was die Informationen, die Sie im Rahmen dieser Analyse in der Spalte betrachten, besser beschreibt.Um zu sehen, welche Computer in den letzten fünf Minuten keine Protokolle gesendet haben, filtern Sie alle Protokolle heraus, die in den letzten fünf Minuten generiert wurden:
Klicken Sie hier, um die Abfrage in der Log Analytics-Demoumgebung auszuführen
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
Das Resultset dieser Abfrage enthält das letzte Protokoll, das von allen Computern generiert wurde, die in den letzten 48 Stunden Daten protokolliert haben, jedoch nicht die Protokolle, die in den letzten fünf Minuten generiert wurden. Mit anderen Worten: Jeder Computer, der in den letzten fünf Minuten Daten protokolliert hat, ist nicht im Resultset enthalten.
Jetzt haben Sie die Daten, nach denen Sie suchen: eine Liste aller Computer, die in den letzten 48 Stunden Daten protokolliert haben, die aber in den letzten fünf Minuten nicht wie erwartet Daten protokolliert haben. Das Resultset besteht aus der Menge der Computer, die Sie weiter untersuchen möchten.
Manipulieren Sie die Abfrageergebnisse, um die Informationen übersichtlicher darzustellen.
Sie können z. B. die Protokolle nach der generierten Zeit ordnen – vom ältesten bis zum neuesten – um zu sehen, welche Computer am längsten keine Daten mehr protokolliert haben.
Der
Direct Agent
-Wert in der Spalte „AgentType“ sagt Ihnen, dass der Log Analytics-Agent auf dem Computer ausgeführt wird. Da der Log Analytics-Agent für Windows auch als OMS und für Linux als MMS bezeichnet wird, vereinfacht die Umbenennung des WertsDirect Agent
inMMA
für Windows-Computer und inOMS
für Linux-Computer die Ergebnisse und erleichtert die weitere Analyse, z. B. das Filtern.Klicken Sie hier, um die Abfrage in der Log Analytics-Demoumgebung auszuführen
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
Tipp
Verwenden Sie
max_TimeGenerated
, um den letzten Heartbeat des Computers, der nicht mehr meldet, mit Computerprotokollen oder anderen Umgebungsereignissen zu korrelieren, die ungefähr zur gleichen Zeit aufgetreten sind. Die Korrelation von Protokollen auf diese Weise kann Ihnen helfen, die Ursache des Problems zu finden, das Sie untersuchen.
Herausforderung: Gruppieren von Computern nach Überwachungs-Agent und Agent-Version
Wenn Sie wissen, welche Agents und Agent-Versionen auf Ihren Computern ausgeführt werden, können Sie die Ursache von Problemen analysieren und feststellen, welche Computer Sie auf einen neuen Agent oder eine neue Agent-Version aktualisieren müssen.
Fallen Ihnen ein paar schnelle Änderungen an der Abfrage ein, die Sie oben entwickelt haben, um diese Informationen zu erhalten?
Beachten Sie Folgendes:
- Welche zusätzlichen Informationen müssen Sie aus Ihren Protokollen extrahieren?
- Welcher KQL-Vorgang kann verwendet werden, um Computer nach der Agent-Version zu gruppieren, die sie ausführen?
Lösung:
Kopieren Sie die ersten fünf Zeilen aus der Abfrage, und fügen Sie die Spalte
Version
zur Zeilesummarize
der Abfrage hinzu, um Informationen zur Agent-Version zu extrahieren:Klicken Sie hier, um die Abfrage in der Log Analytics-Demoumgebung auszuführen
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
Benennen Sie die Spalte
Version
der Übersichtlichkeit halber inAgentVersion
um, fügen Sie eine weitere Zeilesummarize
hinzu, um eindeutige Kombinationen von Agent-Typ, Agent-Version und Betriebssystemtyp zu finden, und verwenden Sie die KQL-Aggregatfunktionmake_set()
, um alle Computer aufzulisten, die jede Kombination von Agent-Typ und Agent-Version ausführen:Klicken Sie hier, um die Abfrage in der Log Analytics-Demoumgebung auszuführen
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
Sie haben jetzt die Daten, nach denen Sie suchen: eine Liste eindeutiger Kombinationen von Agent-Typ und Agent-Version und die Menge aller kürzlich aktiven Computer, auf denen eine bestimmte Version jedes Agents ausgeführt wird.