The OpenNET Project / Index page

[ новости/++ | форум | wiki | теги ]

Настройка системы учета трафика на базе Cacti, SNMP, bpft, FreeBSD (cacti monitoring traffic snmp jail chroot trafd)


<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>
Ключевые слова: cacti, monitoring, traffic, snmp, jail, chroot, trafd,  (найти похожие документы)
From: Max Birintsev <birintsev@mail.ru.> Newsgroups: email Date: Mon, 28 Sep 2009 17:02:14 +0000 (UTC) Subject: Настройка системы учета трафика на базе Cacti, SNMP, bpft, FreeBSD Система: 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 если ничего не меняли в инициализации базы данных (см. предыдущий пункт), примерно так: <?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 Комментарий в настоящем руководстве указан самый быстрый найденный путь после того как автор попробовал много длинных тупиков Улучшения * изменить пароль доступа к базе данных mySQL для Cacti * выделить под Cacti отдельный поддомен вместо глобального алиса * ограничить доступ к веб-интерфейсу Cacti * изменить пароль доступа к SNMP (в этом примере PASSWORD) * изменить переменные syslocation, syscontact Источники * http://www.lissyara.su/?id=1154 * http://www.roth.lu/cacti-snmp-tut.htm

<< Предыдущая ИНДЕКС Исправить src / Печать Следующая >>

Обсуждение [ RSS ]
 
  • 1.1, XoRe, 15:25, 29/09/2009 [ответить] [смотреть все]
  • +/
    Если собирать данные с localhost только о трафике, snmp становится не нужен.
    Особенно, когда на каждом jail отдельный IP адрес.
    Можно сделать правила в ipfw типа таких:
    count ip from any to <ip> out
    count ip from <ip> to any in
    И парсить вывод ipfw каждые 5 минут)

    И, если не нужно хранить суммарную статистику, то и bpft становится тоже не нужен.
    На больших скоростях подсчет через bpf может подгружать систему и терять пакеты.

     
     
  • 2.2, user295, 17:47, 29/09/2009 [^] [ответить] [смотреть все]
  • +/
    Можно сделать ipacctd/ng-ipacctd и просто заворачивать копию трафика в него. Ничего не потеряется даже на большом потоке, в отличие от trafd, и всегда есть все нужные цифры, без костылей на кактусах
     
     
  • 3.4, XoRe, 22:41, 30/09/2009 [^] [ответить] [смотреть все]
  • +/
    >Можно сделать ipacctd/ng-ipacctd и просто заворачивать копию трафика в него.

    В кого "в него"?
    В cacti?)

     
  • 2.6, vukor, 05:35, 02/10/2009 [^] [ответить] [смотреть все]
  • +/
    У меня вопрос по правилам
    сount ip from any to <ip> out
    count ip from <ip> to any in

    Почему out на входящий трафик, in - соответственно на исходящий ?

    Встречаю пример не первый раз, объясните пжлста.

     
     
  • 3.7, Слава, 11:30, 02/10/2009 [^] [ответить] [смотреть все]
  • +/
    А это зависит для кого считаете и для какой стороны данные, пример:
    провайдер <-> клиент

    понятно, да, что провайдер получает деньги за исходящий для себя трафик к клиенту, для которого тот входящий, соответственно, то, что провайдер у себя считает как out клиенту он должен предоставлять в статистике как in для того. Ну и наоборот.

    Вот, как-то так. Я когда писал биллинг, тоже путался поначалу, потом привык.

     
  • 1.3, abigor, 17:53, 29/09/2009 [ответить] [смотреть все]  
  • +/
    через netflow имхо легче, снимать статистику с интерфейса и все. А в итоге получим и по всем jail
     
     
  • 2.5, XoRe, 22:42, 30/09/2009 [^] [ответить] [смотреть все]  
  • +/
    >через netflow имхо легче, снимать статистику с интерфейса и все. А в
    >итоге получим и по всем jail

    Согласен.
    Когда каждый jail на отдельном ip адресе, задача сводится к "посчитать трафик клиентов по ip адресам")

     
  • 1.8, sssazha, 17:09, 08/01/2010 [ответить] [смотреть все]  
  • +/
    Подскажите, плиз, почему при установке net-snmp из портов получаю результирующую строку
    cannot open /usr/ports/net-mgmt/net-snmp/files/extra-patch-local:Makefile.in: No such file or directory
    *** Error code 2
    Stop in /usr/ports/net-mgmt/net-snmp.
     
     
  • 2.9, gvf, 19:30, 03/03/2010 [^] [ответить] [смотреть все]  
  • +/
    обновите порты
     
  • 1.10, aprog, 17:41, 17/02/2016 [ответить] [смотреть все]  
  • +/
    Спасибо за пост. Кому интерестно, нашел подробную инструкцию по установке cacti 0.8.8f под Ubuntu с поддержкой 64-битных счетчиков для 95th Percentile и Total bandwidth графиков - http://sysadm.pp.ua/linux/monitoring-systems/cacti-install-from-source.html . Можно добавить.
     

    Ваш комментарий
    Имя:         
    E-Mail:      
    Заголовок:
    Текст:





      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor