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/?p=828


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

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

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

Add your comment now

You must be logged in to post a comment.