Гид по технологиям

Perfmon: оповещения при высокой загрузке CPU

8 min read Мониторинг. Обновлено 24 Nov 2025
Perfmon: оповещения при высокой загрузке CPU
Perfmon: оповещения при высокой загрузке CPU

Интерфейс Performance Monitor — главное окно с панелями и графиками

Быстрые ссылки

  • Что такое Perfmon?
  • Просмотр метрик
  • Data Collector Sets
  • Настройка оповещений
  • Запуск сборщика данных
  • Заключение

Что такое Perfmon?

Performance Monitor (Perfmon) — это модуль Microsoft Management Console (MMC), присутствующий в Windows на протяжении многих версий, который помогает отслеживать использование системы и ключевые показатели производительности. Интерфейс по умолчанию показывает несколько областей и реальные показатели в реальном времени.

  • Performance Monitor — просмотр метрик в реальном времени
  • Data Collector Sets — наборы для сбора данных за выбранный интервал
  • Reports — отчёты по собранным данным

Вид разделов Performance Monitor: Performance Monitor, Data Collector Sets, Reports

Важно: если Performance Monitor не запущен от имени администратора, функциональность будет ограничена: вы можете не увидеть Data Collector Sets и Reports.

Просмотр метрик

При первом запуске Performance Monitor вы увидите движущийся линейный график, который по умолчанию отображает счётчик:

% Processor Time

Сам по себе этот график полезен для наблюдения, но не показывает устойчивые нарушения — он даёт скользящее значение. Для детектирования проблем лучше собирать данные и срабатывать на условия, заданные по порогам.

График в реальном времени — пример отображения % Processor Time

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

Data Collector Sets — зачем и как

Реальное время полезно, но для предупредительных оповещений и последующего анализа необходимы накопленные данные. Data Collector Sets позволяют:

  • собирать счётчики по расписанию;
  • сохранять логи для отчётов;
  • запускать действия при срабатывании условий.

Чтобы создать набор: разверните “Data Collector Sets → User Defined”, правой кнопкой мыши выберите New → Data Collector Set.

Создание нового Data Collector Set в User Defined

Назовите набор и выберите создание вручную (manually) — в нашем случае мы будем настраивать всё вручную.

Выбор ручного создания Data Collector Set

Выберите тип “Performance Counter Alert”. Это позволяет следить за заданным счётчиком и выполнять действия при превышении порога.

Выбор Performance Counter Alert для Data Collector Set

Поскольку нас интересует общая загрузка CPU, выберите счётчик Processor → _Total и добавьте его.

Добавление счётчика Processor(_Total) → % Processor Time

В списке вы получите набор всех возможных экземпляров Processor _Total. Нам нужен только один конкретный счётчик:

\Processor(_Total)\% Processor Time

Удалите лишние счётчики, выбрав их по одному и нажав Remove.

Удаление лишних счётчиков, оставляем только Processor(_Total) % Processor Time

Примечание: кнопка “Remove” возвращает выделенный элемент в начало списка, поэтому удаляйте элементы по одному.

После выбора счётчика укажите порог, при превышении которого будет срабатывать оповещение. В примере мы используем порог:

95

Установка порога срабатывания 95%

Сохраните и закройте Data Collector Set.

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

После создания набора нужно определить, что произойдёт при срабатывании. В Perfmon есть два способа обработать оповещение:

  • Alert Action — встроенные опции (логирование события, запуск другого набора);
  • Alert Task — запуск задачи в планировщике задач (Task Scheduler) с передачей параметров.

Выберите ваш набор в User Defined → High CPU Usage, затем в списке DataCollector01 правой кнопкой мыши откройте Properties.

Открытие свойств DataCollector01 для настройки действий

Alert Action: запись в Application event log

Самый простой вариант — на вкладке Alert Action включить “Log an entry in the Application event log”. Также можно настроить запуск другого Data Collector Set для более подробного сбора при инциденте.

Настройка записи события в журнал приложений и опции запуска другого набора

Alert Task: полноценное оповещение через планировщик задач

Чтобы получать реальные оповещения (например, отправку письма, запись в отдельный лог или интеграцию с системой оповещений), используйте Alert Task: Data Collector будет запускать заранее созданную задачу в Task Scheduler и передавать параметры.

Нужно выполнить два шага:

  1. Создать скрипт, который будет обрабатывать аргументы и выполнять действия (лог, отправка, вызов API).
  2. Создать и зарегистрировать задачу, которая исполняет этот скрипт.

Пример простого логирующего скрипта

Ниже — минимальный PowerShell-скрипт, принимающий аргументы от Alert Task и записывающий строку в файл лога. Сохраните как C:\HighCPUAlert.ps1.

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'

Объяснение (одной строкой): скрипт формирует текстовую запись и добавляет её в локальный файл лога.

Пример регистрации задачи через PowerShell

Задача будет запускать PowerShell 7 (pwsh.exe). Обратите внимание, что до официального релиза исполняемый файл может называться pwsh-preview.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'

В этом примере задача зарегистрирована под служебной учётной записью LOCALSERVICE; при регистрации задачи может потребоваться указать учётную запись с правами администратора.

Примечание: аргументы приходят как строки, поэтому удобно передавать их в кавычках и затем обращаться по индексу $args[0], $args[1].

Настройка параметров задачи в свойствах Data Collector

Конфигурация Alert Task в свойствах Data Collector

Откройте свойства DataCollector01 → Alert Task и укажите имя зарегистрированной задачи, а также аргументы. Сохраните изменения; возможно, потребуется ввести учётные данные администратора для регистрации задачи.

После этого при срабатывании счётчика Perfmon будет вызывать задачу, которая запустит скрипт и выполнит необходимые действия.

Запуск Data Collector и проверка

Правой кнопкой мыши нажмите на набор High CPU Usage → Start. Сбор данных начнётся. При достижении порога в соответствии с интервалом мониторинга планировщик задач будет периодически вызывать зарегистрированную задачу.

Отслеживайте:

  • Журналы Application Event Log (если включено логирование);
  • Файл C:\HighCPUAlert.log (в примере);
  • Task Scheduler — чтобы увидеть запуски задачи и возможные ошибки.

Практическое руководство (Playbook) — быстрый порядок действий

  1. Откройте Perfmon от имени администратора.
  2. Создайте User Defined → New → Data Collector Set вручную.
  3. Выберите Performance Counter Alert и добавьте счётчик \Processor(_Total)\% Processor Time.
  4. Установите порог (например, 95) и интервал проверки (по умолчанию в Perfmon задаётся период чтения).
  5. На вкладке Alert Action включите запись в журнал при необходимости.
  6. Создайте PowerShell-скрипт для обработки оповещений.
  7. Зарегистрируйте Scheduled Task, который будет вызывать скрипт.
  8. На вкладке Alert Task укажите задачу и аргументы.
  9. Стартуйте набор и проверьте результаты в журналах и файлах.

Роль‑ориентированные чеклисты

  • Администратор системы:

    • Запустить Perfmon от имени администратора.
    • Создать Data Collector Set и зарегистрировать Scheduled Task.
    • Проверить права учётной записи задачи.
  • Оператор/инженер поддержки:

    • Проверить, что логи приходят в C:\HighCPUAlert.log.
    • Убедиться, что Task Scheduler запускает задачу при срабатывании.
    • Диагностировать причины длительной загрузки CPU.
  • Разработчик автоматизации:

    • Интегрировать скрипт с системой оповещений (API, SMTP, webhook).
    • Обеспечить идемпотентность и обработку ошибок в скрипте.

Критерии приёмки

  • Срабатывание: при достижении порога заданный Scheduled Task запускается и в лог добавляется запись.
  • Надёжность: задача запускается повторно при повторных срабатываниях без ручного вмешательства.
  • Безопасность: задача не выполняется от имени учётной записи с избыточными правами.
  • Отладка: при отсутствии лога в C:\HighCPUAlert.log в журнале задач есть запись об ошибке и её текст.

Тесты и сценарии приёмки

  • Создать искусственную загрузку CPU (например, запуск шумовой задачи) и убедиться, что при длительной загрузке срабатывает запись в логе.
  • Убедиться, что при пиковых, но кратковременных скачках (менее интервала опроса) оповещение не срабатывает, если цель — устойчивые нагрузки.
  • Проверить поведение при отсутствии прав на запись в файл лога — задача должна зарегистрировать ошибку.

Методология настройки (короткая)

  1. Наблюдать (Observe) — собирать базовые метрики в реальном времени.
  2. Измерять (Measure) — настроить Data Collector Set с порогами.
  3. Реагировать (Respond) — запускать задачи/скрипты при срабатывании.
  4. Анализировать (Analyze) — просматривать собранные отчёты для корневой причины.

Решение проблем — частые ошибки и их устранение

  • “Нет Data Collector Sets”: запустите Perfmon от имени администратора.
  • “Задача не запускается”: проверьте, зарегистрирована ли Scheduled Task и учётные данные.
  • “Скрипт не пишет в лог”: проверьте разрешения на путь и обработку аргументов.
  • “Ложные срабатывания”: увеличьте порог или увеличьте интервал агрегации/проверки.

Когда метод не подходит (ограничения)

  • Perfmon пригоден для локального мониторинга и диагностики, но не заменяет полнофункциональные системы мониторинга в централизованной инфраструктуре (SIEM/Prometheus/Datadog) при масштабном мониторинге множества хостов.
  • Если требуется распределённая агрегация метрик и долгосрочный анализ на большом количестве серверов, лучше использовать специализированные решения.

Безопасность и приватность

  • Логи содержат системные метрики — избегайте записи чувствительных данных в эти файлы.
  • Планировщик задач должен работать от аккаунта с минимально необходимыми привилегиями.
  • Если вы отправляете данные в внешние системы (email, webhook), убедитесь в шифровании канала и ограничении прав доступа.

Быстрый справочник (cheat sheet)

  • Счётчик для общей загрузки CPU: \Processor(_Total)\% Processor Time
  • Пример порога: 95 (используйте порог в зависимости от SLA и характера нагрузки)
  • Логи: Application event log или собственный файл (C:\HighCPUAlert.log)
  • Запуск скрипта: Scheduled Task → pwsh.exe -NoProfile -File C:\HighCPUAlert.ps1

Пример решения для диагностики: последовательность действий при оповещении

  1. Получено оповещение — проверка C:\HighCPUAlert.log → запись с временной меткой.
  2. Просмотр запущенных процессов в момент срабатывания (Task Manager или Process Explorer).
  3. Запуск дополнительного Data Collector Set для трассировки процессов и дисковой активности.
  4. Сбор дампа для дальнейшего анализа при необходимости.

Пример диаграммы принятия решения

flowchart TD
  A[Высокая загрузка CPU] --> B{Непрерывная > интервала?}
  B -- Да --> C[Запустить DataCollector: глубокий сбор]
  B -- Нет --> D[Игнорировать или мониторить]
  C --> E{Процесс известен?}
  E -- Да --> F[Записать данные и уведомить владельца приложения]
  E -- Нет --> G[Снять дамп, передать в команду расследования]

Короткий глоссарий

  • Data Collector Set — набор для сбора метрик и событий.
  • Performance Counter Alert — тип счётчика, который генерирует оповещения на основе порога.
  • Alert Task — задача планировщика, запускаемая при оповещении.

Заключение

Perfmon остаётся мощным встроенным инструментом для локальной диагностики и простых сценариев оповещений. Комбинация Data Collector Sets, Alert Action и Alert Task позволяет гибко настраивать сбор данных и интеграцию с автоматизированными процессами реагирования. Для крупных сред рекомендуем комбинировать Perfmon с централизованными системами мониторинга и логирования.

Резюме

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

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Ускорить загрузки на PS4 — проверенные способы
Техника

Ускорить загрузки на PS4 — проверенные способы

Загрузка macOS Internet Recovery без раздела
macOS

Загрузка macOS Internet Recovery без раздела

Отключить Xbox Game Bar в Windows 10 и 11
Windows

Отключить Xbox Game Bar в Windows 10 и 11

Веб-интерфейс MidJourney: что нового
Генерация изображений

Веб-интерфейс MidJourney: что нового

Сменить или сбросить пароль Microsoft Outlook
Руководство

Сменить или сбросить пароль Microsoft Outlook

Как запускать программы при старте Ubuntu
Linux

Как запускать программы при старте Ubuntu