Упражнение. Вывод списка недавно активных виртуальных машин, которые перестали отправлять журналы
Здесь вы напишете запросы 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
, Category
Computer
и OSType
столбцы имеют данные, относящиеся к нашему анализу.
Теперь давайте рассмотрим, как мы можем использовать эти данные и какие операции KQL могут помочь извлечь и преобразовать данные:
Столбец | Description | Цель анализа | Связанные операции 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
Теперь у вас есть нужные данные: список уникальных сочетаний типов агента и версии агента, а также набор всех недавно активных компьютеров, на которых выполняется определенная версия каждого агента.