Документация по ОС FreeBSD Суббота, 18.05.2024, 19:48
Приветствую Вас Гость | RSS
Меню сайта

Категории каталога
Apache [58]
DNS [25]
FTP [27]
Mail [74]
Samba [24]
Squid [46]
SSH [23]
VPN [35]
РРР [20]
Net [173]

Главная » Статьи » Сеть » Net

Настройка системы учета трафика на базе Cacti, SNMP, bpft, FreeBSD [2009]
Система:

FreeBSD 7.1, jail-ы с помощью ezjail-3.0 с выделенными IP на одном интерфейсе

Цель:

Мониторинг всего трафика (исходящий/входяший) по каждому из jail. Фактически
будем считать по каждому IP

Возможности применения:

Мониторинг наборов пользовательских потоков

Требования:

Непосредственно: Cacti, SNMP, bpft
Необходимо также: bpf фильтр в ядре, bttp сервер Apache, сервер баз данных mySQL

Реализация:

Инсталлируем Cacti из портов
       
cd /usr/ports/net-mgmt/cacti
make
make install

по окончании установки следуем полученным инструкциям (сообщение инсталлятора):

1. Создаем БД в MySQL:

# mysqladmin --user=root create cacti

2. Устанавливаем логин пароль для cacti:
  (change user and/or password if requered)

# echo "GRANT ALL ON cacti.* TO cactiuser@localhost IDENTIFIED BY ''cactiuser''; FLUSH PRIVILEGES;" | mysql

3. Импортируем БД cacti:

# mysql cacti < /usr/local/share/cacti/cacti.sql

4. Настраиваем соедниение к базе данных mySQL для Cacti в файле /usr/local/share/cacti/include/db-settings.php если ничего не меняли в инициализации базы данных (см. предыдущий пункт), примерно так:

/* make sure these values refect your actual database/host/user/password */
$database_type = "mysql";
$database_default = "cacti";
$database_hostname = "localhost";
$database_username = "cactiuser";
$database_password = "cacti";
$database_port = "3306";
?>


5. Добавляем в /etc/crontab:

*/5 * * * * cacti /usr/local/bin/php /usr/local/share/cacti/poller.php > /dev/null 2>&1

6. Создаем в конфигурации apache алиас для директории cacti:
добавляем в файл /usr/local/etc/apache/httpd.conf конфига Apache алиас для Cacti

Alias /cacti/ "/usr/local/share/cacti/"

<Directory "/usr/local/share/cacti">
  Options Indexes FollowSymlinks MultiViews
  AllowOverride AuthConfig
  Order deny,allow
  Allow from all
</Directory>

       
перезагружаем Apache

/usr/local/etc/rc.d/apache.sh restart

7. Входим в web-интерфейс
http://<;your-host>/cacti/ cacti с логином/паролем admin/admin.

задаём свой логин/пароль, нас просят его изменить, соглашаемся
ничего больше руками не трогаем

Инсталлируем SNMP из портов

cd /usr/ports/net-mgmt/net-snmp
make
make install


добавляем конфигурационные строки в /etc/rc.conf

# snmp
snmpd_enable="YES"
snmpd_flags="-a"
snmpd_conffile="/usr/local/etc/snmp/snmpd.conf"
snmptrapd_enable="YES"
snmptrapd_flags="-a -p /var/run/snmptrapd.pid"


создаём конфигурационный файл /usr/local/etc/snmp/snmpd.conf и пишем в него строки

syslocation  "Мой город, улица"
syscontact  moj-email@moj-server.com

com2sec readonly default PASSWORD
group MyROGroup v1 readonly
group MyROGroup v2c readonly
view all included .1 80
access MyROGroup ""      any       noauth    exact  all    none   none


запускаем демон SNMP

/usr/local/etc/rc.d/snmpd.sh start

пробуем получить ответ от демона SNMP

snmpwalk -v 2c -c PASSWORD localhost system

должен вернуть список переменных с ключами

Инсталлируем bpft4(trafd) из портов

cd /usr/ports/net-mgmt/bpft
make
make install


Создаём конфигурационный файл и пишем в него строки (в моём случае это интерфейс em0)

# trafd configuration file

# interfaces to proceed
 #IFF_LISTEN="eth0 eth1"
IFF_LISTEN="em0"

# options for trafd (-pr - default options)
# Don''t use "-i" here !
em0_opts="-pr"
#eth1_opts="-r -m0"


Создаём папку /var/log/trafd и делаем symlink /usr/local/var/bpft/

Запускаем bpft4(trafd)

/usr/local/etc/rc.d/trafd.sh

Пробуем снять статистику

trafstat -n

Теперь нам необходимо добавить в SNMP списки IP, входящего и исходящего трафика

создаём 3 скрипта

скрипт для сброса статистики каждые 5 мин по крону в бинарный файл
/usr/scripts/trafd-5min.sh

#!/bin/sh

iface=em0

rm /var/log/trafd/trafd.${iface}
/usr/local/bin/trafsave ${iface}

sleep 4

/usr/local/bin/traflog -ans -i ${iface} > /var/log/trafd/trafd.${iface}.plain


добавим в крон

crontab -e

строку

*/5     *       *       *       *       /usr/scripts/trafd-5min.sh

скрипт для получения списка IP интерфейса
/usr/scripts/snmp-iplist.sh

#!/bin/sh
case $1 in

g)
 /sbin/ifconfig | /usr/bin/grep "inet" | /usr/bin/grep "broadcast" | /usr/bin/awk ''{print $2}''
 ;;
        
i)
 ipcount=`/sbin/ifconfig | /usr/bin/grep "inet" | /usr/bin/grep "broadcast" | /usr/bin/awk ''{print $2}'' | wc -l`
        
 for i in `jot $ipcount`; do
     echo $i
 done
 exit $ipcount # this is the value at OID .1.3.6.1.4.1.2021.49.42.100.1
 ;;
        
*)
  exit 254
 ;;
esac

               
попробуем получить список IP интерфейса

/usr/scripts/snmp-iplist.sh g

и просто индексы

/usr/scripts/snmp-iplist.sh i

для получения исходящего/входящего трафика всех IP интерфейса по отдельности
/usr/scripts/snmp-iplist-traffic.sh

#!/bin/sh
myIPs=`/usr/scripts/snmp-iplist.sh g`
case $1 in

in)
 for IP in $myIPs; do
 /usr/local/bin/traflog -n -i em0 from all to $IP | grep ''Summary'' | /usr/bin/awk ''{print $2+$5}''
 done
  ;;
        
out)
 for IP in $myIPs; do
 /usr/local/bin/traflog -n -i em0 from $IP to all | grep ''Summary'' | /usr/bin/awk ''{print $2+$5}''
 done
 ;;
        
*)
 exit 254
 ;;
        
esac

            
попробуем получить входящий трафик всех IP интерфейса по отдельности (если уже сработал
крон для скрипта /usr/scripts/trafd-5min.sh)

/usr/scripts/snmp-iplist-traffic.sh in

попробуем получить исходящий трафик всех IP интерфейса по отдельности (если уже
сработал крон для скрипта /usr/scripts/trafd-5min.sh)

/usr/scripts/snmp-iplist-traffic.sh out

Добавляем созданные скрипты в конфигурационный файл SNMP /usr/local/etc/snmp/snmpd.conf

extend .1.3.6.1.4.1.2021.49 iplist /usr/scripts/snmp-iplist.sh g
extend .1.3.6.1.4.1.2021.49.42 ipindex /usr/scripts/snmp-iplist.sh i
extend .1.3.6.1.4.1.2021.50 traffic_in /usr/scripts/snmp-iplist-traffic.sh in
extend .1.3.6.1.4.1.2021.51 traffic_in /usr/scripts/snmp-iplist-traffic.sh out


перезапускаем SNMP

/usr/local/etc/rc.d/snmpd restart

пробуем возвращает ли SNMP данные скриптов (по очереди)

snmpwalk -v 2c -c PASSWORD localhost .1.3.6.1.4.1.2021.49
snmpwalk -v 2c -c PASSWORD localhost .1.3.6.1.4.1.2021.49.42
snmpwalk -v 2c -c PASSWORD localhost .1.3.6.1.4.1.2021.50
snmpwalk -v 2c -c PASSWORD localhost .1.3.6.1.4.1.2021.51

Комментарий

в настоящем руководстве указан самый быстрый найденный путь после того
как автор попробовал много длинных тупиков


Источник: http://www.opennet.ru/base/net/traf_cnt_cacti.txt.html
Категория: Net | Добавил: oleg (29.09.2009) | Автор: Max Birintsev
Просмотров: 777 | Рейтинг: 0.0/0 |
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Форма входа

Beastie

Друзья сайта

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0
links

Copyright MyCorp © 2024