Упражнение. Сводка статистики свободного места по компьютеру
Здесь вы получите и преобразуйте данные из Perf
таблицы с помощью запросов KQL для анализа свободного пространства компьютеров, регистрирующих данные в рабочей области Log Analytics.
1. Установка целей
Помните, что ИТ-отдел заметил повторяющиеся проблемы, связанные с нехваткой свободного места на виртуальных машинах.
Чтобы проанализировать использование свободного места на компьютерах, работающих в ИТ-среде, вам потребуется следующее:
- Общее свободное место, доступное на каждом компьютере.
- Процент пространства, используемого на каждом компьютере.
2. Оценка журналов
Как мы видели в предыдущем упражнении, таблица Perf
содержит сведения о производительности аппаратных компонентов, операционных систем и приложений.
Мы отметили, что Perf
в столбце таблицы ObjectName
перечислены имена всех отслеживаемых объектов, а CounterName
столбец содержит имена различных счетчиков производительности, собираемых Azure Monitor. Мы также видели, что оба этих столбца содержат много значений, многие из которых появляются несколько раз.
Давайте запустите запрос в таблице для перечисления различных ObjectName
значенийPerf
:
Щелкните, чтобы запустить запрос в демонстрационной среде Log Analytics
Perf // The table you’re querying
| distinct ObjectName // Lists distinct ObjectName values
Результирующий набор этого запроса содержит все ObjectName
значения, которые в настоящее время находятся в таблице:
В нашем сценарии мы заинтересованы в анализе виртуальных машин, поэтому объекты, которые мы хотим просмотреть LogicalDisk
, и Logical Disk
(для мониторинга памяти на физическом компьютере вы бы посмотрели memory
на объект). Причина в наличии двух аналогичных именованных объектов заключается в том, что LogicalDisk
имя объекта в записях Windows используется Logical Disk
в записях Linux.
Чтобы получить список уникальных имен счетчиков Azure Monitor, собираемых для LogicalDisk
объектов и Logical Disk
объектов, выполните следующую команду:
Щелкните, чтобы запустить запрос в демонстрационной среде Log Analytics
Perf // The table you’re querying
| where ObjectName == "LogicalDisk" or // The object name used in Windows records
ObjectName == "Logical Disk" // The object name used in Linux records
| distinct CounterName // Lists distinct CounterName values
Результирующий набор этого запроса включает все счетчики производительности, собранные для LogicalDisk
объектов и Logical Disk
объектов:
Счетчики производительности, предоставляющие сведения об используемом и свободном пространстве, % Free Space
— % Used Space
иFree Megabytes
. У нас есть два аналогичных счетчика - % Free Space
и % Used Space
- собранные из записей Windows и Linux соответственно.
Давайте рассмотрим, как мы можем использовать эти данные и какие операции KQL помогут извлечь и преобразовать данные:
Столбец | Description | Цель анализа | Связанные операции KQL |
---|---|---|---|
TimeGenerated |
Указывает, когда виртуальная машина создает каждый журнал. | Определите время область анализа. | where TimeGenerated > ago(1d) Дополнительные сведения см. в разделе ago(), где операторы и числовые операторы. |
Computer |
Компьютер, с которого было собрано событие. | Связывание использования ЦП с определенным компьютером. | summarize... by Computer Дополнительные сведения см. в разделе "Оператор сводки". |
ObjectName |
Содержит имена всех объектов, для которых таблица содержит данные о производительности. Для анализа вы заинтересованы в LogicalDisk объектах и Logical Disk объектах. |
Отслеживайте логические диски на виртуальных машинах. | where ObjectName == "LogicalDisk" or ObjectName == "Logical Disk" Дополнительные сведения см. в разделе о том, где оператор и == (равно) оператор. |
CounterName |
Содержит имена всех счетчиков производительности в таблице. |
|
where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space" Чтобы упростить результаты и упростить дальнейший анализ:
|
InstanceName |
Выводит список отслеживаемых экземпляров отслеживаемого объекта. | Отслеживайте все диски на виртуальной машине. | InstanceName == "_Total" Дополнительные сведения см. в разделе о том, где оператор и == (равно) оператор. |
CounterValue |
Измерение, собираемые для счетчика. | Получение измерений производительности для % Used Space % Free Space счетчиков производительности и Free Megabytes счетчиков производительности. |
|
3. Написание запроса
Извлеките все журналы, созданные за прошлый день, которые сообщили
Free Megabytes
% Free Space
% Used Space
о счетчиках производительности и счетчиков производительности дляLogicalDisk
объектов иLogical Disk
объектов:Щелкните, чтобы запустить запрос в демонстрационной среде Log Analytics
Perf | where TimeGenerated > ago(1d) | where ObjectName == "LogicalDisk" or // The object name used in Windows records ObjectName == "Logical Disk" // The object name used in Linux records | where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space" // Filters for the performance counters Free Megabytes, % Free Space, and % Used Space performance counters | where InstanceName == "_Total" // Retrieves data related to free space for all drives on a virtual machine
Результирующий набор этого запроса, скорее всего, включает несколько записей для каждого компьютера, из которого собираются счетчики производительности, связанные с свободным пространством.
Фильтр для последнего значения счетчика, собираемого для каждого счетчика, сообщаемого каждой виртуальной машиной:
Щелкните, чтобы запустить запрос в демонстрационной среде Log Analytics
Perf | where TimeGenerated > ago(1d) | where ObjectName == "LogicalDisk" or // The object name used in Windows records ObjectName == "Logical Disk" // The object name used in Linux records | where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space" // Filters for the performance counters Free Megabytes, % Free Space, and % Used Space performance counters | where InstanceName == "_Total" // Retrieves data related to free space for all drives on a virtual disk | summarize arg_max(TimeGenerated, CounterValue) by Computer, CounterName // Retrieves the last counter value collected for each counter for every virtual machine
Теперь у вас есть последнее значение счетчика счетчика для каждого счетчика, связанного с пробелами на каждом компьютере.
Чтобы упростить анализ:
% Used Space
Преобразуйте значение% Free Space
счетчика в (вычитая% Used Space
значение из 100 %) и измените имя столбца% Free Space
на% Used Space
:Щелкните, чтобы запустить запрос в демонстрационной среде Log Analytics
Perf | where TimeGenerated > ago(1d) | where ObjectName == "LogicalDisk" or // The object name used in Windows records ObjectName == "Logical Disk" // The object name used in Linux records | where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space" // Filters for the performance counters Free Megabytes, % Free Space, and % Used Space performance counters | where InstanceName == "_Total" // Retrieves data related to free space for all drives on a virtual disk | summarize arg_max(TimeGenerated, CounterValue) by Computer, CounterName // Retrieves the last counter value collected for each counter for every virtual machine | extend CounterValue = iff(CounterName=="% Used Space", 100-CounterValue, CounterValue) // Converts % Used Space to % Free Space | extend CounterName = iff(CounterName=="% Used Space", "% Free Space", CounterName) // Changes the column name from % Used Space to % Free Space
Результирующий набор этого запроса представляет процент свободного места на компьютерах Windows и Linux таким же образом, что делает дальнейший анализ более понятным и простым.
Преобразуйте
Free Megabytes
в Гигабайты (Free Megabytes
значение * 0,001 = Бесплатные Гигабайты) и переназначитеFree Megabytes
OverallFreeSpaceInGB
в :Щелкните, чтобы запустить запрос в демонстрационной среде Log Analytics
Perf | where TimeGenerated > ago(1d) | where ObjectName == "LogicalDisk" or // The object name used in Windows records ObjectName == "Logical Disk" // The object name used in Linux records | where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space" // Filters for the performance counters Free Megabytes, % Free Space, and % Used Space performance counters | where InstanceName == "_Total" // Retrieves data related to free space for all drives on a virtual disk | summarize arg_max(TimeGenerated, CounterValue) by Computer, CounterName // Retrieves the last counter value collected for each counter for every virtual machine | extend CounterValue = iff(CounterName=="% Used Space", 100-CounterValue, CounterValue) // Converts % Used Space to % Free Space | extend CounterName = iff(CounterName=="% Used Space", "% Free Space", CounterName) // Changes the column name from % Used Space to % Free Space | extend CounterValue = iff(CounterName=="Free Megabytes", (CounterValue)*0.001, CounterValue) // Converts megabytes to gigabytes | extend CounterName= iff(CounterName=="Free Megabytes", "OverallFreeSpaceInGB", CounterName) // Changes the column name fromFree Megabytes to OverallFreeSpaceInGB
Теперь вы можете получить четкое представление о общем свободном пространстве на каждом компьютере в гигабайтах и в процентах от общего объема памяти компьютера.
Задача. Объединение статистики свободного места для каждого компьютера
Результирующий набор запроса до сих пор включает две строки для каждого компьютера — одна строка показывает общее свободное пространство в Гигабайтах, а в другом — процент свободного места.
Можно ли создать словарь, который объединяет эти две статистики свободного места для каждой виртуальной машины?
Подсказка.
- Используйте функцию bag_pack() для создания пар "ключ-значение" для каждого из двух счетчиков производительности.
- Используйте функцию агрегирования make_bag() для объединения обоих значений ключа для каждого компьютера.
Решение.
Группировать
CounterName, CounterValue
пары "ключ-значение":Щелкните, чтобы запустить запрос в демонстрационной среде Log Analytics
Perf | where TimeGenerated > ago(1d) | where ObjectName == "LogicalDisk" or // The object name used in Windows records ObjectName == "Logical Disk" // The object name used in Linux records | where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space" // Filters for the performance counters Free Megabytes, % Free Space, and % Used Space performance counters | where InstanceName == "_Total" // Retrieves data related to free space for all drives on a virtual disk | summarize arg_max(TimeGenerated, CounterValue) by Computer, CounterName // Retrieves the last counter value collected for each counter for every virtual machine | extend CounterValue = iff(CounterName=="% Used Space", 100-CounterValue, CounterValue) // Converts % Used Space to % Free Space | extend CounterName = iff(CounterName=="% Used Space", "% Free Space", CounterName) // Changes the column name from % Used Space to % Free Space | extend CounterValue = iff(CounterName=="Free Megabytes", (CounterValue)*0.001, CounterValue) // Converts megabytes to gigabytes | extend CounterName= iff(CounterName=="Free Megabytes", "OverallFreeSpaceInGB", CounterName) // Changes the column name fromFree Megabytes to OverallFreeSpaceInGB | extend packed = pack(CounterName, CounterValue) // Groups together CounterName-CounterValue key-value pairs
CounterName, CounterValue
Объединение пар "ключ-значение" позволяет создать словарь статистики свободного пространства для каждого компьютера на следующем шаге.Создайте контейнер свойств (словарь), называемый SpaceStats, из всех статистических данных свободного места, собранных для каждого компьютера, суммирование по компьютеру и фильтрацию для компьютеров с менее чем 50 % свободного места:
Щелкните, чтобы запустить запрос в демонстрационной среде Log Analytics
Perf | where TimeGenerated > ago(1d) | where ObjectName == "LogicalDisk" or // The object name used in Windows records ObjectName == "Logical Disk" // The object name used in Linux records | where CounterName == "Free Megabytes" or CounterName =="% Free Space" or CounterName == "% Used Space" // Filters for the performance counters Free Megabytes, % Free Space, and % Used Space performance counters | where InstanceName == "_Total" // Retrieves data related to free space for all drives on a virtual disk | summarize arg_max(TimeGenerated, CounterValue) by Computer, CounterName // Retrieves the last counter value collected for each counter for every virtual machine | extend CounterValue = iff(CounterName=="% Used Space", 100-CounterValue, CounterValue) // Converts % Used Space to % Free Space | extend CounterName = iff(CounterName=="% Used Space", "% Free Space", CounterName) // Changes the column name from % Used Space to % Free Space | extend CounterValue = iff(CounterName=="Free Megabytes", (CounterValue)*0.001, CounterValue) // Converts megabytes to gigabytes | extend CounterName= iff(CounterName=="Free Megabytes", "OverallFreeSpaceInGB", CounterName) // Changes the column name fromFree Megabytes to OverallFreeSpaceInGB | extend packed = pack(CounterName, CounterValue) // Groups together CounterName-CounterValue key-value pairs | summarize SpaceStats = make_bag(packed) by Computer // Summarizes free space statstics by computer | where SpaceStats.["% Free Space"]<= 50
Результирующий набор этого запроса суммирует статистику свободного пространства по компьютеру, которая была целью анализа свободного пространства!
Последняя строка фильтров запросов для компьютеров с менее чем 50 % свободного места. Возможно, вы хотите отслеживать или анализировать их более внимательно или перенастроить их, чтобы убедиться, что они не работают.