Упражнение — перечислить недавно активные виртуальные машины, которые перестали отправлять журналы.
Здесь вы напишете запросы KQL для получения и преобразования данных из таблицы Heartbeat
, чтобы получить аналитические сведения о состоянии компьютеров в вашей среде.
1. Установка целей
Ваша первая цель анализа журналов — обеспечить получение данных обо всех активных виртуальных машинах в сети. Необходимо определить компьютеры, которые перестают отправлять данные, чтобы обеспечить полную видимость всех активных виртуальных машин.
Чтобы определить, какие компьютеры перестали отправлять данные, вам потребуется:
- Все компьютеры, которые недавно регистрировали данные, но не регистрировали данные, как ожидалось за последние несколько минут.
- Для более глубокого анализа полезно знать, какой агент виртуальной машины работает на каждом компьютере.
2. Оценка журналов
Azure Monitor использует агент Azure Monitor для сбора данных о действиях и процессах операционной системы, выполняемых на виртуальных машинах.
Заметка
Некоторые старые машины в вашей системе все еще используют устаревшие агенты Log Analytics для Windows и Linux, которые Azure Monitor постепенно выводит из использования.
Агент Azure Monitor и агент Log Analytics отправляют данные о работоспособности виртуальных машин в таблицу Heartbeat
раз в минуту.
Давайте выполним простой запрос take 10
в таблице Heartbeat
, чтобы просмотреть тип данных каждого из её столбцов.
Щелкните, чтобы выполнить запрос в демонстрационной среде Log Analytics
Heartbeat
| take 10
Столбцы TimeGenerated
, Computer
, Category
и OSType
имеют данные, относящиеся к нашему анализу.
Теперь давайте рассмотрим, как мы можем использовать эти данные и какие операции KQL могут помочь извлечь и преобразовать данные:
Столбец | Описание | Цель анализа | Связанные операции KQL |
---|---|---|---|
TimeGenerated |
Указывает, когда виртуальная машина создает каждый журнал. |
|
|
Computer |
Уникальный идентификатор компьютера. |
|
|
Category |
Тип агента:
|
Определите агент, запущенный на компьютере. | Чтобы упростить результаты и упростить дальнейший анализ, например фильтрацию:
|
OSType |
Тип операционной системы, работающей на виртуальной машине. | Определите тип агента для агентов Log Analytics, которые различаются для Windows и Linux. | summarize by... OSType Дополнительные сведения см. в оператора сводки . |
Version |
Номер версии агента, отслеживающего виртуальную машину. | Определите версию агента на каждом компьютере. | Переименуйте столбец на AgentVersion (AgentVersion=Version ). |
3. Написание запроса
Напишите запрос, который перечисляет компьютеры, которые были активны за последние 48 часов, но не регистрировали данные в таблицу Heartbeat
за последние пять минут.
Извлеките все журналы за последние 48 часов:
Щелкните, чтобы выполнить запрос в демонстрационной среде 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
Результирующий набор этого запроса включает журналы со всех компьютеров, отправляющих данные журнала за последние 48 часов. Эти результаты, скорее всего, включают множество журналов для каждого активного компьютера.
Чтобы понять, какие компьютеры недавно не отправляли журналы, вам потребуется только последний журнал, отправленный каждым компьютером.
Найдите последний журнал, созданный каждым компьютером, и суммируете данные по компьютеру, типу агента и операционной системе:
Щелкните, чтобы выполнить запрос в демонстрационной среде 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
Теперь у вас есть один журнал с каждого компьютера, который регистрировал данные за последние 48 часов — последний журнал, отправленный каждым компьютером.
В строке
summarize
вы переименовали столбецCategory
наAgentType
, который лучше описывает информацию, которую вы просматриваете в столбце в рамках этого анализа.Чтобы узнать, какие компьютеры не отправляли журналы за последние пять минут, отфильтруйте все журналы, созданные за последние пять минут:
Щелкните, чтобы выполнить запрос в демонстрационной среде 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
Результирующий набор этого запроса включает последний журнал, созданный всеми компьютерами, которые регистрировали данные за последние 48 часов, но не включают журналы, созданные за последние пять минут. Другими словами, любое устройство, записывавшее данные за последние пять минут, исключено из результирующего набора.
Теперь у вас есть нужные данные: список всех компьютеров, которые регистрировали данные за последние 48 часов, но не регистрировали данные, как ожидалось за последние пять минут. Результирующий набор состоит из набора компьютеров, которые необходимо изучить далее.
Управляйте результатами запроса, чтобы получить более четкое представление информации.
Например, журналы можно упорядочить по времени, созданным от самого старого до самого нового, чтобы узнать, какие компьютеры прошли самое длительное время без ведения журнала.
Значение
Direct Agent
в столбце AgentType сообщает, что агент Log Analytics запущен на компьютере. Так как агент Log Analytics для Windows также называется OMS, а для Linux агент также называется MMS, переименование значенияDirect Agent
наMMA
для компьютеров Windows иOMS
для компьютеров Linux упрощает результаты и упрощает дальнейший анализ, например фильтрацию.Щелкните, чтобы выполнить запрос в демонстрационной среде 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
Совет
Используйте
max_TimeGenerated
для корреляции последнего сигнала машины, которая перестала подавать сигналы, с журналами машины или с другими событиями окружающей среды, которые произошли примерно в то же время. Корреляция журналов таким образом может помочь в нахождении первопричины проблемы, которую вы исследуете.
Проблема: группировать компьютеры с помощью агента мониторинга и версии агента
Понимание того, какие агенты и версии агента выполняются на компьютерах, могут помочь вам проанализировать первопричину проблем и определить, какие компьютеры необходимо обновить до новой или новой версии агента.
Можете ли вы подумать о нескольких быстрых настройках, которые вы можете сделать с запросом, разработанным выше, чтобы получить эту информацию?
Рассмотрим следующее:
- Какие дополнительные сведения необходимо извлечь из журналов?
- Какую операцию KQL можно использовать для группирования компьютеров по версии агента, которую они выполняют?
решение :
Скопируйте первые пять строк из запроса и добавьте столбец
Version
в строкуsummarize
запроса для извлечения сведений о версии агента:Щелкните, чтобы выполнить запрос в демонстрационной среде 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
Переименуйте столбец
Version
, чтобыAgentVersion
для ясности, добавьте еще одну строкуsummarize
, чтобы найти уникальные сочетания типов агента, версии агента и типа операционной системы, а также использовать агрегатную функцию KQLmake_set()
для перечисления всех компьютеров с каждой комбинацией типов агента и версии агента:Щелкните, чтобы выполнить запрос в демонстрационной среде 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
Теперь у вас есть нужные данные: список уникальных сочетаний типов агента и версии агента, а также набор всех недавно активных компьютеров, на которых выполняется определенная версия каждого агента.