Захотелось, как белому человеку, мониторить свои хосты удалённо по SNMP - как совсем взрослому :) Чтоб была загрузка каналов, загрузка ЦП, и прочие милые вещщи. Ну, и разумеется хотелось, чтобы всё это было красиво - т.е. веб-интерфейс ко всему неплохобы. Вначале хотел сам всё написать, но потом подсказали, что изобретать велосипед не надо - его уже изобрели :))) Итак, добрые люди подсказали прогу - cacti. Нашлась такая в портах:
Надо заметить, что за собой оно тащит много интересный вещщей, типа snmp-модуль к php, net-snmp... Облом. Хочет новый экспат, а у мя старый. Надо обновить:
===> Installing for expat-2.0.0_1
===> Generating temporary packing list
===> Checking if textproc/expat2 already installed
===> An older version of textproc/expat2 is already installed (expat-1.95.8)
You may wish to ``make deinstall'' and install this port again
by ``make reinstall'' to upgrade it properly.
If you really wish to overwrite the old port of textproc/expat2
without deleting it first, set the variable "FORCE_PKG_REGISTER"
in your environment or the "make install" command line.
*** Error code 1
Stop in /usr/ports/textproc/expat2.
*** Error code 1
Stop in /usr/ports/textproc/php4-xml.
*** Error code 1
Stop in /usr/ports/net/cacti.
/usr/ports/net/cacti/>
/usr/ports/net/cacti/>make clean && make && make install && make clean
.......................
.......................
.......................
=======================================================================
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:
# mysqladmin --user=root create cacti
2. Create a mysql user/password for cacti:
(change user and/or password if requered)
# echo "GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY 'cactiuser';
FLUSH PRIVILEGES;" | mysql
3. Import the default cacti database:
# mysql cacti < /usr/local/share/cacti/cacti.sql
4. Edit /usr/local/share/cacti/include/db-settings.php.
5. Add a line to your /etc/crontab file similar to:
*/5 * * * * cacti /usr/local/bin/php /usr/local/share/cacti/poller.php >
/dev/null 2>&16. Add alias in apache config for the cacti dir:
Alias /cacti "/usr/local/share/cacti/"
7. Open a cacti login page in your web browser and login with admin/admin.
If you update cacti, open a login page right now. An updating process
will run automatically.
=======================================================================
По окончании установуи вылазиет инструкция чё делать дальше. Вот ей и следуем. Создаём БД:
/usr/home/lissyara/>mysql --user=root --password=passwd_mysql \
? --execute="GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY \
? 'cactiuser'; FLUSH PRIVILEGES;"
Меняем пассворд, на свой:
/usr/home/lissyara/>mysql --user=root --password=passwd_mysql \
? --execute="SET PASSWORD FOR 'cactiuser'@'localhost'=PASSWORD('cacti')"
Создаём таблицы в БД, по дампу, что идёт с программой:
Затем рихтуем конфиг WEB-морды cacti до такого состояния: /usr/local/share/cacti/include/db-settings.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 = "cacti"; $database_port = "3306"; ?>
Ну, и рихтуем конфиг апача - /usr/local/etc/apache/httpd.conf, вносим такие строки:
Alias /cacti/ "/usr/local/share/cacti/"
<Directory "/usr/local/share/cacti">
Options Indexes FollowSymlinks MultiViews
AllowOverride AuthConfig
Order deny,allow
Allow from all
</Directory>
Кстати, в настройках директории уже указано что там может быть авторизация, ибо несмотря на штатную авторизацию cacti, я предпочёл перестраховаться средствами apache. Всё. Можно обращаться к cacti по адресу типа http://www.lissyara.su/scripts/redirect_link.php?link=http://ip_or_name_of_server/cacti/. При первом заходе будет настройка, всё по дефолту, долбить далее. Если чё-то не вышло (решили чё-то повыбирать и пр.), дропаем все таблицы в бд cacti, и снова создаём согласно вышеописанному дампу. Затем пробуем запустить скрипт, что шёл в комплекте:
/usr/home/lissyara/>/usr/local/bin/php /usr/local/share/cacti/poller.php cat: /proc/meminfo: No such file or directory cat: /proc/meminfo: No such file or directory ERROR: creating '/usr/local/share/cacti/rra/localhost_mem_buffers_3.rrd': Permission denied ERROR: opening '/usr/local/share/cacti/rra/localhost_mem_buffers_3.rrd': No such file or directory ERROR: creating '/usr/local/share/cacti/rra/localhost_mem_swap_4.rrd': Permission denied ERROR: opening '/usr/local/share/cacti/rra/localhost_mem_swap_4.rrd': No such file or directory ERROR: creating '/usr/local/share/cacti/rra/localhost_load_1min_5.rrd': Permission denied ERROR: Not enough arguments ERROR: creating '/usr/local/share/cacti/rra/localhost_users_6.rrd': Permission denied ERROR: opening '/usr/local/share/cacti/rra/localhost_users_6.rrd': No such file or directory ERROR: creating '/usr/local/share/cacti/rra/localhost_proc_7.rrd': Permission denied ERROR: opening '/usr/local/share/cacti/rra/localhost_proc_7.rrd': No such file or directory 03/27/2006 12:29:20 PM - SYSTEM STATS: Time:1.0913 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:5 RRDsProcessed:5
Прав нехватило, на создание... У меня рутовый кронтаб и так засран, хотел в свой запихнуть. Придётся дать права:
/usr/home/lissyara/>/usr/local/bin/php /usr/local/share/cacti/poller.php cat: /proc/meminfo: No such file or directory cat: /proc/meminfo: No such file or directory OK u:0.00 s:0.01 r:0.02 OK u:0.00 s:0.01 r:0.03 OK u:0.00 s:0.01 r:0.03 OK u:0.00 s:0.01 r:0.03 OK u:0.00 s:0.01 r:0.04 ERROR: Not enough arguments OK u:0.00 s:0.01 r:0.05 OK u:0.00 s:0.01 r:0.05 OK u:0.00 s:0.01 r:0.06 OK u:0.00 s:0.01 r:0.06 03/27/2006 12:31:05 PM - SYSTEM STATS: Time:1.0980 Method:cmd.php Processes:1 Threads:N/A Hosts:2 HostsPerProcess:2 DataSources:5 RRDsProcessed:5 /usr/home/lissyara/>
Всё боле-мене, не считая ругани (всё-таки скриптяра больше под линух заточена, некоторых файлов во фре просто нету.) Ну, после этого можно вносить всё в крон, командой crontab -e, строчку, что запускали (периоды и прочие аргументы указаны выше, в подсказке, что была по окончании инсталляции, тока учтите, что там под линуховый крон, поэтому словечко "cacti", означающее от кого запускать, выкиньте.). Поигравшись с cisco`й, (всё-таки несмотря на WEB-интерфейс, он не очень интуитивно понятен, особенно некоторые вещи, когда надо из дерева перенести в другое - надо всё удалить, и создать заново... При этом херится вся статистика что уже насобиралась... Да и выбрать из темплатов подходящие тяжело.), решил что инфы по локалхосту маловато, да и северов у меня несколько, хотелось всё и сразу видеть :) Посему надо подымать snmp на хостах, которые хотим мониторить. На локалхосте net-snmp уже стоит, на остальных придётся поставить. Ставим из /usr/ports/net-mgmt/net-snmp, после установки, добавляем строку в /etc/rc.conf, создаём директорию для конфига, и создаём файл конфигурации:
Если в ответ вывалится огроменный список миб`ов - то всё получилось, если нет - ищщем ошибки. Также можно подключить к мониторингу виндовые машины - надо тока на них запустить snmp (службу), указать сообщество, и всё. Тока шаблон для них соответственный надо выбрать из списка.
P.S. Это словечко "my_community" - это что-то типа логина и пароля в одном флаконе, поэтому надо придумать позаковыристей, ибо SNMP более поздних версий чем 1, позволяют не только снимать инфу, но и менять некоторые настройки.
P.S.2 Про веб интерфейс... Ничё говорить не буду, но сразу говорю, тут с наскоку тяжело будет. По крайней мере я долго вникал, и то не сразу, и не во всё въехал. Советую почитать доки программы.
P.S.3 При настройке учтите, что опрос устройств идёт раз в 5 минут, и данные по добавленным хостам появляются не сразу, а после опроса. Поэтому имеет смысл на время отладки сделать запуск раз в минуту.
P.S.4 При проблемах с появлением "крякозябр" на графиках, там где должен быть русский язык, надо загрузить шрифты по ссылке, и распаковать их (в принципе, нужен только один - но я потащил все) в директорию /usr/local/share/rrdtool/fonts/. После чего в настройках кактуса: Console -> Cacti Settings -> Paths -> RRDTool Default Font Path Прописываем путь к одному из шрифтов. Я написал: /usr/local/share/rrdtool/fonts/ARIAL8.TTF Ну и сами фонты: