Упражнение. Определение компьютеров с высоким потреблением ЦП
Здесь вы напишете запросы KQL для получения и преобразования данных из Perf
таблицы, чтобы получить представление о том, какие компьютеры достигли или приближаются к их общей вычислительной емкости, и какие компьютеры используются недостаточно.
1. Установка целей
Чтобы устранить проблемы с производительностью, устранить потенциальные проблемы и определить возможности для более эффективной работы, необходимо проанализировать использование виртуальных машин в ИТ-среде центрального модуля обработки (ЦП).
Чтобы определить проблемы с производительностью и возможности, связанные с ЦП, чтобы стать более эффективными, вам потребуется информация о следующем:
- Тенденции использования ЦП каждого активного компьютера.
- Использование ЦП компьютеров в пиковое и тихое время.
2. Оценка журналов
Агенты Windows и Linux отправляют счетчики производительности аппаратных компонентов, операционных систем и приложений, работающих на отслеживаемых компьютерах, в таблицу Perf
в Azure Monitor.
Давайте запустите простой запрос в Perf
таблице, чтобы получить журналы за последние 24 часа и получить представление о схеме таблицы и данных, которые содержит таблица:
Щелкните, чтобы запустить запрос в демонстрационной среде Log Analytics
Perf // The table you’re querying
| where TimeGenerated > ago(1d) // Filters for entries generated in the past day
Вы можете увидеть, что TimeGenerated
столбцы , , Computer
и InstanceName
ObjectName
CounterName
CounterValue
столбцы содержат данные, относящиеся к нашему анализу.
В ObjectName
столбце перечислены имена всех объектов, для которых Azure Monitor собирает данные с отслеживаемых компьютеров. Столбец CounterName
содержит имена различных счетчиков производительности, собираемых Azure Monitor. Оба этих столбца содержат много значений, многие из которых появляются несколько раз. Чтобы четко увидеть различные значения в этих столбцах и определить, какие счетчики относятся к текущему анализу, давайте выполните следующий запрос:
Щелкните, чтобы запустить запрос в демонстрационной среде Log Analytics
Perf // The table you’re querying
| distinct ObjectName,CounterName // Lists distinct combinations of ObjectName and CounterName values
На этом снимке экрана показаны различные сочетания ObjectName
и CounterName
значения в столбце за CounterName
последние 24 часа:
Счетчик % Processor Time
дает представление об использовании процессора или центрального модуля обработки (ЦП). Это необходимая информация!
Давайте рассмотрим, как мы можем использовать эти данные, и какие операции KQL могут помочь извлечь и преобразовать данные:
Столбец | Description | Цель анализа | Связанные операции KQL |
---|---|---|---|
TimeGenerated |
Указывает, когда виртуальная машина создает каждый журнал. | Определите время область анализа. | where TimeGenerated > ago(1d) Дополнительные сведения см. в разделе ago(), где операторы и числовые операторы. |
Computer |
Компьютер, с которого было собрано событие. | Связывание использования ЦП с определенным компьютером. | summarize... by Computer Дополнительные сведения см. в разделе "Оператор сводки". |
ObjectName |
Содержит имена всех объектов, для которых таблица содержит данные о производительности. | Отслеживайте производительность процессора. | where ObjectName == "Processor" Дополнительные сведения см. в разделе == (равно) оператора. |
CounterName |
Содержит имена всех счетчиков производительности в таблице. | Выполните мониторинг счетчика производительности % Processor Time . |
where CounterName == "% Processor Time" Дополнительные сведения см. в разделе о том, где оператор и == (равно) оператор. |
InstanceName |
Выводит список отслеживаемых экземпляров отслеживаемого объекта. | Отслеживайте все ядра процессора. | where InstanceName == "_Total" Дополнительные сведения см. в разделе о том, где оператор и == (равно) оператор. |
CounterValue |
Измерение, собираемые для счетчика. | Получение измерений производительности для счетчика % Processor Time производительности. |
summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99) Дополнительные сведения см. в разделе "Оператор суммирования" и функции агрегирования min(), max(), avg()и percentiles(). |
3. Написание запроса
Напишите запрос, который суммирует среднее, минимальное и максимальное использование ЦП всех компьютеров за последний день.
Извлеките все журналы, созданные за прошлый день, которые сообщили
% Processor Time
счетчик производительности:Щелкните, чтобы выполнить запрос в демонстрационной среде Log Analytics.
Perf // The table you’re querying | where TimeGenerated > ago(1d) and ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total" // Filters for entries generated in the past day related to total processor time measurements
Этот запрос извлекает все журналы, связанные с общими измерениями времени процессора за прошлый день.
Найдите минимальные, максимальные и средние значения счетчиков и вычислите значения счетчика 90-го и 99-го процентиля для каждого компьютера:
Щелкните, чтобы запустить запрос в демонстрационной среде Log Analytics
Perf // The table you’re querying | where TimeGenerated > ago(1d) and ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total" // Filters for entries generated in the past day related to total processor time measurements | summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99) by Computer // Presents the minimum, maximum, average, 90th and 99th percentile counter values for each computer
Результирующий набор этого запроса показывает минимальное, максимальное, среднее, 90-е и 99-е значения счетчиков процентиля
% Processor Time
для каждого компьютера, для которого есть данные в рабочей области Log Analytics.Отфильтруйте результаты запроса для записей, где
% Processor Time
значение счетчика выше 80 в диапазоне 90-го и 99-го процентиля:Щелкните, чтобы запустить запрос в демонстрационной среде Log Analytics
Perf // The table you’re querying | where TimeGenerated > ago(1d) and ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total" // Filters for entries generated in the past day related to total processor time measurements | summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99) by Computer // Presents the minimum, maximum, average, 90th and 99th percentile counter values for each computer | where percentile_CounterValue_90 > 80 and percentile_CounterValue_99 > 80 // Filters previous query results for instances where the 90th and 99th percentile counters are higher than 80
Результирующий набор этого запроса состоит из всех компьютеров, для которых первые 10% и 15%
% Processor Time
значений превышает 80.
Задача. Добавление сведений о операционной системе из таблицы Heartbeat в результаты запроса
Часто можно лучше понять результаты запроса, сопоставляя сведения из другой таблицы с результатами join
запроса с помощью оператора. Дополнительные сведения см. в разделе "Оператор соединения".
Можно ли использовать join
оператор для добавления сведений об операционной системе, работающей на каждом компьютере, который доступен в таблице, как мы видели в Heartbeat
первом упражнении?
Решение.
Добавьте сведения из таблицы о операционной системе
Heartbeat
, работающей на каждом из компьютеров в результатах запроса:Щелкните, чтобы запустить запрос в демонстрационной среде Log Analytics
Perf // The table you’re querying | where TimeGenerated > ago(1d) and ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total" // Filters for entries generated in the past day related to total processor time measurements | summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99) by Computer // Presents the minimum, maximum, average, 90th and 99th percentile counter values for each computer | where percentile_CounterValue_90 > 80 and percentile_CounterValue_99 > 80 // Filters previous query results for instances where the 90th and 99th percentile counters are higher than 50 | join kind=inner (Heartbeat // Introduces data from the "Heartbeat" table to the previous query results | where TimeGenerated > ago(1d) // Time range for the data added from the "Heartbeat" table | distinct Computer, OSType) on Computer // Adds distinct combinations of computer and operating system
Эта итерация запроса добавляет
Computer
столбцыOSType
изHeartbeat
таблицы в предыдущие результаты запроса.Теперь
Computer
столбец отображается дважды в результатах запроса — один раз из запросаPerf
в таблице и один раз из запроса вHeartbeat
таблице. СтолбецComputer
изHeartbeat
таблицы переименованComputer1
, но две таблицы содержат идентичные данные. Наличие обоих столбцов позволяет сопоставлять результаты из двух таблиц, но теперь можно отфильтровать повторяющийся столбец.Computer1
Удалите столбец из результатов запроса:Щелкните, чтобы запустить запрос в демонстрационной среде Log Analytics
Perf // The table you’re querying | where TimeGenerated > ago(1d) and ObjectName == "Processor" and CounterName == "% Processor Time" and InstanceName == "_Total" // Filters for entries generated in the past day related to total processor time measurements | summarize min(CounterValue), avg(CounterValue), max(CounterValue), percentiles(CounterValue, 90,99) by Computer // Presents the minimum, maximum, average, 90th and 99th percentile counter values for each computer | where percentile_CounterValue_90 > 80 and percentile_CounterValue_99 > 80 // Filters previous query results for instances where the 90th and 99th percentile counters are higher than 50 | join kind=inner (Heartbeat // Introduces data from the "Heartbeat" table to the previous query results | where TimeGenerated > ago(1d) // Time range for the data added from the "Heartbeat" table | distinct Computer, OSType) on Computer // Adds distinct combinations of computer and operating system | project-away Computer1 // Removes the "Computer1" column from the query results
Результирующий набор этого запроса содержит список всех компьютеров, которые достигли полной емкости ЦП и операционной системы, работающей на каждом компьютере, что будет полезно для дальнейшего анализа.