Свободно распространяемая утилита превратит компьютер с Windows в систему мониторинга
Все системные администраторы, с которыми мне доводилось общаться, мечтают о главной консоли, которая бы позволяла присматривать за всей ИТ-инфраструктурой, проверять и оповещать о возникновении необычных событий, протоколировать производительность и время отклика, измерять производительность, доступность и утилизацию ресурсов. В Windows имеются основные средства, обеспечивающие мониторинг некоторых параметров, но тем не менее многие администраторы вынуждены использовать сложные пакеты прикладных программ для выполнения более детального мониторинга - такие, как HP OpenView, Micromuse Netcool или NetIQ AppManager. К сожалению, стоимость этих пакетов весьма высока, и зачастую администраторам приходится искать более приемлемые альтернативы.
Многие будут просто поражены, узнав о существовании бесплатного, распространяемого в исходных кодах продукта, который обладает всеми необходимыми функциями, включая измерение использования ресурсов, доступности служб, оповещение по электронной почте, формирование отчетов. При этом не требуется установка дополнительных агентов от независимых фирм для мониторинга оборудования, более того, даже регистрация пользователя в сети не является обязательной. Такой продукт действительно существует и его можно получить немедленно и совершенно бесплатно.
Речь идет об JFFNMS, Just For Fun Network Monitoring System. Это проект разработки системы сетевого мониторинга, распространяемый в исходных кодах, созданный Хавьером Цицликэном и Крейгом Смоллом. Можно загрузить JFFNMS с сайта SourceForge.net (http://sourceforge.net) или с домашней страницы проекта, размещенной по адресу http://www.jffnms.org. Пусть вас не смущает название пакета - этот продукт предлагает полноценные возможности мониторинга корпоративных систем.
Каким же образом JFFNMS справляется с непростой задачей мониторинга, не используя при этом программных агентов других компаний и без регистрации на устройствах для проверки состояния ресурсов и доступности служб? Это достигается благодаря использованию протокола SNMP, стандартно доступного для систем Windows NT и более поздних. Для мониторинга устройства на нем должен быть установлен протокол SNMP. Дополнительную информацию о протоколе SNMP и настройке параметров можно найти во врезке «SNMP - основа JFFNMS». Обратимся к установке JFFNMS на компьютер.
Установка JFFNMS
В отличие от некоторых других пакетов, распространяемых в исходных кодах, JFFNMS не использует привычный мастер установки. Установив JFFNMS, вы сможете считать себя в некотором роде экспертом, - впрочем, инструкции по установке весьма точны и установка в целом не представляет затруднений. Вместе с JFFNMS автоматически устанавливается сервер Apache HTTP Server (так что можно удалить Microsoft IIS, если он уже был установлен), интерпретатор PHP, база данных MySQL, инструментарий работы с базами данных Round Robin Database Tool (RRDTool) и NMapWin - все эти компоненты необходимы для поддержки JFFNMS. Полное описание устанавливаемых инструментальных средств и протоколов можно найти в документе http://www.jffnms.org/jffnms/INSTALL.win32.txt (данный адрес URL является чувствительным к регистру).
Зайдите на сайт JFFNMS и загрузите самую новую версию установочного комплекта (на момент написания статьи это была версия 0.7.9). Для установки JFFNMS требуется выделить некоторое время, в течение которого вы сможете не отвлекаться на другие вопросы. В процессе установки необходимо точно исполнять все пункты инструкции - тогда установка пройдет гладко с первого раза. Когда я впервые попробовал установить JFFNMS, это заняло менее получаса. Единственное затруднение, с которым мне пришлось столкнуться, заключалось в том, что, пока я не предоставил права локального администратора учетной записи службы JFFNMS, система отказывалась работать нормально. После включения учетной записи в группу локальных администраторов проблема была успешно решена.
После завершения установки JFFNMS можно будет просматривать через консоль локальный сервер, используя адрес URL http://yourserver/admin/setup.php. Если вы просматриваете локальный сервер, можно взять в качестве yourserver адрес localhost, для удаленного доступа можно использовать имя компьютера или его IP-адрес. По умолчанию устанавливается имя пользователя admin с таким же паролем (admin). Как описано в процедуре установки, потребуется настроить некоторые параметры и проигнорировать грозные предупреждения, касающиеся компонентов diff, neato, smsclient, PqSQL и SOAP. После завершения необходимых изменений следует сохранить файлы настроек. Теперь JFFNMS готов к работе.
Настройка мониторинга
Перед настройкой мониторинга необходимо уточнить, что в JFFNMS понимается под словом «интерфейс». Для большинства людей в роли интерфейса может выступать сетевой адаптер или адрес IP. В JFFNMS под интерфейсом понимается любой параметр, который подлежит мониторингу. Это может быть использование жесткого диска, факт работы определенного приложения или доступность какого-либо порта на хосте. Другими словами, интерфейс — это то, как JFFNMS видит мир.
Для запуска JFFNMS необходимо перейти в браузере на домашнюю страницу http://yourserver и ввести имя учетной записи и пароль. Браузер перейдет на начальную страницу JFFNMS Starting Page, на которой отображаются некоторые счетчики JFFNMS высшего уровня. Далее следует сообщить JFFNMS о том, какие параметры планируется отслеживать. Нужно щелкнуть по ссылке Administration, которая находится в правой верхней части экрана. Под этой строкой должен появиться список элементов, которыми пользователь может управлять. Щелкните по ссылке Users and Customers - ниже появится дополнительная строчка. Щелкните по ссылке Customers для вызова главного меню настройки клиентов.
Теперь надо добавить клиента - следует щелкнуть по ссылке Add. Этот шаг необходим, поскольку JFFNMS требует, чтобы каждый хост и интерфейс принадлежали определенному клиенту. В противном случае JFFNMS генерирует сообщение об ошибке, в котором говорится, что данный хост или интерфейс не настроен соответствующим образом. Эти сообщения об ошибках мешают просмотру журнала событий JFFNMS, так что необходимо создать по крайней мере один клиент, которому можно будет назначить все оборудование.
После создания клиента перед определением хостов для мониторинга требуется определить в JFFNMS некоторые зоны. Зоны являются средством логического объединения групп устройств - здесь может использоваться любой принцип, но чаще всего применяется географический - по местам расположения офисов, по этажам и т. п. Необходимо выбрать ссылку Hosts and Interfaces во второй строке меню Administration, а затем выбрать Zones. Определите новые зоны - для этого нужно щелкнуть по ссылке Add и ввести имена зон.
Когда все зоны определены, можно добавлять хосты. Следует щелкнуть ссылку Hosts and Interfaces в первой строке меню Administration и в появившейся строке меню выбрать Hosts для вызова главной страницы Hosts Administration (см. экран 1).
Щелчок по ссылке Add вызывает таблицу, в которую следует ввести сведения о хосте, мониторинг которого предстоит осуществлять. Нужно ввести имя хоста - это имя представления хоста в JFFNMS, которое может не совпадать с реальным именем. Далее из выпадающего списка требуется выбрать зону и в последнем поле ввести адрес IP. Поле TACACS Source IP для серверов Windows не понадобится (TACACS — Terminal Access Controller Access Control System). Необходимо убедиться, что флажок Polling установлен, это указывает на то, что JFFNMS будет опрашивать хост. В поле Satellite следует оставить значение по умолчанию Local.
Следующие два поля определяют значения параметров ReadOnly SNMP Community и ReadWrite SNMP Community для сервера Windows, их значения описаны во врезке «Настройка SNMP». И два последних поля - AutoDiscovery и AD Default Customer. Возможность автоопроса AutoDiscovery значительно облегчает задачу, поскольку позволяет автоматически получить большое количество дополнительных сведений о хосте, так что выберите для этого поля значение Automatic configuration. В поле AD Default Customer нужно выбрать имя, которое должно быть присвоено новым объектам, обнаруживаемым JFFNMS на целевом сервере. Щелкните Submit для сохранения сведений о хосте в базе данных JFFNMS и возврата на страницу Administration. Для добавления новых хостов следует повторить описанную выше процедуру.
После добавления всех хостов, мониторинг которых необходим, нужно выбрать Hosts из меню Views в верней части страницы Hosts Administration - на экране появятся значки добавленных систем. Цвет значка может быть зеленым, голубым или фиолетовым, в зависимости от состояния автоматического определения хоста, либо желтым или красным - если JFFNMS обнаружил ошибки или предупреждения для данного хоста. Процесс автоматического определения может потребовать более получаса в зависимости от установленного для фоновых процессов расписания и от количества объектов для автоматического определения. Предоставьте JFFNMS столько времени, сколько ему потребуется.
После завершения автоматического обнаружения нужно щелкнуть по значку устройства, чтобы просмотреть информацию о данном интерфейсе, которую собрала JFFNMS. На экране 2 приведены сведения о тестовом сервере - в том числе сведения об открытых портах TCP, обнаруженных NMapWin (удобно для экспресс-проверки безопасности), сведения о сетевом адаптере, подсистемах хранения данных (дисковые накопители и виртуальная память) и количество процессоров. Все эти сведения автоматически определяются для интерфейсов, мониторинг которых JFFNMS осуществляет автоматически, используя значения по умолчанию.
Для вывода более подробных сведений об устройстве, собранных JFFNMS, следует выбрать в выпадающем списке Views элемент Hosts & Events. В этом режиме отображаются хосты или интерфейсы для выбранного хоста с соответствующим списком событий. Каждая строка события в списке содержит время, когда произошло событие, и значок предупреждения, указывающий на первый случай возникновения данного события. Если необходимо выяснить причину события, можно вручную подтвердить прием предупреждения и предпринять некоторые действия с помощью полей в конце списка событий. Если причина в дальнейшем была устранена (например, связь на минуту была потеряна, а затем снова восстановлена), JFFNMS автоматически определяет и сбрасывает все связанные предупреждения. Как уже говорилось, в зависимости от текущего состояния хоста цвет значка может быть голубым, фиолетовым, зеленым, желтым или красным. Например, когда в JFFNMS был добавлен мой тестовый сервер, JFFNMS автоматически определила, что занято более 80% виртуальной памяти, и выдала желтый предупреждающий знак, как показано на экране 3.
В ходе испытания JFFNMS было обнаружено, что после полного автоматического определения устройства следует отключить обнаружение устройства, поменяв режим обнаружения c automagic на no discovery. Дело в том, что в режиме работы устройства постоянно происходит временное открытие и закрытие портов. JFFNMS обнаруживает эти временные порты, если они оказываются открыты во время цикла повторного сканирования системы, и добавляет их в список данного хоста. Со временем могут накопиться сотни таких интерфейсов, что мешает просмотру и замедляет работу JFFNMS. Если вы изменили конфигурацию хоста, добавив новые службы, всегда можно прибегнуть к процедуре ручного обнаружения, которая будет описана ниже.
После сбора полной информации о системе JFFNMS позволяет просматривать подробные сведения о хостах и настраивать интерфейсы (т. е. элементы для мониторинга) для каждого из устройств. В следующих разделах мы рассмотрим подробнее типовые ситуации мониторинга и задачи, которые можно настроить для целевых хостов.
Проверка контента
Если на целевой системе установлены службы для выхода в Internet, вы можете настроить процедуру проверки контента, проверяя не только доступные порты TCP, но и то, что службы (почтовый сервер, FTP и Web-сервер) правильно отвечают на запросы подключения. Скажем, необходимо настроить проверку того, что на каждый входящий запрос подключения почтовый сервер возвращает баннер ESMTP MailEnable Service. Для этого достаточно настроить проверку контента для данного интерфейса - порта 25 TCP, назначенного по умолчанию для порта SMTP.
Для настройки проверки контента следует выбрать Administration, Hosts & Interfaces, Hosts, а затем View Interfaces рядом с именем сервера, мониторинг которого предстоит настроить. На экране появится список интерфейсов, как показано на экране 4. Вы можете настроить параметры для любого из перечисленных интерфейсов или удалить те их них, которые вас не интересуют (именно здесь можно очистить лишние данные, возникающие при автоматическом обнаружении). Если интерфейсов слишком много и они не помещаются на один экран, можно щелкнуть Next в нижней части страницы для перехода на следующий экран.
Для выбранной нами задачи - проверки баннера SMTP - следует отредактировать свойства интерфейса, назначенного порту 25. Для этого нужно щелкнуть ссылку Edit в строке интерфейса. В редакторе интерфейса добавляем значение ESMTP MailEnable Service для объекта Check Content RegExp. Тем самым мы сообщили JFFNMS, что необходимо не только проверять доступность порта, но и что при подключении к порту клиент получает корректный отклик. Если к порту не удается подключиться или ответ неверен, JFFNMS генерирует предупреждение для данного интерфейса.
Статистика и графики
После обнаружения доступных ресурсов на хосте JFFNMS автоматически начинает собирать и отображать показатели, которые обычно требуются администраторам для анализа работы системы, например загрузку процессоров и сети, количество процессов в памяти и соединения TCP. Чтобы просмотреть графики для определенного интерфейса, следует перейти в Administration, Hosts & Interfaces, Hosts, после чего щелкнуть по значку интерфейса, например дисковому накопителю, процессору или сетевому интерфейсу. При этом графическая подсистема JFFNMS строит график истории использования ресурса, как показано на экране 5, где приведен график загрузки процессора для тестовой системы. Можно настроить вид отображения данных, выбирая различные типы из списка Graph Type, расположенного в левой верхней части, или различные временные интервалы в списке Time Present.
Если требуется одновременно просматривать несколько графиков на одной странице, следует выбрать Administration, Reports, Performance Graphs. Здесь можно настроить одновременный просмотр различных параметров мониторинга устройства, получив, таким образом, приборную панель мониторинга состояния системы. Я обнаружил, что такое представление при выборе длительного интервала времени чрезвычайно удобно для диагностики возникающих проблем. Эти графики также очень помогают при устранении неисправностей и мониторинге в реальном времени, если сузить временной интервал примерно до одного часа. Графики обновляются постоянно (приблизительно раз в две минуты), что позволяет оперативно следить за использованием ресурсов на удаленном хосте.
JFFNMS отслеживает успешные и неуспешные подключения к портам и позволяет формировать отчеты о статистике доступности ресурсов. Была ли система доступна 100% времени или только 80%? JFFNMS для ответа на этот вопрос позволяет построить отчет State & Availability. Для получения отчета о доступности системы нужно выбрать Administration, Reports, State & Availability, выбрать хост, имя клиента или другой элемент, статистика доступности которого вас интересует. Вы увидите отчет, подобный приведенному на экране 6. Как видно из экрана, служба HTTP на одном из серверов не работала в течение 3 минут 57 секунд, таким образом, доступность службы снизилась до 99,863%.
Мониторинг состояния служб и процессов
Еще одна полезная функция JFFNMS - возможность запрограммировать опрос целевого компьютера на наличие определенного процесса в памяти. Это позволит убедиться в непрерывности исполнения критических служб в системе.
Данные SNMP, доступные на каждом сервере Windows, включают список исполняемых процессов на момент выполнения запроса. Процессы, как правило, определяются по имени исполняемого файла или короткому названию службы. Например, на компьютере, исполняющем IIS, всегда должен присутствовать в памяти процесс inetinfo.exe, а при работе сервера Exchange Server в памяти присутствует процесс store.exe. По умолчанию JFFNMS не включает мониторинг этих процессов при выполнении автоматического обнаружения в режиме automagic, так что, если такой мониторинг необходим, его придется настроить вручную.
Для этого можно выполнить ручное обнаружение на хосте, процессы на котором требуется отслеживать, а затем выбрать интересующие процессы из полученного списка. Выберите Administration, Hosts and Interfaces, Hosts. Далее для интересующего сервера следует щелкнуть Manual Discovery. Перечисление всех процессов может занять несколько минут.
Когда JFFNMS вернет результат запроса, просмотрите список выполняющихся на хосте процессов. В этот список попадают системные службы, исполняющиеся на рабочем столе и на панели задач приложения (да, с помощью JFFNMS можно следить за тем, чтобы на компьютере всегда работал Notepad). Выберите интересующие вас процессы и установите для них флажок в поле Action. При этом JFFNMS будет проверять выполнение выбранных процессов при каждом сеансе опроса хоста. Если в какой-то момент JFFNMS не обнаружит выбранный процесс, красный значок предупреждения будет появляться до тех пор, пока нужный процесс не будет обнаружен вновь.
Когда вы освоите JFFNMS и научитесь настраивать мониторы и минимизировать «шум» (предупреждения, которые в действительности не являются важными или просто нерелевантны), возможно, вы решите настроить JFFNMS на отправку уведомлений только в тех случаях, когда в сети возникают проблемы, действительно требующие внимания. JFFNMS позволяет настроить пользовательские уведомления по электронной почте - для этого необходимо настроить адрес уведомления на странице настройки Profile, Profile Values. При этом следует иметь в виду, что для отправки почтовых сообщений применяется PHP, так что для использования почтовых уведомлений необходимо корректно настроить подключение к почтовому серверу в файле php.ini на этапе установки JFFNMS.
Таким образом, JFFNMS может оказаться исключительно полезным средством мониторинга корпоративной сети с хостами Windows, коммутаторами, маршрутизаторами, брандмауэрами и другими устройствами. JFFNMS предоставляет развитые средства мониторинга и настройки событий, легко настраивается на конкретные нужды и не требует при этом использования каких-либо агентов. Я применяю JFFNMS для мониторинга своих систем и систем клиентов и надеюсь, что этот проект получит дальнейшее развитие.
Настройка SNMP
Перед установкой JFFNMS на станции мониторинга необходимо включить поддержку SNMP, а для этого полезно познакомиться с базовыми концепциями SNMP. Во-первых, SNMP генерирует два типа сообщений: от ловушек (traps) и запросы Get и Set. Целевое устройство формирует сообщения типа trap (trap messages) и посылает их на консоли управления. Например, система Windows воспринимает отвергнутую попытку регистрации пользователя в сети, которая фиксируется в журнале безопасности как событие SNMP TRAP. Это событие не связано с конкретным событием в системе (использование процессора или диска), но тем не менее содержит ценную информацию и должно регистрироваться системой мониторинга. SNMP предоставляет системам возможность сообщать о возникновении таких событий на одну или несколько консолей управления. SNMP использует запрос Get для опроса определенного типа показателей (текущая загрузка процессора, количество сетевых пакетов и т. п.) и направляет запрос Set для управления показателями устройства, например когда нужно заблокировать или разблокировать порт на коммутаторе Ethernet.
JFFNMS лучше работает с запросами Get и Set, поскольку в настоящее время в нем не реализован прямой механизм для получения сообщений SNMP от ловушек. Кроме того, я обнаружил, что благодаря мониторингу доступности портов, проверке контента и доступности служб необходимость в мониторинге SNMP TRAP заметно снижается.
По умолчанию Microsoft не поддерживает SNMP в стандартном варианте системы, так что для загрузки SNMP придется воспользоваться модулем установки и удаления программ панели управления. Для установки SNMP на компьютер нужно выбрать Add/Remove Windows Components и Management and Monitoring Tools, щелкнуть Details и выбрать установку SNMP. После того как служба SNMP будет запущена, необходимо убедиться, что для нее выбран режим автоматического запуска. Не следует углубляться в детали настройки службы SNMP Trap - для решения нашей задачи это не потребуется, так как JFFNMS не обрабатывает SNMP Traps.
После включения поддержки SNMP необходимо выполнить настройку SNMP таким образом, чтобы разрешить консоли мониторинга получение информации через запросы Get. В SNMP существует два базовых механизма, которые устанавливают, кто имеет, а кто не имеет права посылать на устройство запросы Get. Первый способ представляет собой разновидность открытого ключа, который в данном контексте называется также идентификационной строкой (community string). Идентификационная строка определяет набор действий, которые разрешено выполнять с данным устройством через SNMP тому, кто передал данную идентификационную строку. Так, идентификационные строки с правами доступа только для чтения позволяют удаленным системам запрашивать статус устройства, но не разрешают изменять его настройки. Идентификационные строки типа чтение/запись позволяют получать и устанавливать значения параметров устройства. Каждая система, которая направляет запросы типа Get или Set, должна указать соответствующую идентификационную строку, в противном случае служба SNMP устройства проигнорирует полученный запрос. Таким образом, для настройки мониторинга необходимо настроить идентификационные строки на консоли мониторинга и отслеживаемых устройствах, как показано на экране А. В приведенном примере значения public и private используются исключительно для примера, их нельзя применять в реальной работе, поскольку это общеизвестные значения по умолчанию для многих систем с поддержкой SNMP. И еще одно важное замечание. Я советую не настраивать без необходимости доступ в режиме чтение/запись - для задач мониторинга доступа в режиме только чтение для JFFNMS вполне достаточно.
При необходимости повысить безопасность использования SNMP следует указать адреса IP, которые имеют право направлять запросы на целевые устройства, как показано в нижней части диалогового окна на экране А. Некоторые организации могут задействовать эту настройку для мониторинга своих устройств через Internet, просто открывая соответствующий порт SNMP на брандмауэре. Если вы решитесь воспользоваться таким способом доступа, не забудьте настроить соответствующие ограничения адреса IP для порта SNMP на брандмауэре. Если на брандмауэре еще нет определения протокола SNMP, следует использовать протокол UDP для портов 161 (SNMP) и 162 (SNMPTRAP).
Наконец настройка завершена. Вам не надо устанавливать агентов от других разработчиков, разрешать удаленную регистрацию пользователей, таким образом, не требуется делать доступными сетевые протоколы Microsoft для целевых устройств, что немаловажно с точки зрения безопасности. Для автоматизации настройки параметров SNMP в корпоративной сети можно воспользоваться репликацией соответствующих изменений в реестре через объекты групповых политик (GPO). Информация о настройке SNMP хранится в разделе реестра HKEY_LOCAL_MACHINESYSTEMCurrentControlSet ServicesSNMPParameters в параметрах ValidCommunities и PermittedManagers.
И последнее замечание относительно настройки SNMP: после активации SNMP, даже в режиме только для чтения, данные о системах в сети могут оказаться доступными любому, кто знает соответствующую идентификационную строку (community string) и может направить запрос на один из серверов. Позаботьтесь о том, чтобы запретить передачу трафика SNMP за пределы брандмауэра, защищающего сеть от внешнего мира.
SNMP - основа JFFNMS
Протокол SNMP был разработан в середине 80-х годов прошлого века для удаленного управления и мониторинга сетевых устройств. Изначально задачей SNMP был сбор показателей производительности для различных устройств, таких как маршрутизаторы и концентраторы, чтобы администраторы сетей могли настраивать определенные параметры устройств в удаленном режиме. Акроним SNMP расшифровывается как Simple Network Management Protocol - простой протокол управления сетью. «Простой» в данном случае означает, что для реализации этого протокола не требуется значительных дополнительных расходов, одной из причин такого упрощения был очень ограниченный объем собственной памяти сетевых устройств. Поэтому все дополнительные определения для параметров мониторинга, типов данных и другая существенная информация сохранялись на системе, осуществляющей мониторинг, а не на объекте мониторинга. Эти параметры хранились в файле MIB (Memory Information Block) - стандартный способ сохранять сведения о параметрах объектов мониторинга сетевых устройств. Сохранение параметров в базе MIB обеспечивает возможность достаточно простого внедрения и осуществления новых стандартов мониторинга - для изменения параметров, как правило, требовалось загрузить новый файл MIB в систему мониторинга.
Протокол SNMP описан в стандарте RFC 1157, опубликованном IETF в апреле 1990 года. Microsoft включила поддержку SNMP в свои продукты начиная с Windows NT. В последующие годы компания последовательно развивала собственную систему WMI (Windows Management Instrumentation - инструментарий управления Windows), практически не расширяя поддержку SNMP. WMI предоставляет просто колоссальный объем информации о системах Windows и широкие возможности управления. Но возможности мониторинга WMI по определению ограничены исключительно системами Windows. Если необходимо осуществлять мониторинг хостов под управлением Windows, Linux, Solaris и т. д., а также других сетевых устройств - коммутаторов, маршрутизаторов, брандмауэров, безусловно, следует обратить внимание на SNMP.
Редактор журнала Windows IT Pro. help@toombs.us