
cacti можно найти в портах. Что ж, это радует... Раньше cacti располагался в /usr/ports/net, но потом проект был перемещен в /usr/ports/net-mgmt.
# cd /usr/ports/net-mgmt/cacti |
Для самого cacti опции оставляю по дефолту. Но по ходу установки, подтягивается еще много разных вкусностей. Отдельно отмечу только опции для net-snmp:
Options for net-snmp 5.4.2.1_5 [ ] IPV6 Build with IPv6 support |
IPv6 мне незачем... А вот поддержка 64-битных счетчиков (опция MFD_REWRITES) пригодится. А то не видать нам на сетевых интерфейсах скорость выше 120 мегабит. 32-битные счетчики переполняются, и не дают отрисовки графиков. Тоесть были проблемы с отображением загрузки каналов на гигабитных интерфейсах. Решалось конфигурированием при сборке net-snmp. Теперь вот разработчики облегчили нам жизнь :)
Установка завершена... Вот сколько всего понадобилось для установки:
===> Cleaning for rrdtool-1.3.8 ===> Cleaning for php5-sockets-5.2.10 ===> Cleaning for php5-snmp-5.2.10 ===> Cleaning for intltool-0.40.6 ===> Cleaning for cairo-1.8.8,1 ===> Cleaning for pango-1.24.5 ===> Cleaning for net-snmp-5.4.2.1_5 ===> Cleaning for p5-XML-Parser-2.36_1 ===> Cleaning for xcb-util-0.3.5 ===> Cleaning for libXrender-0.9.4_1 ===> Cleaning for fontconfig-2.6.0,1 ===> Cleaning for pixman-0.15.4 ===> Cleaning for libXft-2.1.13 ===> Cleaning for glib-2.20.4 ===> Cleaning for xorg-fonts-truetype-7.4 ===> Cleaning for encodings-1.0.2,1 ===> Cleaning for gio-fam-backend-2.20.4 ===> Cleaning for gperf-3.0.3 ===> Cleaning for renderproto-0.9.3 ===> Cleaning for font-bh-ttf-1.0.0 ===> Cleaning for font-misc-meltho-1.0.0_1 ===> Cleaning for font-misc-ethiopic-1.0.0 ===> Cleaning for bitstream-vera-1.10_4 ===> Cleaning for mkfontscale-1.0.6 ===> Cleaning for bdftopcf-1.0.1 ===> Cleaning for font-util-1.0.1 ===> Cleaning for gamin-0.1.10_3 ===> Cleaning for mkfontdir-1.0.4 ===> Cleaning for libfontenc-1.0.4 ===> Cleaning for libXfont-1.3.4,1 ===> Cleaning for fontsproto-2.0.2 ===> Cleaning for cacti-0.8.7e |
Но не будем отвлекаться. Cacti успешно установился. И как "правильный" порт, вывел список необходимых действий для дальнейшей настроки:
Cacti is now installed. If you intall it for the first time, you may have to follow this steps to make it work correctly: 1. Create the MySQL database: |
Обновляем пути, и не спеша, потихоньку делаем, то что "просит" cacti. Начнем с того, что создадим БД и создадим пользователя MySQL с полными правами на созданную БД:
# rehash mysql> grant all privileges on `cacti`.* to 'cacti'@'localhost'; mysql> exit |
Импортируем дамп БД в MySQL:
# mysql -u cacti -p cacti < /usr/local/share/cacti/cacti.sql |
Далее правим конфигурационный файл до такого содержания:
# cat /usr/local/share/cacti/include/config.php <?php ?> |
Добавляем в cron запуск поллера каждые 5 минут и перестартовываем cron:
# echo '# Cacti poller' >> /etc/crontab |
Правим /usr/local/etc/apache22/httpd.conf. В раздел <IfModule alias_module> добавляем такие строки:
Alias /cacti "/usr/local/share/cacti/" <Directory "/usr/local/share/cacti/"> Options none AllowOverride Limit Order Deny,Allow Allow from all </Directory> |
Далее проверяем, не допустили ли мы ошибок при редактировании конфигурационного файла Apache и если все в норме - перечитываем конфигурацию:
# apachectl configtest |
Далее в адрессной строке браузера набиваем: http://ip_address_servera/cacti/
Если не допустили никаких ошибок, то в окне браузера откроется окошко начальной инсталяции cacti. Соглашаемся со всеми пунктами и по завершению установки попадаем на страницу авторизации. По умолчанию логин admin и пароль admin. После первой успешной авторизации будет предложено сменить пароль на какой-то другой. Установите пароль посложнее ;)
Далее рекомендую добавить себя как пользователя с полными правами, а стандартным пользователем admin не пользоваться. Пользователя guest можно вообще удалить. Для управления пользователями на закладке console в разделе Utilities выбираем пункт User Management. Чтобы добавить пользователя, в правом верхнем углу княпаем на линк Add. Далее - думаю разберетесь. Только не забудьте выставить себе полностью все права и установить галочку напротив пункта "Enabled" ;).
Также советую выставить для себя на закладке Graph Permissions политики по умолчанию. Если их переопределить с Deny на Allow, то это существенно меняет нам жизнь в лучшую сторону.
Перейдя на закладку graphs, то можно увидеть, что уже создано дефолтное дерево устройств и добавлен хост localhost. Однако графики пока не рисуются. Решить эту проблему можно настройкой SNMP на сервере.
Если вы были внимательны, то помните, что во время установки упоминался порт net-snmp. Вот его конфигурированием мы сейчас и займемся.
Первым делом создадим каталог, где будет храниться конфигурационный файл и сам файл конфигурации:
# mkdir /usr/local/etc/snmp |
Изменим этот файл до следующего содержания:
# cat /usr/local/etc/snmp/snmpd.conf syslocation Kiev, UA |
rocommunity - это что-то типа логина и пароля в одном флаконе. Необходимо чтобы совпадал на стороне клиента и сервера.
Добавим запуск демона в /etc/rc.conf и запустим net-snmp:
# echo '# SNMP' >> /etc/rc.conf |
Проверим работу:
# snmpwalk -c you_community_name -v 2c localhost |
Если в ответ вывалится огромный список MIB-ов, значит все ok.
Теперь можно в cacti для localhost изменить community и добавить необходимые типы графиков. Через некоторое время эти графики можно будет лицезреть воочию на закладке graphs (не забываем, что статистика снимается раз в 5 минут, соответственно графики отрисовываются неспеша).
Советую также обратить внимание на логгирование. Тоесть - настроить ротацию логов. На одном из серверов недавно обнаружил, что лог-файл разросся до 18 гигабайт!
Итак, добавляем в /etc/newsyslog.conf такую строку:
/usr/local/share/cacti/log/cacti.log 644 3 * $M1D0 JC |
Перезапускать syslogd не нужно, поскольку /etc/newsyslog.conf проверяется по cron-у каждый час.
Еще следует отметить, что в интерфейсе придется порозбираться, поскольку возможностей много, соответственно и много всяких заморочек. Все таки, пример начальной конфигурации наведу. Предупреждаю сразу - скриншотов не будет, только текстовые название менюшек!
Итак, закладка "Console", меню "Management", пункт "Devices".
Выносим добавленный по дефолту "localhost" (проще добавить новый девайс, нежели править старый ;) ). Для этого необходимо поставить чекбокс напротив устройства, выбрать действие "Delete" и нажать кнопку "Go".
Теперь добавим даный сервер... Жмем в верхнем правом углу ссылку "Add" и заполняем поля.
- Description: вписиваем сюда то, как должно отображаться устройство в дереве устройств. Я, обычно, вписываю DNS-имя сервера, например mail.domain.com.
- Hostname: вписываем DNS-имя или IP-адрес этого хоста. Лично я предпочитаю IP-адреса. Поскольку мониторить будем локальный сервер, то вписываем IP локалхоста: 127.0.0.1.
- Host Template: необходимо указать, к какому типу принадлежит даное устройство. В нашем случае - "Generic SNMP-enabled Host".
- Disable Host: отмечаем, если необходимо отключить все проверки для данного хоста.
- Downed Device Detection: указываем метод, по которому Cacti будет проверять, доступен ли хост. Я всегда выбираю "SNMP".
- Ping Timeout Value: таймаут, который использует Cacti при мониторинге устройств. Оставляю по дефолту, поскольку выбран метод проверки SNMP.
- Ping Retry Count: количество icmp-пакетов, которое отправит Cacti перед тем, как считать, что хост недоступен. Оставляю до дефолту, поскольку выбран метод проверки SNMP.
- SNMP Version: SNMP-версия, которую использует удаленное устройство. В нашем случае - "Version 2".
- SNMP Community: указываем наше SNMP-community (можно "подсмотреть в файле /usr/local/etc/snmp/snmpd.conf, параметр rocommunity).
- SNMP Port: указываем порт, который используется для SNMP. Оставляем по дефолту - 161.
- SNMP Timeout: время в милисекундах, сколько Cacti ожидает ответа. Оставляю по дефолту - 500.
- Maximum OID's Per Get Request: максимальное количество OID-ов, которые будут передаваться в одном запросе. Оставляю по дефолту - 10.
- Notes: здесь можно написать свои примечания.
Итак, поля заполнены необходимыми даными. Жмем кнопку "Create".
Устройство добавлено. Теперь добавим еще несколько "Data Queries", поскольку по умолчанию для "Generic SNMP-enabled Host" создается только "SNMP - Interface Statistics".
Добавим еще такие "Data Queries":
- SNMP - Get Mounted Partitions - снимать статистику с разделов винчестера
- SNMP - Get Processor Information - снимать статистику загрузки процессора
После добавления "Data Queries" жмем кнопку "Save" и приступаем непосредственно с созданию графов. Жмем ссылку "Create Graphs for this Host".
Я отметил следующие графы:
SNMP - Get Mounted Partitions
- Physical memory
- Real memory
- Swap space
- /
- /home
- /tmp
- /usr
- /var
SNMP - Get Processor Information
- 0
SNMP - Interface Statistics
- ale0
- em0
"Select a graph type" выставляю в значение "In/Out Bits (64-bits Counters)", поскольку net-snmp собран с поддержкой 64-битных счетчиков. Для некоторых устройств необходимо будет выставлять "In/Out Bits", если они не поддерживают 64-битные счетчики.
Жмем "Create", и попадаем на страницу выбора цвета, которым будет отрисовыватся график загрузки процессора. Это уже дело вкуса... Определившись с цветом, еще раз жмем "Create".
Теперь очередь за созданием дерева графов.
Путь следующий: закладка "Console", меню "Management", пункт "Graph Trees". Удаляем дефолтное дерево графов.
Теперь создадим свое новое... Лично я люблю сортировать по типам устройств, поэтому добавляю, например, такие:
- Servers
- Routers
- Switches
Итак, для примера добавим дерево "Servers".
Жмем в верхнем правом углу ссылку "Add". Заполняем поля:
- Name: Servers
- Sorting Type: Alphabetic Ordering
Теперь можно добавить наш сервер в это дерево. В строке "Tree Items" жмем ссылку "Add" и заполняем поля:
- Parent Item: root
- Tree Item Type: Host
- Host: в моем случае это mail.domain.com, а в вашем - соответственно ваш сервер.
- Graph Grouping Style: Тип сортировки - Graph Template
- Round Robin Archive: Hourly
Жмем кнопку "Create", и идем любоваться графиками на закладке "Graphs".
Для того, чтобы Cacti "понимал" кирилицу, необходимо при установке rrdtool отметить опцию "DEJAVU".
Если не отметили эту опцию, пересоберите rrdtool. Удаляем опции сборки:
# rm -R /var/db/ports/rrdtool |
Удаляем и переустанавливаем rrdtool:
# cd /usr/ports/databases/rrdtool |
Примеры получаемых графиков
Дополнительные типы графов:
- NUT [8] (более подробно о NUT [9])
- Загрузка дисковой подсистемы (I/O) [10]
- Отрисовка IPFW counter [11]