Поиск по сайту:

Как настроить мониторинг для оповещения о высокой загрузке системы Windows


Одним из наиболее часто упускаемых из виду инструментов в Windows является Perfmon, также известный как монитор производительности. У этой утилиты есть много недооцененных возможностей, одна из которых — возможность оповещения о различных метрических условиях. В этой статье мы рассмотрим, как правильно использовать функцию оповещения Perfmon при высокой загрузке ЦП.

Что такое перфмон?

Доступный с первых дней Windows в различных итерациях, Performance Monitor доступен как оснастка MMC для Windows, предназначенная для помощи в мониторинге использования системы и различных показателей производительности. Представление по умолчанию при запуске выделяет несколько различных областей и показателей в реальном времени.

  • Мониторинг производительности — просмотр показателей в режиме реального времени.
  • Наборы сборщиков данных – определенный набор данных за заданный интервал времени.
  • Отчеты – как просмотреть данные, собранные в наборах сборщиков данных

Если системный монитор запущен не от имени администратора, его полезность будет ограничена, и вы можете не увидеть наборы сборщиков данных или отчеты.

Просмотр показателей

При первом нажатии на Performance Monitor вам будет показан движущийся линейный график, который по умолчанию соответствует %Processor Time. Это само по себе не очень полезно, поскольку данные представляют собой скользящую величину, и на самом деле мы хотим знать, существуют ли неблагоприятные условия.

Вы можете добавить дополнительные показатели к этому графику, нажав на зеленый плюс и добавив дополнительные показатели. Имейте в виду, что шкала значений может не совпадать между разными точками данных и, следовательно, может быть менее полезной при объединении на одном графике.

Наборы сборщиков данных

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

Здесь на помощь приходят наборы сборщиков данных. После развертывания наборов сборщиков данных щелкните правой кнопкой мыши Определено пользователем → Создать → Набор сборщиков данных.

Вам будет предложено назвать набор и создать набор из шаблона или создать набор вручную. В этом случае нам нужно вручную создать нашу конфигурацию.

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

Поскольку мы хотим отслеживать общий процент ЦП, очень важно выбрать правильную метрику для мониторинга. Здесь мы выбираем Processor → _Total, нажимая «Добавить >>» рядом с выбранным экземпляром.

Одна проблема заключается в том, что вы получаете все показатели Processor _Total. В конечном счете, нам просто нужна метрика \Processor(_Total)\% процессорного времени. Чтобы удалить остальные, выберите каждый и нажмите кнопку «Удалить».

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

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

Наконец, сохраните и закройте набор сборщиков данных.

Настройка оповещений

Теперь, когда наша конфигурация по умолчанию убрана, нам нужно настроить, какое действие предупреждения будет выполняться. Есть два способа установить оповещения: «Действие оповещения» и «Задача оповещения». Выберите набор сборщиков данных Определено пользователем → Высокая загрузка ЦП, щелкните правой кнопкой мыши запись по умолчанию DataCollector01 и выберите «Свойства».

Самый простой способ начать мониторинг записей — перейти на вкладку «Действие предупреждения» и установить флажок «Записывать запись в журнал событий приложения». У вас также есть удобная возможность запустить другой набор сборщиков данных, когда будут соблюдены критерии для предупреждения. Таким образом, вы можете собирать дополнительные журналы по мере необходимости. Однако здесь мы просто собираемся зарегистрировать запись.

Настройка задачи оповещения

Это все хорошо, но в конечном итоге мы не получаем фактическое предупреждение в этом случае, а просто новую запись в журнале событий. На вкладке «Предупреждающая задача» мы можем сказать этому сборщику данных запустить запланированную задачу и отправить некоторые параметры, которые затем могут выполнять любые действия по предупреждению, которые мы хотим. Чтобы это сработало, нам нужно сделать две вещи. Создайте сценарий для запуска и само запланированное задание.

Сценарий регистрации

Ниже приведен очень простой скрипт ведения журнала. Мы считываем метрики оповещения, выведенные задачей оповещения, и отправляем эти результаты в файл журнала.

HighCPUAlert.ps1

$Date      = $args[0]
$Threshold = $args[1]
$Counter   = $args[2]

$Value = "[{0}] {1} {2} | {3}" -F $Date, 'High CPU', $Threshold, $Counter

Add-Content -Value $Value -Path 'C:\HighCPUAlert.log'

Запланированная задача

Здесь нам нужно создать запланированную задачу, которая фактически запустит скрипт при вызове Data Collector. Мы используем PowerShell для создания запланированной задачи и используем PowerShell 7 в качестве среды выполнения, что обозначено исполняемым файлом pwsh.exe.

$Params = @{
    "Action"    = New-ScheduledTaskAction -Execute "pwsh.exe" -Argument "-NoProfile -File C:\HighCPUAlert.ps1 $(Arg0)"
    "Principal" = New-ScheduledTaskPrincipal -UserId "LOCALSERVICE" -LogonType ServiceAccount
    "Settings"  = New-ScheduledTaskSettingsSet
}

New-ScheduledTask @Params | Register-ScheduledTask 'HighCPUAlert'

До официального выпуска PowerShell 7 исполняемым файлом может быть pwsh-preview.exe.

Настройка задачи оповещения

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

Аргументы задачи указаны в кавычках, потому что они передаются PowerShell в виде строк. Поэтому, заключая их в кавычки, мы упрощаем разделение аргументов по индексу, т. е. $arg[0] или $arg[1].

После того, как вы нажмете «Сохранить», вам могут быть предложены учетные данные, это должен быть пользователь с правами администратора.

Запуск сборщика данных

Щелкнув правой кнопкой мыши на группе сборщиков данных, High CPU Usage и выбрав Start, вы начнете процесс сбора. Если вы отслеживаете запланированные задачи, вы увидите, что вновь созданная запланированная задача периодически запускается в зависимости от установленного интервала мониторинга и порогового значения.

Заключение

Используя встроенные инструменты мониторинга Windows, вы можете структурировать некоторые полезные и мощные решения для мониторинга на основе основных утилит и PowerShell. Благодаря такой гибкости вы сможете разобраться практически в любой проблеме, которую можно диагностировать с помощью сбора метрических данных!