Übung: Auflisten kürzlich aktiver virtueller Computer, die das Senden von Protokollen beendet haben

Abgeschlossen

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.

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

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.
  • Identifizieren Sie kürzlich aktive Computer.
  • Suchen Sie das letzte für jeden Computer generierte Protokoll und prüfen Sie, ob es in den letzten Minuten generiert wurde.
  • where TimeGenerated >ago(48h)
  • summarize max(TimeGenerated)
  • max_TimeGenerated < ago(5m)
Weitere Informationen finden Sie unter where-Operator, summarize-Operator, ago() und max() (Aggregationsfunktion).
Computer Eindeutiger Bezeichner des Computers.
  • Zusammenfassen von Ergebnissen nach Computer.
  • Gruppieren von Computern nach unterschiedlichen Agent-Versionen.
  • summarize by Computer
  • summarize ComputersList=make_set(Computer)
Weitere Informationen finden Sie unter summarize-Operator und make_set() (Aggregationsfunktion).
Category Der Agent-Typ:
  • Azure Monitor Agent oder
  • Direct Agent, der die Log Analytics-Agents darstellt. Der Log Analytics-Agent für Windows wird auch MMA genannt. Der Log Analytics-Agent für Linux wird auch als OMS bezeichnet.
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:
  • Benennen Sie die Spalte in AgentType (AgentType=Category) um.
  • Ändern Sie den Direct Agent-Wert in MMA für Windows-Computer (AgentType= iif(AgentType == "Direct Agent" and OSType =="Windows", "MMA", AgentType)).
  • Ändern Sie den Direct Agent-Wert in OMS für Linux-Computer (AgentType= iif(AgentType == "Direct Agent" and OSType =="Linux", "OMS", AgentType).
Weitere Informationen finden Sie unter iff() und ==-Operator (Ist gleich).
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.

  1. 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.

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

    Um zu verstehen, welche Computer in letzter Zeit keine Protokolle gesendet haben, benötigen Sie nur das letzte Protokoll, das jeder Computer gesendet hat.

  2. 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 Spalte Category in AgentType umbenannt, was die Informationen, die Sie im Rahmen dieser Analyse in der Spalte betrachten, besser beschreibt.

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

  3. 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.

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

    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.

  4. 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 Werts Direct Agent in MMA für Windows-Computer und in OMS 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.

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

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:

  1. Kopieren Sie die ersten fünf Zeilen aus der Abfrage, und fügen Sie die Spalte Version zur Zeile summarize 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
    

    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. Benennen Sie die Spalte Version der Übersichtlichkeit halber in AgentVersion um, fügen Sie eine weitere Zeile summarize hinzu, um eindeutige Kombinationen von Agent-Typ, Agent-Version und Betriebssystemtyp zu finden, und verwenden Sie die KQL-Aggregatfunktion make_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.

    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.