Понадобилось выводить графики работоспособности и загруженности каналов проходящих через ipfw, вот и решили использовать старый, добрый mrtg.
Инсталляция mrtg:
Убедитесь что у вас уже установлен apache, если это не так — установите его.
возвращаемся к установке mrtg:
# cd /usr/ports/net-mgmt/mrtg
# make install clean
Собственно mrtg довольно таки универсальная штука, можно рисовать что угодно, хоть загрузку процессора на сервере.
Но в нашем случае стоит задача считать трафик проходящий через ipfw и рисовать графики, для этого в ipfw заводим следующие правила:
ipfw add 11 count ip from any to any in via ed0
ipfw add 12 count ip from any to any out via ed0
Помните, статью ipfw в картинках, где описывалось как разобраться в ipfw.
Вышеописанные правила, говорят следующее:
считать все пакеты входящие в интерфейс ed0
считать все пакеты выходящие из интерфейса ed0
Далее, для того что бы получать данные о том сколько прошло трафика по первому или второму правилу, создаем простой скрипт и даём ему права на исполнение:
#cat /usr/local/etc/mrtg/count.sh
#!/bin/sh
/sbin/ipfw show 11 | /usr/bin/awk {'print $3'}
/sbin/ipfw show 12 | /usr/bin/awk {'print $3'}
echo ed0
Выходные данные этого скрипта, будут:
1. количеством входящих байт на интерфейсе ed0;
2. количеством исходящих байт на интерфейсе ed0;
3. интерфейс ed0.
После написания скрипта, для сграбливания данных с интерфейса ed0, пишем конфиг mrtg.conf
WorkDir: /usr/local/www/mrtg
Pagetop[ed0]: <H1> Traffic on int ed0 </H1>
Title[ed0]: Traffic ed0
# если нет желания использовать cron, то раскоментируйте строку ниже
#Runasdaemon: Yes
MaxBytes[ed0]: 1250000
AbsMax[ed0]: 1250000
Target[ed0]: `/usr/local/etc/mrtg/count.sh`
XSize[ed0]: 400
YSize[ed0]: 100
WithPeak[ed0]: w m y
Теперь я постараюсь разъяснить, что где и для чего.
WorkDir — каталог, в котором будут храниться html странички и рисунки с графиками.
AbsMax и MaxBytes — максимальные параметры, при получении цифр больших чем указанных в этих параметрах, не будут учитываться.
Target — скажем так, скрипт — источник данных в из ipfw в mrtg. Здесь пишем полный путь нашего скрипта, получающего данные.
XSize/YSize — количество пикселей в картинке по горизонтали и вертикали.
WithPeak — изображение пиков в графике — week, month, year
После того как настроили наш конфиг, запускаем indexmaker натравливая его на созданный конфиг и указываем директорию выхода, для создание главной html странички:
# indexmaker /usr/local/etc/mrtg/mrtg.cfg > /usr/local/www/mrtg/index.html
После создания всех необходимых конфигов, добавляем задание в cron:
0-59/10 * * * * root /usr/local/bin/mrtg /usr/local/etc/mrtg/mrtg.cfg – logging /usr/local/www/mrtg/ed0.log
Перезапускать cron не обязательно.
Предпоследний шаг — создание алиаса или виртуального хоста в конфиге апача и перезапуск последнего:
# mcedit /usr/local/etc/apache/httpd.conf
<VirtualHost *:80>
ServerAdmin stat@domain.com
ServerName stat.domain.com
DocumentRoot /usr/local/www/mrtg
ErrorLog /var/log/mrtg-httpd.log
CustomLog /var/log/mrtg-httpd-common.log common
AccessFileName .htaccess
<Directory /usr/local/www/mrtg>
Options -Indexes MultiViews FollowSymlinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
Или:
# mcedit /usr/local/etc/apache/httpd.conf
Alias /stats "/usr/local/www/mrtg/"
<Directory "/usr/local/www/mrtg">
Options -Indexes MultiViews FollowSymlinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
# apachectl start
Ну, и на этом всё..
Заходим на http://stat.domain.com или http://domain.com/stats/ и наслаждаемся изменяющимся графиком раз в 10 минут 🙂
Напоминаю всем копирующим мой контент о существовании закона "Об авторском праве".
В связи с этим, прошу во избежании конфликтов при копировании данного материала, ставить на него ссылку:
Также, вы можете отблагодарить меня переслав любую сумму на любой кошелек WebMoney, для поддержания данного ресурса. Или просто админу на пиво ;)
Кошельки для получения благодарности:
R386985788805
U234140473141
Z147712360455
На данной странице нет комментариев, возможно они закрыты. Если Вы хотите оставить свой комментарий, перейдите на специально созданный раздел