Рубрика:
Администрирование /
Мониторинг
|
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|
СЕРГЕЙ ЯРЕМЧУК, фрилансер. Автор более 800 статей и шести книг. С «СА» с первого номера. Интересы: сетевые технологии, защита информации, свободные ОС
Cacti – простой и удобный инструмент для мониторинга и анализа сети
По мере увеличения размеров сети все более актуальным становится обеспечить ее бесперебойную работу и своевременно находить проблемные участки. Добиться этого можно, только проводя постоянный мониторинг.
Можно выделить несколько задач, решаемых с использованием приложений, предназначенных для мониторинга сетевых и системных ресурсов. Исходя из них, сформулировать требования к системе мониторинга. В первую очередь это контроль доступности и рабочих характеристик серверов, сервисов и активного оборудования, оценка загруженности и доступности канала передачи информации. Такая система должна быть способной накапливать всю собранную информацию об объектах мониторинга. В дальнейшем используя временные характеристики, можно быстрее разобраться с возникшей проблемой. Для просмотра статистики необходим удобный интерфейс, с помощью которого можно быстро составлять необходимые запросы. Желательна возможность мониторинга в реальном времени. Сам по себе контроль – это половина задачи, система мониторинга должна уметь предупреждать администратора о появлении проблем (пропадание канала, сервиса) или превышении допустимого порога одного из наблюдаемых параметров (загрузка процессора, свободное место на дисках).
Существует большое количество Open Source-систем мониторинга: Nagios, базирующийся на нем Oreon, MRTG, RRDtool, небольшой Cricket, Zabbix, NetMRG и прочие. Соответственно и задачу можно решить разными способами и инструментами. Сегодня подробно рассмотрим лишь один из них.
Проект Cacti
Cacti является удобным интерфейсом к RRDTool. С его помощью можно контролировать большое количество различных параметров, таких как загрузку систем и сетей, с выводом всевозможных графиков. Cacti без проблем будет работать в сетях любого размера, как маленьких, так и больших, со сложной разветвленной топологией. В качестве источника данных могут быть использованы любые внешние команды или сценарии с любыми параметрами, которые нужно собрать, реализована поддержка SNMP. Интерфейс написан на PHP, вся собранная информация сохраняется в базе данных MySQL. Распространяется Cacti по лицензии GNU GPL.
Одним из требований при его создании было построение легкого в использовании интерфейса. Центральным звеном в этой системе являются графики. Все контролируемые параметры и настройки так или иначе привязаны к графикам. Графики статистик представлены в виде дерева, в котором графики сгруппированы по своим критериям. Причем один и тот же график может находиться в разных частях дерева. Например, при выводе сетевой статистики системы и при показе информации о конкретном сетевом устройстве. Это очень удобно, не нужно искать по вкладкам нужный график, вся информация всегда под рукой. Все графики можно быстро собрать в одном месте щелчком мышки в Graph Management. Пользователь может самостоятельно создавать графики, используя заранее подготовленные шаблоны. Шаблоны – это один из больших плюсов Cacti. Нет необходимости вникать в особенности работы RRDTools, просто выбираем шаблон, и график готов. При необходимости параметры любого созданного графика можно просмотреть и уточнить. Каждый график описывается двумя элементами: параметры настроек, определяющие свойства графика, и элементы, определяющие данные, которые должны быть представленными на нем. Информацию, выводимую графиком, можно на лету уточнять, например, изменяя временной промежуток, выделив его мышкой, или создавая новые источники на основе имеющихся данных. При необходимости можно обеспечить доступ к графикам нескольким пользователям. При этом каждому пользователю могут быть назначены четко заданные права, как на просмотр только «своих» или добавление графиков.
Установка Cacti
Для работы Cacti потребуется наличие MySQL, PHP, RRDTool, net-snmp и веб-сервера с поддержкой PHP (Apache или IIS). Причем в процессе работы обнаружилось, что Cacti не «дружит» с Suhosin (расширение к PHP для усиления безопасности). На сайте проекта доступны архивы для Linux/Windows и ссылки на пакеты для дистрибутивов, использующих RPM, ebuild Gentoo, оpenSUSE. Можно использовать CVS или архив с текущей сборкой. Хотелось бы обратить особое внимание на ресурс CactiUsers [2]. Здесь предлагается патч, позволяющий добавить в Cacti поддержку плагинов, и доступно 11 плагинов разной степени готовности. Например, плагин Discovery способен находить неизвестные Cacti устройства, поддерживающие SNMP, есть просмотрщик сообщений Netflow, Ntop и syslog, плагин для работы по SSL, плагин состояний узлов и некоторые другие. Также предлагается дистрибутив CactiEZ (пока бета 0.2), построенный на основе CentOS 4.3, содержащий настроенный Cacti с поддержкой плагинов и самими плагинами, а также 305 пакетов, среди которых Net-SNMP, Netflow, Webmin, eAccelerator и прочие. Если для мониторинга будет использован отдельный компьютер, то CactiEZ – хороший кандидат для использования на нем.
В репозитарии дистрибутива Ubuntu 6.06, который использовался при тестовой установке, пакет Cacti есть:
$ sudo apt-cache search cacti
cacti-cactid - Multi-Threading poller for cacti
cacti - Frontend to rrdtool for monitoring systems and services
|
В пакет Cacti входят все необходимые для работы компоненты, а cactid является заменой стандартному cmd.php. Он написан на С, использует POSIX и связан с библиотеками net-snmp. Им рекомендуется подменять cmd.php в тех случаях, когда стандартный вариант не справляется с нагрузкой. Актуальной на момент написания статьи была версия 0.8.6j. В версии 0.8.6h, которая доступна в репозитарии, были обнаружены ошибки, связанные с безопасностью, поэтому будем устанавливать из архива. Команда:
$ sudo apt-cache depends cacti
в Ubuntu выдает длинный список пакетов. Чтобы не разбираться с ними персонально, лучше использовать команду:
$ sudo apt-get -d install cacti
и затем установить с помощью dpkg все пакеты, кроме Сacti. Скачиваем пакет с Сacti:
$ wget -c http://www.cacti.net/downloads/cacti-0.8.6j.tar.gz
Распаковываем:
$ cd /var/www
$ tar -xzvf /tmp/cacti-0.8.6j.tar.gz
На момент установки было доступно четыре патча, устанавливаем их:
$ sudo cd cacti-0.8.6j
$ sudo wget http://www.cacti.net/downloads/patches/0.8.6j/ping_php_version4_snmpgetnext.patch
$ sudo wget http://www.cacti.net/downloads/patches/0.8.6j/tree_console_missing_hosts.patch
$ sudo wget http://www.cacti.net/downloads/patches/0.8.6j/thumbnail_graphs_not_working.patch
$ sudo wget http://www.cacti.net/downloads/patches/0.8.6j/graph_debug_lockup_fix.patch
$ sudo patch -p1 -N < ping_php_version4_snmpgetnext.patch
$ sudo patch -p1 -N < tree_console_missing_hosts.patch
$ sudo patch -p1 -N < thumbnail_graphs_not_working.patch
$ sudo patch -p1 -N < graph_debug_lockup_fix.patch
В примере в качестве рабочего каталога Cacti использован каталог веб-сервера. Можно поместить его в другое место, а в конфигурационном файле веб-сервера указать путь к нему, как это сделано в пакетах Ubuntu:
$ cat /etc/cacti/apache.conf
Alias /cacti /usr/share/cacti/site
<DirectoryMatch /usr/share/cacti/site>
Options +FollowSymLinks
AllowOverride None
order allow,deny
allow from all
</DirectoryMatch>
Оба варианта будут работать, поступайте, как вам удобнее. Переименовываем каталог:
$ sudo mv cacti-0.8.6j cacti
Если MySQL еще не работает, запускаем его:
$ sudo /etc/init.d/mysql start
Создаем новую базу данных cacti:
$ mysqladmin --user=root create cacti
И заполняем ее, используя подготовленный шаблон:
$ mysql -u root cacti < cacti.sql
Теперь даем все необходимые права специальному пользователю:
$ mysql -u root cacti
mysql> GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'cactipassword';
Query OK, 0 rows affected (0.06 sec)
mysql> flush privileges;
Query OK, 0 rows affected (0.03 sec)
mysql> quit
Bye
|
Указываем в конфигурационном файле Cacti информацию, необходимую для соединения с базой данных.
$ mcedit ./include/config.php
/* make sure these values refect your actual
database/host/user/password */
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "cactipassword";
$database_port = "3306";
В пакетах Ubuntu этот участок вынесен в отдельный файл, находящийся в /etc/cacti, который подключен в config.php с помощью Include. Создаем в системе пользователя, от имени которого будут выполняться процессы Cacti:
$ sudo adduser --no-create-home --disabled-password --disabled-login cactiuser
Делаем веб-сервер хозяином файлов в каталоге cacti:
$ sudo chown -R www-data:www-data cacti/
А в двух подкаталогах внутри пользователя cactiuser:
$ sudo chown -R cactiuser cacti/rra/ cacti/log/
Далее необходимо обеспечить периодический запуск скрипта poller.php посредством cron:
$ sudo mcedit /etc/crontab
*/5 * * * * cactiuser php /var/www/cacti/poller.php >/dev/null 2>/var/log/cacti/poller-error.log
На этом установка Cacti завершена. Желательно в первый раз проверить работу вручную:
$ sudo php /var/www/cacti/poller.php
OK u:0.02 s:0.02 r:1.21
OK u:0.02 s:0.02 r:1.22
OK u:0.02 s:0.02 r:2.14
03/10/2007 03:29:35 PM - SYSTEM STATS: Time:3.2891 Method:cmd.php
Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:5
RRDsProcessed:5
OK u:0.02 s:0.02 r:2.19
OK u:0.02 s:0.02 r:2.19
|
Если вывод скрипта получился такой, идем дальше. Иначе необходимо проверить еще раз, что все сделано правильно.
Создание графиков в Cacti
Набираем в строке веб-браузера http://host_name/cacti и попадаем в Cacti Installation Guide, в котором необходимо пройти еще несколько шагов для настройки Cacti. На первом шаге выбираем «New Install» (или «Upgrade from 0.8.x.» при обновлении), здесь же выводится информация, взятая с include/config.php. Следует еще раз проверить ее корректность. Далее скрипт проверяет наличие всех необходимых для работы утилит. Если он их находит, напротив зеленым цветом будет отмечено FOUND, иначе необходимо будет указать полный путь к утилите самостоятельно (см. рис. 1). В этой же вкладке указываем версию SNMP (NET-SNMP 5.x или UCD-SNMP 4.x) и версию RRDTool (1.2 или 1.0). Все настройки затем можно сменить уже в процессе работы, зайдя в «Cacti Settings». После всего нажимаем на «Finish». Теперь регистрируемся как пользователь admin с паролем admin. В следующем окне вас заставят изменить пароль.
Рисунок 1. Настройка Cacti
По умолчанию в Cacti заведен только контроль четырех параметров (память, загрузка процессора, пользователи и процессы) локальной системы. В левом верхнем углу страницы две вкладки:
- Console – здесь настраиваются графики, параметры Cacti, учетные записи пользователей, расположены некоторые утилиты;
- Graphs – здесь найдете все графики, созданные в console.
Дальнейшая работа будет состоять из трех вариантов:
- создание нового сетевого устройства;
- создание графиков для старых и новых устройств;
- проверка их работоспособности.
Для создания нового устройства выбираем в первом окне ссылку «Create devices» или в поле «Management -> Devices». В появившемся окне заведен только localhost. Если в поле Status напротив localhost установлено «Disabled», включаем его. Для этого отмечаем нужное устройство флажком, затем в списке «Choose an action» выбираем «Enable», в следующем окне подтверждаем включение нового устройства.
Для добавления нового устройства нажимаем Add в правом верхнем углу и в появившемся окне заполняем описание (Description) имя или IP-адрес узла. В Host Template указываем шаблон и параметры SNMP (см. врезку «Настройка SNMP») (см. рис. 2).
Рисунок 2. Создание нового устройства
После нажатия кнопки «Create» переходим в следующее окно. Если Cacti удалось соединиться с указанным узлом, информация о нем будет выведена в самом верху страницы. Иначе появится надпись «SNMP Failed», следует вернуться и проверить настройки. Это окно похоже на предыдущее, только добавились два поля «Associated Graph Templates» и «Associated Data Queries».
Обратите внимание на столбец Debugging, нажав на ссылку «Verbose Query» напротив сформированного графика, можно просмотреть запрос и его результат (см. рис. 3).
Рисунок 3. Просмотр свойств запроса при создании графика
Таким образом, на этапе настройки можно выяснить, будет ли работать этот график. После добавления в «Associated Graph Templates» в поле Status появится надпись «Not Being Graphed». Это означает, что график еще не сформирован, и это пока не должно вас волновать. После первого же запроса здесь появится «Is Being Graphed», рядом с которой будет надпись «Edit». Нажатие на нее позволит отредактировать параметры этого графика.
После добавления шаблонов нажимаем «Create Graphs for this Host» и переходим в страницу создания графиков, отмечаем нужные и еще раз нажимаем «Create». Здесь для уточнения доступны: цвет и тип будущих графиков, максимальное значение параметров, подпись и прочее. Вернувшись обратно в дерево устройств, включаем новое устройство и затем, выбрав в том же списке «Place on a tree», помещаем его в дерево устройств. Теперь новое устройство и его графики будут доступны для просмотра во вкладке «Graphs» (см. рис. 4).
Рисунок 4. Графики Cacti
Настройка вкладки «Console»
Все созданные графики можно найти в меню «Graph Management», где их можно быстро копировать, удалить, создать на их основе новый шаблон, изменить узел. По умолчанию все графики будут выводиться в корне дерева, если количество узлов велико, зайдя в «Graph Trees», можно создать новые ветки дерева, разместив в нем графики более логично. В «Sorting Type» вверху страницы можно выбрать вид сортировки. Изначально установлена ручная сортировка, для перемещения графиков по ветке дерева следует использовать стрелки. Можно выбрать сортировку по имени или по номеру.
Следует ознакомиться и с параметрами в «Configuration > Setting», здесь имеется шесть вкладок:
- General – настройка информации, заносимой в журнал, и куда будут заноситься события (файл/syslog), на этапе отладки, следует включить «Poller Logging Level» в HIGH или DEBUG, чтобы полностью контролировать все запросы, здесь же настраиваются параметры SNMP;
- Paths – указываются пути ко всем утилитам, используемым Cacti, а также, если нужно, и cactid;
- Poller – настройка работы системы сбора информации, здесь можно переключаться между cmd.php или cactid, а также настраивается проверка доступности узлов;
- Graph Export – здесь можно настроить экспорт графиков (в том числе и автоматический) в локальный файл или по протоколу ftp, sftp;
- Visual – параметры вывода графиков, размерность сетки, размер шрифта и прочее;
- Authentication – аутентификация пользователей, локальная или LDAP, и настройки сервера LDAP.
В меню «Utilities -> System Utilities» можно просмотреть журнал работы Cacti. Удобно, что в зависимости от результата записи имеют разный цвет (см. рис. 5), что помогает визуально определить неудачные запросы, причем можно сразу же перейти по гиперссылке в настройку устройства или отдельного графика. Отсюда же можно просмотреть журнал захода пользователей, кэш Pollerа и SNMP-запросов.
Рисунок 5. Журнал работы Cacti
По умолчанию в Cacti созданы два пользователя admin и guest. Последний не имеет пароля и позволяет пользователю только просматривать графики загрузки локальной системы.
Для добавления пользователей переходим в «User Management» и выбираем «Add». Появится окно редактирования свойств нового пользователя.
На первой странице вводим имя, пароль пользователя (активация «User Must Change Password at Next Login» заставит пользователя сменить пароль при первой регистрации), в «Login Options» указываем, что будет выведено после регистрации.
Теперь появились еще три вкладки: «Realm Permissions», «Graph Permissions» и «Graph Settings», в которых более тонко настраиваются параметры доступа к графикам.
В «Realm Permissions» указываем на операции, которые сможет осуществлять пользователь. После выбора нужных параметров нажимаем «Create». Пользователь пока не активирован, следует еще раз выбрать настройку пользователя.
Установка плагинов Cacti
Без краткого рассказа о плагинах Cacti статья была бы неполной. Cacti – самодостаточная система, и в большинстве случаев ее возможностей должно хватить, но с помощью плагинов можно несколько расширить ее функциональность. Устанавливаются плагины очень просто. Сначала необходимо пропатчить Cacti. Это можно сделать на уже работающей системе без какого-либо ущерба.
$ cd cacti; sudo tar -xzvf /home/grinder/source/cacti/cacti-plugin-arch.tar.gz
$ sudo patch -p1 -N < cacti-plugin-arch/cacti-plugin-0.8.6j.diff
Проверяем параметры внутри config.php, кроме того, в нем появились новые строки, требующие редактирования. Так, строка:
$config['url_path'] = "/";
означает, что при обращении к серверу Cacti используется адрес http://host_name/, если вводится адрес вроде http://host_name/cacti/, следует строку изменить на:
$config['url_path'] = "/cacti/";
Теперь установим один из плагинов, у каждого есть свои особенности. Например, Discovery устанавливается так. Переходим в подкаталог cacti/plugins, который был создан при установке патча:
$ cd cacti/plugins
Распаковываем архив:
$ tar xzvf discovery-0.7.tar.gz
Создаем новые таблицы.
$ mysql -u root -p cacti < discovery/discover.sql
Каждый плагин описан в массиве $plugins файла config.php. Изначально в нем записей нет.
$plugins = array();
Для того чтобы добавить к нему плагин, в строке ниже дописываем элемент с названием каталога установленного плагина. Для некоторых плагинов это единственное, что требуется сделать для их установки. В нашем случае это discovery.
$plugins[] = 'discovery';
Теперь в «Configuration -> Setting» появилась еще одна вкладка «Misc», предназначенная для настроек плагинов. Для discovery в ней требуется указать подсеть для сканирования, метод сканирования (ICMP, TCP, UDP), коммьюнити SNMP и период. После этого discovery будет сообщать вам, если найдет узел, поддерживающий SNMP и неизвестный Cacti. Неплохой плагин tools, после его установки в «Console -> Utilities» появится новое меню, в котором можно будет проверять работу сервисов на указанном узле или просматривать ответ SNMP (см. рис. 6).
Рисунок 6. Результат работы плагина tools
Советую также установить и плагин thold, с помощью которого можно отсылать сообщения. После его установки (только запись в config.php) в «Setting» появится еще одна вкладка. В ней требуется указать лишь почтовые адреса, на которые будут приходить сообщения, события (ошибки, тревоги и прочие), и способ отправки (PHP, SMTP, Sendmail) c необходимыми параметрами доступа. Появится и отдельная вкладка «Threhld», в которой можно затем их просмотреть оптом.
Настройка любой системы мониторинга – задача кропотливая и весьма индивидуальная, поэтому обо всех вариантах рассказать не получится. Но, как видите, Cacti – очень простая в установке и использовании система, которая позволяет настроить систему мониторинга человеку, незнакомому со всеми тонкостями SNMP.
Приложение
Настройка SNMP
Для того чтобы настроить поддержку SNMP в Linux, вам понадобится пакет snmpd (или net-snmp). После его установки вводим «snmpconf -i» и далее в интерактивном режиме отвечаем на вопросы. Пунктов и подпунктов здесь достаточно. Минимум, что требуется сделать – выбрать в первом окне конфигурационный файл snmpd.conf, затем «Access Control Setup», здесь несколько вариантов, для большинства ситуаций подойдет «SNMPv3 read-only user», далее ввести имя пользователя, уровень безопасности и OID этого коммьюнити. Теперь переходим в секцию «Agent Operating Mode», выбираем «The IP address and port number that the agent will listen on» и указываем интерфейс, на котором будет агент отдавать данные. Конечно это не все, но для минимальной работы хватит.
- Сайт проекта Cacti – http://cacti.net.
- Сайт проекта CactiUsers – http://cactiusers.org.
Facebook
Мой мир
Вконтакте
Одноклассники
Google+
|