Перед установкой symon убедитесь, что Web-сервер Apache работает не в chroot-окружении (httpd_flags="-u" в /etc/rc.conf.local), модуль mod_php5 подключен, а дистрибутивный архив xbase46.tgz установлен (sudo tar zxvpf xbase46.tgz -C /). Через переменную окружения PKG_PATH указываем расположение прекомпилированных пакетов: % export PKG_PATH=ftp://ftp.openbsd.org/pub/OpenBSD/snapshots/packages/i386 Устанавливаем пакет symon вместе с зависимостями: % sudo pkg_add symon Копируем примеры конфигурационных файлов в каталог /etc: % sudo cp /usr/local/share/examples/symon/*.conf /etc Редактируем конфигурационный файл системного монитора, в задачу которого входит сбор и пересылка данных. % sudo vi /etc/symon.conf monitor { cpu(0), mem, mbuf, pf, io(wd0), df(wd0e), if(enc0), if(bge0), if(rl0), # sensor(lm0.temp0), sensor(lm0.temp1), sensor(lm0.fan1), proc(squid), proc(httpd), proc(sshd) } stream to 127.0.0.1 2100 Symux работает в режиме сервера, он получает потоки symon и сохраняет их в RRD-файлы. Конфигурируем: % sudo vi /etc/symux.conf # Указываем, на каком порту слушать входящие соединения symon mux 127.0.0.1 2100 # Определяем входящие данные для каждого источника source 127.0.0.1 { # Описываем, какую именно информацию принимаем # (здесь просто перечисляем источники из symon.conf) accept { cpu(0), mem, mbuf, pf, io(wd0), df(wd0e), if(enc0), if(bge0), if(rl0), # sensor(lm0.temp0), sensor(lm0.temp1), sensor(lm0.fan1), proc(squid), proc(httpd), proc(sshd) } # write sensor(lm0.temp0) in "/var/www/symon/rrds/localhost/sensor_lm0.temp0.rrd" # write sensor(lm0.temp1) in "/var/www/symon/rrds/localhost/sensor_lm0.temp1.rrd" # write sensor(lm0.fan1) in "/var/www/symon/rrds/localhost/sensor_lm0.fan1.rrd" # Каталог, в который будем сохранять данные datadir "/var/www/symon/rrds/localhost" } Создаем каталог для данных: % sudo mkdir -p /var/www/symon/rrds/localhost % sudo chown -R root:wheel /var/www/symon % sudo chmod -R 755 /var/www/symon % cd /var/www/symon/rrds/localhost С помощью скрипта c_smrrds.sh, входящего в поставку symon, создаем необходимые RRD-файлы: % sudo /usr/local/share/symon/c_smrrds.sh all /var/www/symon/rrds/localhost/proc_sshd.rrd created /var/www/symon/rrds/localhost/proc_httpd.rrd created /var/www/symon/rrds/localhost/proc_squid.rrd created /var/www/symon/rrds/localhost/if_rl0.rrd created /var/www/symon/rrds/localhost/if_bge0.rrd created /var/www/symon/rrds/localhost/if_enc0.rrd created /var/www/symon/rrds/localhost/df_wd0e.rrd created /var/www/symon/rrds/localhost/io_wd0.rrd created /var/www/symon/rrds/localhost/pf.rrd created /var/www/symon/rrds/localhost/mbuf.rrd created /var/www/symon/rrds/localhost/mem.rrd created /var/www/symon/rrds/localhost/cpu0.rrd created При возникновении ошибок, связанных с отсутствием требуемых динамических библиотек, выполняем команду: % sudo ldconfig /usr/local/lib /usr/X11R6/lib Для тестирования запускаем symux и symon в режиме отладки: % sudo /usr/local/libexec/symux -d symux version 2.79 program id=32039 debug: size of churnbuffer = 2361 debug: shm from 0x88cde000 to 0x89104ac0 debug: symux packet size=1642 listening for incoming symon traffic on udp 127.0.0.1 2100 listening for incoming connections on tcp 127.0.0.1 2100 % sudo /usr/local/libexec/symon -d symon version 2.79 program id=25989 debug: symon packet size=821 sending packets to udp 127.0.0.1 2100 started module proc(sshd) started module proc(httpd) started module proc(squid) started module if(rl0) started module if(bge0) started module if(enc0) started module df(wd0e) started module io(wd0) started module pf() started module mbuf() started module mem() started module cpu(0) В случае возникновения ошибки "symux: could not get a semaphore" попробуйте увеличить значения sysctl-переменных kern.seminfo.semmni и kern.seminfo.semmns: % sudo sysctl kern.seminfo.semmni=128 kern.seminfo.semmni: 10 -> 128 % sudo sysctl kern.seminfo.semmns=256 kern.seminfo.semmns: 60 -> 256 Если все в порядке, запускаем symux и symon в нормальном режиме: % sudo /usr/local/libexec/symux % sudo /usr/local/libexec/symon Прописываем запуск symux и symon в сценарий загрузки: % sudo vi /etc/rc.local if [ -x /usr/local/libexec/symux -a -f /etc/symux.conf ]; then echo -n ' symux'; /usr/local/libexec/symux fi if [ -x /usr/local/libexec/symon -a -f /etc/symon.conf ]; then echo -n ' symon'; /usr/local/libexec/symon fi Чтобы просмотреть собранную информацию, можно воспользоваться скриптом getsymonitem.pl (в качестве последнего параметра используем информацию из «man 8 symux», применительно к CPU это: user, nice, system, interrupt, idle): % cd /usr/local/share/symon/client % sudo ./getsymonitem.pl 127.0.0.1 2100 127.0.0.1 'cpu(0)' user 3.10 Теперь переходим к установке syweb: % cd ~/devel % ftp http://www.xs4all.nl/~wpd/symon/philes/syweb-0.58.tar.gz % tar zxvf syweb-0.58.tar.gz % cd syweb % sudo cp -R htdocs/syweb /var/www % sudo cp -R symon /var/www/symon/layout % sudo mkdir /var/www/symon/cache % sudo chown www:www /var/www/symon/cache Изменяем параметры setup.inc под нашу конфигурацию (секцию "running FreeBSD, apache not chrooted" полностью комментируем): % sudo vi /var/www/syweb/setup.inc /* running OpenBSD, apache not chrooted: */ $symon['rrdtool_path']='/usr/local/bin/rrdtool'; $symon['cache_dir']='/var/www/symon/cache'; $symon['host_tree']='/var/www/symon/rrds'; $symon['layout_dir']='/var/www/symon/layout'; Конфигурируем Apache: % sudo vi /var/www/conf/httpd.conf Alias /syweb "/var/www/syweb/" <Directory "/var/www/syweb"> Options None AllowOverride None DirectoryIndex index.php Order allow,deny Allow from all # При желании можно ограничить доступ к этому каталогу # AuthType Basic # AuthName "syweb zone" # AuthUserFile /var/www/conf/.htpasswd # AuthGroupFile /dev/null # require valid-user # А также разрешать вход только по протоколу https # SSLRequireSSL # SSLVerifyClient none </Directory> В том случае, если требуется авторизация, следует создать пароль при помощи утилиты htpasswd(1): % sudo htpasswd -c /var/www/conf/.htpasswd admin После внесения изменений в /var/www/conf/httpd.conf останавливаем и повторно запускаем httpd(8): # apachectl stop # apachectl start Выполняем проверку (подразумевается, что IP-адрес сервера, на котором запущены httpd, symux и symon, - 192.168.1.1): http://192.168.1.1/syweb/configtest.php После проверки из соображений безопасности configtest.php можно удалить, либо запретить к нему доступ: % sudo chmod 000 configtest.php Настройка завершена, смотрим на красивые графики: http://192.168.1.1/syweb/ Можно изменить расположение графиков и подписи к ним, для этого нужно создать свой layout-файл в каталоге /var/www/symon/layout: % sudo vi /var/www/symon/layout/evo.layout group name="Cpu, memory and memory buffers"; graph rrdfile=/var/www/symon/rrds/localhost/cpu0.rrd, title="cpu(0)"; graph rrdfile=/var/www/symon/rrds/localhost/mem.rrd, title="memory"; graph rrdfile=/var/www/symon/rrds/localhost/mbuf.rrd, title="mbuf"; #group name="Sensors"; #graph rrdfile=/var/www/symon/rrds/localhost/sensor_lm0.temp0.rrd, title="Chipset temperature (degC)"; #graph rrdfile=/var/www/symon/rrds/localhost/sensor_lm0.temp1.rrd, title="CPU temperature (degC)"; #graph rrdfile=/var/www/symon/rrds/localhost/sensor_lm0.fan1.rrd, title="CPU fan (RPM)"; group name="Disks"; graph rrdfile=/var/www/symon/rrds/localhost/io_wd0.rrd, title="wd0: system disk"; graph rrdfile=/var/www/symon/rrds/localhost/df_wd0e.rrd, title="wd0e: /var/log"; group name="Interfaces"; graph rrdfile=/var/www/symon/rrds/localhost/if_bge0.rrd, title="lan interface"; graph rrdfile=/var/www/symon/rrds/localhost/if_rl0.rrd, title="wan interface"; graph rrdfile=/var/www/symon/rrds/localhost/if_enc0.rrd, title="vpn interface"; group name="Packet filter"; graph rrdfile=/var/www/symon/rrds/localhost/pf.rrd, title="pf: stats on wan interface"; group name="Procs"; graph rrdfile=/var/www/symon/rrds/localhost/proc_squid.rrd, title="Squid"; graph rrdfile=/var/www/symon/rrds/localhost/proc_httpd.rrd, title="Apache"; graph rrdfile=/var/www/symon/rrds/localhost/proc_sshd.rrd, title="Sshd"; Чтобы сделать свой layout-файл активным по умолчанию, вносим соответствующее изменение в /var/www/syweb/setup.inc: % sudo vi +105 /var/www/syweb/setup.inc 'layout' => array( 'type' => 'named', 'default' => 'evo', 'namedvalues' => array( 'default' => '' ) ), TODO:
Данное пошаговое руководство основано на статье "Передовой наблюдательный пункт", опубликованной в мартовском номере журнала " Хакер" за 2009 год. Авторы оригинальной статьи: Сергей Яремчук и Андрей Матвеев. |