.

Общие положения

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

Базовый мониторинг

Эти счетчики можно использовать для базового мониторинга всех рабочих станций и серверов. Рассмотрим их более подробно.

Процессор

Прежде всего — \Processor\% Processor Time. Это основной показатель активности. Однако если наблюдать за ним, то делать это надо часто, допустим, раз в секунду. Сам по себе он ничего не показывает, однако, если параллельно изменяются % Privileged Time или Processor Queue Length, есть смысл обратить внимание и понаблюдать при помощи специальных утилит. Следующий важный счетчик — \Processor\% Privileged Time. Он показывает процентное время работы процессора в режиме ядра. В нормальном режиме это значение не должно быть высоким. Счетчик \Processor (_Total)\% User Time учитывает время работы процессора в режиме пользователя. Это не означает, что именно такое время процессор выделяет для пользовательских задач, поскольку пользовательские функции в конечном итоге могут обрабатываться в ядре. Но если основная часть времени уходит на работу в режиме ядра, то, вероятно, есть проблемы с драйверами или аппаратным обеспечением. Еще один важный счетчик, на который обязательно нужно обращать внимание, — \Processor\% DPC Time. Он показывает время, потраченное на обработку отложенных вызовов. При возникновении прерывания система передает управление обработчику прерываний, который, в свою очередь, должен максимально быстро выполнить необходимые действия, а основную, более тяжелую обработку отложить. При этом создается специальный объект ядра. Время работы этих объектов и учитывается данным счетчиком. Большое значение счетчика говорит о проблемах с драйверами или оборудованием. Обычно его показатель не превышает 5%. Если такое значение или выше сохраняется длительное время — это индикатор проблемы. \Processor (*)\% Interrupt Time совместно с преды­дущим счетчиком позволяет выявлять неполадки в подсистеме обработки прерываний. Само прерывание должно обрабатываться очень быстро. Во время обработки прерывания процессор не переключается на другие прерывания и задачи, а значит, если он надолго застрянет в обработчике прерывания, возникнет впечатление, что система «подвисла». Таким образом, высокие значения этого счетчика — плохой признак.

Основным объектом исполнения кода являются потоки. Они же являются основными потребителями ресурсов процессора. Очередь процессора — это потоки, ожидающие, пока процессор освободится. После выполнения потока система передает процессор следующему в очереди. Таким образом, очередь постоянной длиной в два и более потока сигнализирует о повышенной нагрузке на процессор. Однако при анализе нужно учитывать и счетчик Processor\% Processor Time. Если его значения невысоки при наличии очередей, то это говорит о проблеме в логике самих потоков. К примеру, они много времени проводят на объектах ожидания. Это справедливо также и для многопроцессорных систем. Количество ожидающих потоков можно увидеть в счетчике \System\Processor Queue Length. Переключение контекста происходит, когда ядро переводит процессор с одного потока на другой. В частности, это бывает, если поток с более высоким приоритетом переходит в состояние готовности или рабочий поток переходит в режим ожидания операций ввода/вывода. Обычно большие значения говорят о том, что в системе существует слишком много потоков. Счетчик \System\Context Switches/sec позволяет заметить это. Увеличение количества переключений говорит об увеличении количества потоков. А нормально это или нет — судить вам в каждом конкретном случае. К примеру, если количество потоков растет, а загрузка процессора — нет, то можно предположить, что эти потоки простаивают и имеет место либо утечка, либо неверная логика приложения.

Операции подкачки

Следующая важная группа — счетчики, связанные с памятью и подкачкой. \Memory\Pages/sec — очень примечательный счетчик. Он показывает, сколько страниц в секунду было прочитано или записано в рамках обработки страничного прерывания. Это прерывание возникает, когда искомая страница памяти оказывается выгруженной на диск в данный момент. Однако в этот счетчик попадают и рабочие ситуации, связанные с кэшем и отображенными в память (memory-mapped) файлами. Поэтому по нему нельзя однозначно судить о недостатке памяти. Счетчик \Memory\Page Reads/sec можно использовать в дополнение к предыдущему. Он показывает, сколько операций чтения в единицу времени, безотносительно к страницам, было сделано при обработке страничных прерываний. Счетчики Memory\Pages Input/sec и \Memory\Page Reads/sec нужно рассматривать совместно. Первый из них содержит количество страниц, прочитанных с диска, а второй — количество операций чтения, совершенных при подкачке. Эти счетчики учитывают Hard Page Faults — операции обращения к памяти, при которых искомая страница данных не находится в физической памяти. Счетчик\Memory\Cache Faults учитывает промахи подсистемы кэширования. Таким образом, если \Memory\Pages/sec,\Memory\Page Reads/sec, Memory\Pages Input/sec постоянно находятся на высоком уровне, а \Memory\Cache Faults на низком, то можно предположить, что операционная система активно работает с файлом подкачки, что, в свою очередь, говорит о недостатке памяти. Однако если \Memory\Cache Faults тоже высок, то, скорее всего, ситуация вызвана активной работой с большими файлами, отображаемыми в память. Но это не должно длиться долго. Memory\Transition Faults/sec — значение данного счетчика показывает скорость, с которой обрабатываются так называемые soft faults — ошибки страниц, для разрешения которых не нужны обращения к диску. Количество Transition Faults равно количеству таких страниц.

Память

\Memory\Available MBytes — количество доступной процессам физической памяти. Уменьшение значений этого счетчика, сопровождаемое ростом \Memory\Pages/sec и \Memory\Page Reads/sec, может свидетельствовать о недостатке памяти. Постоянное и равномерное уменьшение счетчика указывает на утечку памяти в одном из приложений.

Диск

Счетчик \LogicalDisk (*)\% Free Space показывает процент свободного места на логических дисках. Это важно для тех дисков, на которых расположены постоянно растущие файлы данных, такие как базы данных MS SQL Server или журналы Exchange. LogicalDisk|PhysicalDisk\Avg и Disk Queue Length следят за количеством запросов, стоящих в очереди к диску. Считается, что если очередь к диску длительное время включает более двух запросов, это может быть индикатором проблемы.

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

 

Таблица 1. Некоторые рекомендуемые граничные значения счетчиков

 

Мониторинг

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

Со стороны клиентов можно выделить такие службы:

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

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

Стандартная сетевая инфраструктура на основе MS Windows обычно включает в себя:

  1. Контроллеры домена
  2. Серверы разрешения имен (DNS, WINS)
  3. DHCP
  4. File server
  5. Print server
  6. Mail server Exchange
  7. Серверы приложений
  8. Веб-сервер внутреннего сайта
  9. Веб-сервер внешнего сайта

В средних и крупных сетях дополнительно могут использоваться:

  1. Терминальные серверы
  2. RRAS
  3. RADIUS
  4. MS SQL Server
  5. Sharepoint
  6. ISA/TMG
  7. Fax server

Кроме программных комплексов, могут применяться и аппаратные устройства, поддерживающие удаленный мониторинг посредством различных протоколов, таких как SNMP или WS-Management.

В Windows 2003 появилось понятие ролей, которые должен исполнять данный сервер. В Windows 2008 этот принцип расширен. Теперь роли стали очень важной частью конфигурации сервера. Эти роли приведены в таблице 2.

 

Таблица 2. Роли сервера

Таким образом, для базового мониторинга имеет смысл объединять наблюдаемые объекты в «наборы», чтобы в дальнейшем можно было назначить один или несколько таких наборов какому-либо серверу, в зависимости от ролей, которые он исполняет.

Во второй части статьи мы рассмотрим сервисы, которые может предоставлять операционная система сама по себе, в базовой комплектации. А затем — дополнительные функции, такие как exchange и sql server.

Андрей Вернигора (eosfor@gmail.com) — системный администратор, ведет блог http://eosfor.blogspot.com. Имеет сертификаты MCSA, MCDBA, MCSE, MCT