mrtg

Понадобилось выводить графики работоспособности и загруженности каналов проходящих через 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 минут 🙂

Напоминаю всем копирующим мой контент о существовании закона "Об авторском праве".
В связи с этим, прошу во избежании конфликтов при копировании данного материала, ставить на него ссылку:

http://noted.org.ua/828


Также, вы можете отблагодарить меня переслав любую сумму на любой кошелек WebMoney, для поддержания данного ресурса. Или просто админу на пиво ;)

Кошельки для получения благодарности:
R386985788805
U234140473141
Z147712360455

На данной странице нет комментариев, возможно они закрыты. Если Вы хотите оставить свой комментарий, перейдите на специально созданный раздел

Add your comment now

Please note: JavaScript is required to post comments.