Ранее я уже писал о работе и настройке системного монитора Windows (Performance Monitor). В данной статье продолжим знакомиться с этим замечательным инструментом. В частности, поговорим о том как создавать сборщики данных загруженности оборудования системы, а затем просматривать и анализировать полученную информацию в системном мониторе.
0. Оглавление
- Запуск системного монитора
- Добавление группы сборщиков данных
- Запуск сборщика данных по расписанию
- Автоматический перезапуск сборщика данных
- Работа с группами сборщиков данных из командной строки
1. Запуск системного монитора
Итак, запускаем Системный монитор Windows (Windows Performance Monitor). Во всех версиях Windows Server сделать это проще всего выполнив команду perfmon (Win+R — «perfmon» — «ОК»)
2. Добавление группы сборщиков данных
Теперь добавим новую группу сборщиков данных.
Но прежде всего, необходимо убедиться, что пользователь, под которым вы работаете, является членом группы «Пользователи журналов производительности» (Performance Log Users) или группы «Администраторы» (Administrators) (или аналогичной).
Для добавления новой группы сборщиков данных, в запустившемся Системном мониторе Windows в дереве консоли слева раскрываем вкладку «Группы сборщиков данных» (Data Collector Set), кликнем правой кнопкой мыши по группе «Особые» (User Defined) и в контекстном меню выберем пункт «Создать» (New) — «Группа сборщиков данных» (Data Collector Set).
Запуститься мастер создания группы сборщиков данных. На первой странице мастера вводим имя группы сборщиков, выбираем пункт «Создать вручную (для опытных)» (Create manually (Advenced)) и нажимаем «Далее» (Next).
Выбираем тип данных «Создать журналы данных» (Create data logs), ставим флаг «Счетчик производительности» (Performance counter) и снова жмем «Далее» (Next).
На следующей странице мастера, необходимо выбрать счетчики производительности по которым будет идти запись в журнал. Нажимаем кнопку «Добавить» (Add), после чего откроется знакомое по предыдущей статье окно добавления счетчиков. Счетчиков очень много. Для удобства все счетчики сгруппированы по типу оборудования или ПО. Обратите внимание, что можно добавлять как счетчики текущего компьютера, так и компьютеров сети (при наличии соответствующих прав).
Для некоторых счетчиков возможно выбрать конкретный экземпляр объекта. Например, при добавлении счетчика «Средняя длина очереди диска» (Avg. Disk Queue Length) можно выбрать диск, для которого будет собираться статистика.
Выбрав необходимый счетчик (или конкретный экземпляр объекта для счетчика) следует перенести его в таблицу «Добавленные счетчики» (Added Counters) с помощью кнопки «Добавить» (Add). Добавив все необходимые счетчики, нажимаем «ОК».
После чего все выбранные счетчики перенесутся в список счетчиков создаваемой группы сборщиков данных. Устанавливаем интервал сбора данных (Sample interval) (рекомендуется 15 сек.) и нажимаем «Далее» (Next).
Теперь необходимо указать каталог, в котором будет храниться журнал системного монитора. По умолчанию это каталог
%sistemdrive%\PerfLogs\Admin\<Имя группы сборщиков данных>
Однако если вы не Администратор, вам, скорее всего, не хватит прав на каталог C:\PerfLogs. И в этом случае, следует выбрать папку для логов там, куда гарантированно есть право на запись.
Определившись с корневой папкой для хранения файлов журнала, жмем «Далее» (Next).
На последней странице мастера также можно выбрать пользователя Windows из под которого будет вестись замер производительности. Сменив пользователя (или оставив значение по умолчанию) устанавливаем переключатель, отвечающий за последующие действия программы в значение «Сохранить и закрыть» (Save and close) и нажимаем «Готово» (Finish) для завершения работы мастера.
После чего в дереве консоли в группе «Особые» (User defined) увидим нашу только что созданную группу сборщиков данных. Для того, чтобы сборщик данных начал запись в показателей счетчиков в журнал, необходимо кликнуть по нему правой кнопкой мыши и в контекстном меню выбрать пункт «Пуск» (Start) или нажать соответствующую кнопку на панели задач оснастки.
Если все настроено правильно, и сборщик начал запись в журнал, иконка группы сборщика данных сменится на иконку со значком «Play». Даже если завершить сеанс пользователя, сборщик все равно продолжит свою работу.
При текущих настройках сборщик будет работать до тех пор, пока не произойдет перезагрузка сервера, или его не остановят вручную. Для этого достаточно в контекстном меню группы сборщиков данных выбрать пункт «Стоп» (Stop) или нажать соответствующую кнопку на панели задач.
В соответствии с выбранными настройками, в указанном раннее каталоге можно найти файл журнала текущего замера производительности. Каждый перезапуск сборщика начинает новый файл.
Просматривать данный журнал производительности можно в системном мониторе, выбрав нужный файл в качестве источника в свойствах системного монитора как показано на рисунке ниже (можно добавить сразу несколько файлов, в этом случае данные из всех замеров будут выведены на одном графике).
Но намного удобнее это делать, найдя нужный журнал в дереве консоли, развернув вкладки «Отчеты» (Reports) — «Особые» (User Defined). Здесь для каждой созданной группы сборщиков данных хранятся сведения о файлах журналов замера производительности. Чтобы просмотреть данные журнала достаточно просто выбрать его в дереве.
Просматривать файлы журнала можно на любом компьютере, где установлен Системный монитор. Таким образом данные счетчиков можно собирать на нескольких компьютерах, а просматривать на одном, их можно отправлять по электронной почте и т. д.
3. Запуск сборщика данных по расписанию
Также есть возможность настроить запуск сборщика данных по расписанию. Для этого следует кликнуть правой кнопкой мыши по группе сборщиков данных, для которой необходимо настроить расписание, и в контекстном меню выбрать пункт «Свойства» (Properties).
В открывшемся окне свойств сборщика данных доступно для изменения множество параметров сборщика. В частности, на вкладке «Расписание» (Schedile) можно настроить несколько триггеров, по которым будет запускать замер производительности. Например, на картинке ниже, установлено расписание, при котором сборщик данных будет запускаться каждый будний день в 10:00 в течении всего Июня 2015 года.
Осталось только определить время остановки записи работы счетчиков. Сделать это можно на вкладке «Условие остановки» (Stop Condition). На приведенном ниже рисунке сборщик будет работать в течении одного часа.
Дожидаемся назначенного времени и видим, что файл журнала успешно сформировался и доступен для анализа в дереве консоли оснастки «Производительность» (Performance).
4. Автоматический перезапуск сборщика данных
Когда сборщик данных ведет запись показателей счетчиков, сам файл журнала недоступен для просмотра. Это не совсем удобно, т. к. иногда требуется и производить запись и просматривать данные замера производительности. В этом случае можно настроить автоматический перезапуск сборщика данных, например через каждый час. При новом запуске, сборщик начнет новый файл журнала, остальные же файлы мы сможем сразу просматривать в системном мониторе.
Прежде всего, для удобства хранения фалов журнала, поменяем формат имени папки (Subdirectory name format), в которой будет храниться файл с данными замера производительности. Сделать этом можно вызвав окно свойств текущего сборщика данных и перейдя на вкладку «Папка» (Directiry). Здесь с помощью встроенной подсказки можно установить шаблон создаваемых папок. Установим имя, соответствующее полному времени начала работы группы сборщика данных, т. е. в формате «yyyyMMdd\HHmmss».
Затем на вкладке «Условие остановки» (Stop Condition) установим флаг «Перезапускать группу сборщиков данных при достижении предела.» (Restart the data collector set at limits) и установим длительность (Duration) работы счетчика, например 1 час, после чего сохраняем изменения с помощью кнопки «ОК».
Запускаем сборщик данных для начала замера производительности и видим, что в соответствии с установленными параметрами каждый час создается новый файл журнала системного монитора, а предыдущие файлы доступны для анализа.
5. Работа с группами сборщиков данных из командной строки
Работать с группами сборщиков данных можно как и из оснастки «Производительность» (Performance), так и из командной строки с помощью программы logman.exe. Синтаксис и примеры работы данного оператора можно получить выполнив команду
logman /?
В ситуации, когда приходится постоянно настраивать сбор данных монитора производительности у разных клиентов на разных серверах, удобно один раз написать bat-файл, который будет создавать новую группу сборщиков данных с определенным набором счетчиков производительности.
Например, bat-файл, создающий группу сборщиков данных аналогичную описанной в данной статье выше, будет содержать код (bat-файлы удобно писать с помощью программы Notepad++):
@ECHO OFF
ECHO Adding counter "New_counter"...
rem Создаем новую группу сборщиков данных
logman create counter New_counter -f bincirc -c ^
"\Processor(_Total)\%% Processor Time" ^
"\Memory(_Total)\Page/sec" ^
"\Memory(_Total)\%% Uncommited Bytes In Use" ^
"\Memory(_Total)\Available Bytes" ^
"\System(_Total)\Processor Queue Length" ^
"\PhysicalDisk(_Total)\Avg. Disk Queue Lenghth" ^
"\PhysicalDisk(*)\Avg. Disk Queue Lenghth" ^
"\Network Interface(*)\Bytes Total/sec" ^
-si 15 -v mmddhhmm
rem Запускаем монитор производительности
C:\Windows\System32\Perfmon.exe
ECHO done
Названия счетчиков заключаются в кавычки и разделяются пробелом. Имена счетчиков можно писать как в англоязычном варианте, так и на русском языке (но тогда bat-файл будет работать только в русскоязычных версиях Windows). Если в названии счетчика встречается знак %, его необходимо заменить знаками %% (двойной процент).
Выполнив данный файл, сразу попадем в монитор производительности, где увидим только что созданную группу сборщиков данных с именем New_counter.
Описанных счетчиков, как правило, хватает для общей оценки загруженности системы. Другие счетчики используются для детального расследования проблем, если установлено, что имеет место недостаточная производительность оборудования.
Большое спасибо автору, Статей про performance monitor навалом, но только здесь нашел простое и понятное объяснение про «Запуск сборщика данных по расписанию»
«Автоматический перезапуск сборщика данных»
И вам спасибо за комментарий.
Добрый день! А мы можем в своих программах создавать какие то свои показатели, которые потом собирать с помощью Performance Monitor?
Да, конечно, многие программы (например MS SQL) имеют свои счетчики, показатели с которых можно собирать с помощью Performance Monitor.
Добрый день а вы не встречали dashboard/надстроек под него чтобы показатели были в маленьком окошке? Спасибо
Здравствуйте. К сожалению, не совсем понимаю, о чем вы. Поэтому ответ скорее всего нет, не встречал.
Добрый день. Заметил что лог в формате blg пишется не онлайн (как csv tsv), а только после прекращения действия (лимит времени, размера).И если при сборе данных например сервер зависнет, то файл не создаться…. Как быть, если формат csv не очень удобен?
Если используете SQL-сервер, то удобно держать журналы именно там, например, в отдельных информационных базах для каждого сервера.
Подробно по настройке и анализу журналов на SQL можно прочитать, например, здесь: http://www.gilev.ru/hardwaresetup/
Попробуйте писать в csv, а потом сконвертировать в blg утилитой relog
Пишется постоянно, но размер файла в проводнике отображается некорректно, пока запись в файл не «закрыта».
Если вы сделаете копию blg-файла, куда идёт запись, вы увидите что эта копия имеет реальный размер. И данные.
В общем, не переживайте об этом.
поправка:
Если настроить «перезапустить по достижении предела» — файлы и правда будут формироваться раз в час, а вот отчёты по ним и применение политик хранения (Data Manager) будут применяться только после остановки счётчика.
Это может привести к следующей проблеме:
Если запустить постоянный мониторинг без остановок вовсе, только с перезапусками раз в час — файлы будут бесконечно копиться, а если вы через год нажмёте «Stop» — все старые файлы будут архивироваться, что может занять мнооооого времени.
Лучше настроить что бы раз в [сутки] счётчик останавливался и запускался планировщиком (ну и перезапуск раз в час, если вам это удобно)
Добрый день, спасибо за статью. Есть такой вопрос, к примеру мой журнал проработал 90 минут, мне нужно записать ежесекундный показатель в таблицу, то есть всего получится 5400 показателей, как можно это сделать? Желательно куда-нибудь в отдельный файл
Здравствуйте.
Запись журнала и так происходит в отдельный XML-файл (по умолчанию в C:\PerfLogs). Критерий остановки и интервал записи задаются с параметрах счетчика.