Упражнение. Определение компьютеров с высоким потреблением ЦП
Здесь вы напишете запросы 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
, ObjectName
, CounterName
, InstanceName
и 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 могут помочь извлечь и преобразовать данные:
Столбец | Описание | Цель анализа | Связанные операции 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()и процентильные(). |
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
Результирующий набор этого запроса содержит список всех компьютеров, которые достигли полной емкости ЦП и операционной системы, работающей на каждом компьютере, что будет полезно для дальнейшего анализа.