Упражнение. Определение компьютеров с высоким потреблением ЦП

Завершено

Здесь вы напишете запросы 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 

Screenshot that shows the results of a query on the Perf table with the ObjectName, CounterName, InstanceName, and CounterValue columns highlighted.

Вы можете увидеть, что TimeGeneratedстолбцы , , Computerи InstanceNameObjectNameCounterNameCounterValue столбцы содержат данные, относящиеся к нашему анализу.

В 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 часа:

Screenshot that shows the results of the distinct CounterName query on the Perf table with the Percentage Processor Time value highlighted.

Счетчик % 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. Написание запроса

Напишите запрос, который суммирует среднее, минимальное и максимальное использование ЦП всех компьютеров за последний день.

  1. Извлеките все журналы, созданные за прошлый день, которые сообщили % 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  
    

    Этот запрос извлекает все журналы, связанные с общими измерениями времени процессора за прошлый день.

    Screenshot that shows the results of a query for all logs generated in the past day that reported the Percentage Processor Time performance counter.

  2. Найдите минимальные, максимальные и средние значения счетчиков и вычислите значения счетчика 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.

    Screenshot that shows the minimum, maximum, average, 90th and 99th percentile results of the query on the Perf table.

  3. Отфильтруйте результаты запроса для записей, где % 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.

    Screenshot that shows the results of a query that filters for entries where the Percentage Processor Time counter value is higher than 80 in the 90th and 99th percentile range.

Задача. Добавление сведений о операционной системе из таблицы Heartbeat в результаты запроса

Часто можно лучше понять результаты запроса, сопоставляя сведения из другой таблицы с результатами join запроса с помощью оператора. Дополнительные сведения см. в разделе "Оператор соединения".

Можно ли использовать join оператор для добавления сведений об операционной системе, работающей на каждом компьютере, который доступен в таблице, как мы видели в Heartbeat первом упражнении?

Решение.

  1. Добавьте сведения из таблицы о операционной системе 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 таблицы в предыдущие результаты запроса.

    Screenshot that shows the results of a query that adds operating system information from the Heartbeat table to the previous query results.

    Теперь Computer столбец отображается дважды в результатах запроса — один раз из запроса Perf в таблице и один раз из запроса в Heartbeat таблице. Столбец Computer из Heartbeat таблицы переименован Computer1, но две таблицы содержат идентичные данные. Наличие обоих столбцов позволяет сопоставлять результаты из двух таблиц, но теперь можно отфильтровать повторяющийся столбец.

  2. 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 
    

    Результирующий набор этого запроса содержит список всех компьютеров, которые достигли полной емкости ЦП и операционной системы, работающей на каждом компьютере, что будет полезно для дальнейшего анализа.

    Screenshot that shows the results of a query that removes the Computer 1 column from the previous query results.