Ćwiczenie — wyświetlanie listy ostatnio aktywnych maszyn wirtualnych, które przestały wysyłać dzienniki
W tym miejscu napiszesz zapytania KQL, aby pobrać i przekształcić dane z Heartbeat
tabeli w celu uzyskania szczegółowych informacji na temat stanu maszyn w środowisku.
1. Ustawianie celów
Pierwszym celem analizy dzienników jest upewnienie się, że uzyskujesz dane dotyczące wszystkich aktywnych maszyn wirtualnych w sieci. Chcesz zidentyfikować maszyny, które przestają wysyłać dane, aby zapewnić pełną widoczność wszystkich aktywnych maszyn wirtualnych.
Aby określić, które maszyny przestały wysyłać dane, potrzebne są następujące informacje:
- Wszystkie maszyny, które niedawno zarejestrowały dane, ale nie zarejestrowały danych zgodnie z oczekiwaniami w ciągu ostatnich kilku minut.
- W celu dokładniejszej analizy warto wiedzieć, który agent maszyny wirtualnej działa na każdej maszynie.
2. Ocena dzienników
Usługa Azure Monitor używa agenta usługi Azure Monitor do zbierania danych dotyczących działań i procesów systemu operacyjnego działających wewnątrz maszyn wirtualnych.
Uwaga
Niektóre starsze maszyny w twoim środowisku nadal używają starszych agentów usługi Log Analytics dla systemów Windows i Linux, których usługa Azure Monitor jest przestarzała.
Agent usługi Azure Monitor i agent usługi Log Analytics wysyłają dane kondycji maszyny wirtualnej do Heartbeat
tabeli raz na minutę.
Uruchommy proste take 10
zapytanie w Heartbeat
tabeli, aby zobaczyć typ danych przechowywanych w poszczególnych kolumnach:
Kliknij, aby uruchomić zapytanie w środowisku demonstracyjnym usługi Log Analytics
Heartbeat
| take 10
Kolumny TimeGenerated
, Computer
, Category
i OSType
mają wszystkie dane, które są istotne dla naszej analizy.
Teraz oceńmy, jak możemy używać tych danych i które operacje KQL mogą pomóc w wyodrębnieniu i przekształceniu danych:
Kolumna | opis | Cel analizy | Powiązane operacje KQL |
---|---|---|---|
TimeGenerated |
Wskazuje, kiedy maszyna wirtualna wygenerowała każdy dziennik. |
|
|
Computer |
Unikatowy identyfikator maszyny. |
|
|
Category |
Typ agenta:
|
Zidentyfikuj agenta uruchomionego na maszynie. | Aby uprościć wyniki i ułatwić dalszą analizę, taką jak filtrowanie:
|
OSType |
Typ systemu operacyjnego uruchomionego na maszynie wirtualnej. | Zidentyfikuj typ agenta dla agentów usługi Log Analytics, które są różne dla systemów Windows i Linux. | summarize by... OSType Aby uzyskać więcej informacji, zobacz operator podsumowania. |
Version |
Numer wersji agenta monitorujący maszynę wirtualną. | Zidentyfikuj wersję agenta na każdej maszynie. | Zmień nazwę kolumny na AgentVersion (AgentVersion=Version ). |
3. Napisz zapytanie
Napisz zapytanie zawierające listę maszyn, które były aktywne w ciągu ostatnich 48 godzin, ale nie zarejestrowało danych w Heartbeat
tabeli w ciągu ostatnich pięciu minut.
Pobierz wszystkie dzienniki z ostatnich 48 godzin:
Kliknij, aby uruchomić zapytanie w środowisku demonstracyjnym usługi Log Analytics
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
Zestaw wyników tego zapytania zawiera dzienniki ze wszystkich maszyn, które wysyłały dane dziennika w ciągu ostatnich 48 godzin. Wyniki te prawdopodobnie obejmują wiele dzienników dla każdej aktywnej maszyny.
Aby dowiedzieć się, które maszyny nie wysłały ostatnio dzienników, wystarczy tylko ostatnie dzienniki wysyłane przez każdą maszynę.
Znajdź ostatni dziennik wygenerowany przez każdą maszynę i podsumuj według komputera, typu agenta i systemu operacyjnego:
Kliknij, aby uruchomić zapytanie w środowisku demonstracyjnym usługi Log Analytics
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
Masz teraz jeden dziennik z każdej maszyny, która zarejestrowała dane w ciągu ostatnich 48 godzin — ostatni dziennik wysyłany przez każdą maszynę.
summarize
W wierszu zmieniono nazwę kolumnyCategory
naAgentType
, która lepiej opisuje informacje przeglądane w kolumnie w ramach tej analizy.Aby sprawdzić, które maszyny nie wysłały dzienników w ciągu ostatnich pięciu minut, odfiltruj wszystkie dzienniki wygenerowane w ciągu ostatnich pięciu minut:
Kliknij, aby uruchomić zapytanie w środowisku demonstracyjnym usługi Log Analytics
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
Zestaw wyników tego zapytania zawiera ostatni dziennik wygenerowany przez wszystkie maszyny, które zarejestrowały dane w ciągu ostatnich 48 godzin, ale nie zawiera dzienników wygenerowanych w ciągu ostatnich pięciu minut. Innymi słowy, każda maszyna, która zarejestrowała dane w ciągu ostatnich pięciu minut, nie jest uwzględniona w zestawie wyników.
Masz teraz dane, których szukasz: listę wszystkich maszyn, które rejestrowały dane w ciągu ostatnich 48 godzin, ale nie były rejestrowane zgodnie z oczekiwaniami w ciągu ostatnich pięciu minut. Zestaw wyników składa się z zestawu komputerów, które chcesz dokładniej zbadać.
Manipuluj wynikami zapytania, aby bardziej wyraźnie przedstawić informacje.
Można na przykład zorganizować dzienniki według czasu wygenerowanego — od najstarszych do najnowszych — aby zobaczyć, które komputery przeszły najdłużej bez rejestrowania danych.
Wartość
Direct Agent
w kolumnie AgentType informuje o tym, że agent usługi Log Analytics jest uruchomiony na maszynie. Ponieważ agent usługi Log Analytics dla systemu Windows jest również nazywany usługą OMS, a w przypadku systemu Linux agent jest również nazywany mmS, zmianaDirect Agent
nazwy wartości naMMA
dla maszyn z systemem Windows iOMS
maszyn z systemem Linux upraszcza wyniki i ułatwia dalszą analizę, taką jak filtrowanie.Kliknij, aby uruchomić zapytanie w środowisku demonstracyjnym usługi Log Analytics
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
Napiwek
Służy
max_TimeGenerated
do korelowania ostatniego pulsu maszyny, która przestała zgłaszać dzienniki maszyn lub inne zdarzenia środowiskowe, które wystąpiły w tym samym czasie. Korelowanie dzienników w ten sposób może pomóc w znalezieniu głównej przyczyny badanego problemu.
Wyzwanie: Grupowanie maszyn przez monitorowanie wersji agenta i agenta
Zrozumienie, którzy agenci i wersje agentów są uruchomione na maszynach, mogą pomóc w analizie głównej przyczyny problemów i zidentyfikowaniu maszyn, które należy zaktualizować do nowego agenta lub nowej wersji agenta.
Czy możesz pomyśleć o kilku szybkich poprawkach, które można wprowadzić w zapytaniu opracowanym powyżej, aby uzyskać te informacje?
Rozważ następujące kwestie:
- Jakie dodatkowe informacje należy wyodrębnić z dzienników?
- Której operacji KQL można użyć do grupowania maszyn według uruchomionej wersji agenta?
Rozwiązanie 2.
Skopiuj pierwsze pięć wierszy z zapytania i dodaj kolumnę
Version
dosummarize
wiersza zapytania, aby wyodrębnić informacje o wersji agenta:Kliknij, aby uruchomić zapytanie w środowisku demonstracyjnym usługi Log Analytics
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
Zmień nazwę kolumny na
Version
AgentVersion
, aby uzyskać jasność, dodaj kolejnysummarize
wiersz, aby znaleźć unikatowe kombinacje typu agenta, wersji agenta i typu systemu operacyjnego, a następnie użyj funkcji agregującej KQLmake_set()
, aby wyświetlić listę wszystkich komputerów z każdą kombinacją typu agenta i wersji agenta:Kliknij, aby uruchomić zapytanie w środowisku demonstracyjnym usługi Log Analytics
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
Masz teraz dane, których szukasz: listę unikatowych kombinacji typu agenta i wersji agenta oraz zestaw wszystkich ostatnio aktywnych maszyn z uruchomioną określoną wersją każdego agenta.