Нам понадобится:
* Mrtg; * Apache; * PHP (я для простоты написал на нем сам скрипт, но можно использовать любой язык по своему вкусу) * Awk * самописный скрипт на основе которого и будут строиться графики. Основой скрипта является наблюдение при помощи команды top -S за загрузкой процесса swi1:net, отвечающей за сетевую подсистему;
Устанавливаем mrtg:
# cd /usr/ports/net-mgmt/mrtg && make install
Он сам вытянет за собой несколько библиотек, необходимых ему для работы. В данном примере я буду получать информацию непосредственно с вывода команды top -S. Скрипт будет выглядеть следующим образом:
/home/ts/graph/swi.php
//из вывода top-а выделяем относящееся к swi1:net и отсоединяем значение загруженности //(число)
$swi = `top -S|grep swi1|awk '{print $11}'`; //убираем знак процента (%) $swi = substr($swi, 0, -2); //Делаем вывод целым (необходимо для mrtg) $swi=intval($swi);\ //вывод значения. Осуществляется дважды из-за капризности mrtg. echo $swi; echo "\n"; echo $swi; ?>
То есть, мы отдаем 2 одинаковых строки - загрузка (в процентах) сетевой подсистемы FreeBSD. Далее пишем конфигурационный файл mrtg: WorkDir: /usr/local/www/apache22/data Target[swi]: `/usr/local/bin/php /home/ts/graph/swi.php` Options[_]: gauge, noo,growright,nopercent MaxBytes[_]: 100 WithPeak[_]: ymwd Title[swi]: Analysis of SWI:NET load averages PageTop[swi]: <H1>SWI:NET Load Averages</H1> ShortLegend[swi]: % YLegend[swi]: % of Load
Здесь WorkDir - каталог, где будут храниться html и рисунки, содержащие графики загрузки внешней сетевой карты. MaxBytes - максимальное значение параметров (в нашем случае -100, т.к. используются проценты. Параметр Target является для нас самым важным, т.к. именно это есть источник данных о целевом процессе. Сюда мы просто впишем полный путь нашего скрипта, получающего данные. WithPeak - изображение пиков в графике (week, month, year).
Далее запускаем indexmaker для создания html-странички: # indexmaker /usr/local/etc/mrtg/mrtg.cfg > /usr/local/www/apache22/data/index.html
Также поместим вызов mrtg под управление cron:
*/5 * * * * /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg --logging /usr/local/www/apache22/data/mrtg.log
После этого внимательно следим за адресом http://localhost/index.html на предмет выявления чрезвычайной загруженности сетевой подсистемы и принятия решительных мер по ее устранению.
|