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

Завершено

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

снимок экрана, показывающий результаты запроса в таблице Perf с выделенными столбцами ObjectName, CounterName, InstanceName и CounterValue.

Вы можете увидеть, что столбцы 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 часа:

снимок экрана, показывающий результаты отдельного запроса CounterName в таблице Perf со выделенным значением

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

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

  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  
    

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

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

  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.

    снимок экрана, показывающий минимальный, максимальный, средний, 90-й и 99-й процентиль результатов запроса в таблице Perf.

  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.

    снимок экрана, показывающий результаты запроса, который фильтрует записи, в которых значение счетчика времени процессора в процентах превышает 80 в диапазоне 90-го и 99-го процентиля.

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

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

    Столбец 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 
    

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

    снимок экрана, показывающий результаты запроса, который удаляет столбец Computer 1 из предыдущих результатов запроса.