Назначение
Для сбора статистики по IP-трафику в АСР «Гидра» существует специализированное агентское приложение — hcd
(Hydra Collector Daemon). Этот агент принимает статистику по трафику от различных источников, преобразует её во внутренний формат и передаёт в ядро АСР для тарификации.
Поддерживаемые источники данных
- Агрегатор Netflow/sFlow
pmacct
версии 0.12 и выше. Для агрегации статистики, поступающей с маршрутизаторов по протоколу Netflow, используется входящий в составpmacct
демонnfacctd
. - Другие источники (текстовый формат)
Предварительные требования
- Сервер с установленной ОС Linux. Далее приведены инструкции для дистрибутивов Gentoo, RHEL/CentOS и Debian/Ubuntu.
- Язык программирования Python версии 2.6.x.
Установка pmacct
Gentoo
1. В файле /etc/portage/package.use
укажите USE-флаг 64bit
для пакета pmacct
:
net-analyzer/pmacct 64bit
2. Установите pmacct
:
# emerge -av pmacct
Debian/Ubuntu
Для дистрибутивов Ubuntu начиная с Maverick Meercat и Debian начиная с Sid — установите пакет pmacct:
$ sudo apt-get install pmacct
Если в репозитории используемого дистрибутива есть версия pmacct
0.12.1 и выше, то ее можно установить из deb-пакета указанным выше способом. Если версия более ранняя или отсутствует — следует скачать pmacct последней версии (0.12.5 на момент написания данного руководства) и собрать его из исходных кодов, см. раздел для RHEL.
RHEL/CentOS
Для pmacct
в стандартной поставке отсутствует RPM, поэтому проще всего собрать его из исходных кодов.
1. Установите libpcap
:
# yum install libpcap # yum install libpcap-devel
2. Скачайте последнюю версию pmacct с официального сайта и распакуйте архив:
$ wget http://www.pmacct.net/pmacct-0.12.5.tar.gz $ tar zxf pmacct-0.12.5.tar.gz $ cd pmacct-0.12.5
3. Запустите скрипт конфигурации. Обязательно включите 64-битные счётчики:
$ ./configure --enable-64bit
4. Соберите и установите пакет:
$ make && sudo make install
5. Создайте каталог /etc/pmacct
:
# mkdir /etc/pmacct
Установка hcd
Gentoo
1. Получите от производителя АСР «Гидра» исходные коды hcd
(файл hcd-X.Y.tar.gz) и ebuild (файл hcd-X.Y.tar.gz).
2. Распакуйте в каталоге PORTDIR_OVERLAY
файл hcd-X.Y.ebuild.tar.gz
:
# tar zxvf hcd-1.2.ebuild.tar.gz -C /usr/local/portage
3. Для приложений АСР «Гидра» в Gentoo используется специальная категория пакетов app-hydra
. Чтобы система Portage знала об этой категории, выполните следующую команду:
# echo "app-hydra" >> /etc/portage/categories
4. Скопируйте файл hcd-X.Y.tar.gz
в каталог, где Portage хранит архивы с исходными кодами пакетов (обычно это /usr/portage/distfiles
):
# cp hcd-1.2.tar.gz /usr/portage/distfiles
5. Установите hcd
:
# emerge -av app-hydra/hcd
6. Установите Python-модуль dev-python/setuptools
, если он отсутствует:
# emerge -av dev-python/setuptools
Этот модуль содержит пакетный менеджер easy_install
для Python, который понадобится в следующем пункте.
7. Установите Python-модуль ConcurrentLogHandler
:
# easy_install ConcurrentLogHandler
Установка завершена.
Настройка nfacctd
1. Создайте файл /etc/pmacct/nfacctd.conf
следующего содержания:
Здесь самыми важными являются параметры nfacctd_ip
и nfacctd_port
, в которых нужно указать IP-адрес и номер UDP-порта, на который поступают пакеты Netflow. Значения прочих настроек, как правило, можно оставить по умолчанию.
Название агрегатора, которое пишется в квадратных скобках, если убрать из него -ab
(признак исходящего трафика) или -ba
(признак входящего трафика), должно совпадать с кодом агрегатора в АСР «Гидра». Стандартным названием агрегатора, начиная с версии АСР «Гидра» 2.1.15, является agg
.
Файл /etc/pmacct/networks.lst
необходим для указания подсетей, используемых при агрегации:
! Список используемых подсетей (включая серые) 1.2.3.4/17 5.6.7.8/19
2. Если поток Netflow приходит в nfacctd еще не отфильтрованным, то это можно сделать, включив в nfacctd.conf
следующие строки:
aggregate_filter[agg-ab]: src net 10.5.0.0/16 or src net 10.100.0.0/16 or src net 10.103.0.0/16 aggregate_filter[agg-ba]: dst net 10.5.0.0/16 or dst net 10.100.0.0/16 or dst net 10.103.0.0/16
Здесь задаются фильтры для статистики ab (по исходящему трафику) и ba (по входящему). Подсети нужно задавать те, в которых находятся абоненты. Синтаксис фильтра стандартный из библиотеки libpcap
(используется в tcpdump
, wireshark
и т. д.)
3. Не следует добавлять демон nfacctd
в автозапуск. Он будет запускаться автоматически агентом hcd
с правами системного пользователя hcd
. Поэтому необходимо убедиться, что следующие каталоги/файлы доступны этому пользователю с правами чтения и записи:
- /var/run/hydra/
- /etc/pmacct/networks.lst
Настройка агента hcd
1. Агент hcd
уже должен быть установлен на сервере. Обычно он находится в каталоге /opt/hydra/hcd
. Убедитесь, что для пользователя hcd доступны на чтение и запись следующие каталоги/файлы:
- /var/log/hydra/hcd/
- /etc/hydra/hcd.conf
2. Убедитесь, что демон hcd добавлен в автозапуск (Gentoo: rc-status
, Debian/Ubuntu: ls -al /etc/rc4.d/|grep hcd
)
3. Настройте конфигурационный файл агента hcd
/etc/hydra/hcd.conf
. Обычно конфигурация по умолчанию подходит и в ней нужно настроить только параметры доступа:
# Идентификатор коллектора трафика в АСР «Гидра». server id = 37301 # IP-адрес и порт, к которому привязывается сервер XML-RPC при запуске. server ip = 91.197.172.10 server port = 8888 # Логин и пароль на сервере XML-RPC для управления hcd server login = hydra server password = 123
4. Запустите hcd
в консольном режиме:
# sudo -u hcd /opt/hydra/hcd/bin/hcd.py -c
Если все действия выполнены правильно, то должно появиться сообщение об успешном запуске примерно следующего вида:
30.05.2011 19:06:12 CheckPIDAlive root DEBUG PID 16035 is running 30.05.2011 19:06:12 __init__ root INFO Attached to running aggregator (pid 16035) 30.05.2011 19:06:12 CreateXMLRPCServer root INFO Initializing XML-RPC server at 127.0.0.1:8888... 30.05.2011 19:06:12 RunXMLRPCServer root INFO Starting XML-RPC server...
Убедитесь, что процесс nfacctd
запустился:
# ps aux|grep nfacctd hcd 16035 0.1 0.0 19740 12072 ? S May10 40:31 nfacctd: Core Process [default] hcd 16081 0.0 0.0 23072 14552 ? S May10 26:23 nfacctd: IMT Plugin [agg-ba] hcd 16082 0.0 0.0 20176 11644 ? S May10 26:50 nfacctd: IMT Plugin [agg-ab]
5. Убедитесь, что Netflow-пакеты поступают в nfacctd
и агрегируются:
# tcpdump -i eth0 udp port 9992 listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 20:06:27.965803 IP 90.151.176.22.23801 > 90.151.179.106.9992: UDP, length 1464 20:06:27.966830 IP 90.151.176.22.23801 > 90.151.179.106.9992: UDP, length 1464 20:06:27.966837 IP 90.151.176.22.23801 > 90.151.179.106.9992: UDP, length 1464
$ /usr/bin/pmacct -s -p /var/run/hydra/hcd/ipacc-agg-ab.pipe | head SRC_IP DST_IP DST_MASK PACKETS BYTES 90.151.179.157 0.0.0.0 0 186 18297 90.151.176.222 90.151.176.0 21 44 7788 10.5.9.12 10.0.0.0 8 2 463 90.151.176.107 0.0.0.0 0 513 239569 ...
Особое внимание следует уделить проверке названий и последовательности полей в первой строке вывода утилиты pmacct
. Они должны называться именно так и идти именно в том порядке, как показано выше.
Настройка АСР «Гидра»
1. Войдите в АСР «Гидра».
2. Найдите коллектор трафика (Справочники -> Агенты -> Коллекторы трафика) и откройте форму его редактирования. Обычно он в системе уже существует и называется Главный коллектор.
3. Введите настройки управления коллектором в соответствии с настройками, заданными в файле hcd.conf
и сохраните их:
4. Откройте вкладку Компоненты. Там должен быть один компонент с кодом agg. Откройте форму его редактирования и привяжите к агрегатору все услуги передачи данных, которые будут с его помощью тарифицироваться:
5. Сохраните привязанные к агрегатору услуги, убедитесь, что агрегатор находится в состоянии Активный и вернитесь на вкладку Основные данные.
6. Установите галочку Обработка статистики по трафику в реальном времени. Убедитесь, что коллектор также находится в состоянии Активный и сохраните настройки. В нижней части страницы должно появиться сообщение вида Создана задача «Получение текущей статистики коллектора трафика Главный коллектор».
Подготовка к запуску
1. В АСР «Гидра» откройте форму редактирования параметров фирмы(Администрирование -> Параметры -> Параметры фирмы) и установите значение параметра Минимальный объём IP-трафика за сеанс для попадания в неучтённый, Мб в 0. Это позволит в случае возникновения ошибок тарификации определить их причину.
2. В случае, если hcd
и АСР «Гидра» находятся на разных серверах, убедитесь, что системное время на этих серверах синхронизируется по протоколу NTP и разница системного времени между серверами составляет не более 1 секунды.
3. Убедитесь, что в АСР выполнены все условия для успешной тарификации трафика:
- Введены все абоненты, по которым будет идти трафик (далее — «абоненты»), и для каждого их них выполняются нижеприведённые условия.
- Абонент находится в активном состоянии.
- У абонента заведено оборудование.
- Абонентское оборудование находится в активном состоянии.
- К абонентскому оборудованию привязаны IP-адреса/подсети (если сбор статистики выполняется с помощью Netflow/sFlow).
- У абонента есть лицевой счёт.
- У абонента есть договор на оказание услуг в состоянии Актуален.
- К абонентскому договору непосредственно или через базовый договор (поле Базовый договор на форме редактирования договора на оказание услуг) привязан приказ по ценам (далее — «ПЦ») с одним или несколькими тарифными планами.
- ПЦ находится в состоянии Актуален.
- В ПЦ заданы цены и другие характеристики для услуг передачи данных (как правило, они называются Интернет-трафик вх., Локальный трафик вх. и т.д.).
- Для услуг передачи данных в справочнике номенклатуры заданы классы трафика.
- К абонентскому договору непосредственно или через базовый договор (поле Базовый договор на форме редактирования договора на оказание услуг) привязан приказ по ценам (далее — «ПЦ») с одним или несколькими тарифными планами.
- Абонент подписан на тарифный план.
- По тарифному плану выставлен инвойс (вкладка Услуги -> Текущие услуги).
- Текущая дата попадает в период действия инвойса.
- По тарифному плану выставлен инвойс (вкладка Услуги -> Текущие услуги).
Запуск и тестирование
1. Запустите задание Получение текущей статистики коллектора трафика Главный коллектор (Администрирование -> Задания или форма редактирования коллектора трафика, вкладка Задания). Дождитесь завершения сеанса.
2. Проверьте логи выполнения задания на интерфейсе. Как правило, при первом запуске выдается информация о том, что был обнаружен неучтенный трафик.
3.
Возможные ошибки при выполнении задания:
- TNS:no listener (TNS: нет прослушивателя). АСР не может установить сетевое соединение с агентом
hcd
по указанным в настройках реквизитам. Проверьте настройки.
Анализ неучтенного трафика
1. Войдите в АСР «Гидра» и откройте отчёт по неучтённому трафику (Отчёты -> Неучтённый трафик).
2. Установите подходящий фильтр по периоду и добавьте в настройки отчёта следующие аналитики:
- Направление
- Объём (СУММ)
- Услуга
- IP/Подсеть A
- Маска подсети A
- IP/Подсеть B
- Маска подсети B
- Причина
- Объект
3. Запустите отчёт и дождитесь его выполнения.
4. Если в результатах отчёта нет ни одной строки, это может объясняться следующими причинами:
- Не настроен параметр Минимальный объём IP-трафика за сеанс для попадания в неучтённый (см. #Подготовка к запуску).
- Дата/время данных по трафику не попадает в период, за который сделан отчёт.
- Статистика по трафику не поступает в АСР.
- Весь трафик был успешно тарифицирован.