Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 8 Next »

Назначение

Для сбора статистики по IP-трафику в АСР «Гидра» существует специализированное агентское приложение — hcd (Hydra Collector Daemon). Этот агент принимает статистику по трафику от различных источников, преобразует её во внутренний формат и передаёт в ядро АСР для тарификации.

Поддерживаемые источники данных

  • Агрегатор Netflow/sFlow pmacct версии 0.12 и выше. Для агрегации статистики, поступающей с маршрутизаторов по протоколу Netflow, используется входящий в состав pmacct демон nfacctd.
  • Другие источники (текстовый формат)

Предварительные требования

  1. Сервер с установленной ОС Linux. Далее приведены инструкции для дистрибутивов Gentoo, RHEL/CentOS и Debian/Ubuntu.
  2. Язык программирования 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 следующего содержания:

daemonize: true
pidfile: /var/run/hydra/nfacctd.pid
nfacctd_ip: 127.0.0.1
nfacctd_port: 9992

aggregate[agg-ba]: src_net,src_mask,dst_host
aggregate[agg-ab]: src_host,dst_net,dst_mask

plugins: memory[agg-ba], memory[agg-ab]

imt_path[agg-ba]: /var/run/hydra/ipacc-agg-ba.pipe
imt_path[agg-ab]: /var/run/hydra/ipacc-agg-ab.pipe

networks_file: /etc/pmacct/networks.lst

refresh_maps: true
plugin_buffer_size: 50240
plugin_pipe_size: 50240000
imt_buckets: 65537
imt_mem_pools_size: 1024000

Здесь самыми важными являются параметры 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|grep hcd, 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. Они должны называться именно так и идти именно в том порядке, как показано выше: SRC_IP DST_IP DST_MASK PACKETS BYTES

Настройка АСР «Гидра»

1. Войдите в АСР «Гидра».
2. Найдите коллектор трафика (Справочники -> Агенты -> Коллекторы трафика) и откройте форму его редактирования. Обычно он в системе уже существует и называется Главный коллектор.
3. Введите настройки управления коллектором в соответствии с настройками, заданными в файле hcd.conf, и сохраните их:

4. Откройте вкладку Компоненты. Там должен быть один компонент с кодом agg. Откройте форму его редактирования и привяжите к агрегатору все услуги передачи данных, которые будут с его помощью тарифицироваться:

5. Сохраните привязанные к агрегатору услуги, убедитесь, что агрегатор находится в состоянии Активный и вернитесь на вкладку Основные данные.
6. Установите галочку Обработка статистики по трафику в реальном времени. Убедитесь, что коллектор также находится в состоянии Активный и сохраните настройки. В нижней части страницы должно появиться сообщение вида Создана задача «Получение текущей статистики коллектора трафика Главный коллектор».

Подготовка к запуску

1. В АСР «Гидра» откройте форму редактирования параметров фирмы(Администрирование -> Параметры -> Параметры фирмы) и установите значение параметра Минимальный объём IP-трафика за сеанс для попадания в неучтённый, Мб в 0. Это позволит в случае возникновения ошибок тарификации определить их причину.
2. В случае, если hcd и АСР «Гидра» находятся на разных серверах, убедитесь, что системное время на этих серверах синхронизируется по протоколу NTP и разница системного времени между серверами составляет не более 1 секунды.
3. Убедитесь, что в АСР выполнены все условия для успешной тарификации трафика:

  • Введены все абоненты, по которым будет идти трафик (далее — «абоненты»), и для каждого их них выполняются нижеприведённые условия.
  • Абонент находится в активном состоянии.
  • У абонента заведено оборудование.
    • Абонентское оборудование находится в активном состоянии.
    • К абонентскому оборудованию привязаны IP-адреса/подсети (если сбор статистики выполняется с помощью Netflow/sFlow).
  • У абонента есть лицевой счёт.
  • У абонента есть договор на оказание услуг в состоянии Актуален.
    • К абонентскому договору непосредственно или через базовый договор (поле Базовый договор на форме редактирования договора на оказание услуг) привязан приказ по ценам (далее — «ПЦ») с одним или несколькими тарифными планами.
      • ПЦ находится в состоянии Актуален.
      • В ПЦ заданы цены и другие характеристики для услуг передачи данных (как правило, они называются Интернет-трафик вх., Локальный трафик вх. и т.д.).
        • Для услуг передачи данных в справочнике номенклатуры заданы классы трафика.
  • У абонента есть действующая подписка на тарифный план.
    • По тарифному плану выставлен инвойс (вкладка Услуги -> Текущие услуги).
      • Инвойс находится в состоянии Актуален или Подготовлен.
      • Текущая дата попадает в период действия инвойса.

Запуск и тестирование

1. Запустите задание Получение текущей статистики коллектора трафика Главный коллектор (Администрирование -> Задания или форма редактирования коллектора трафика, вкладка Задания). Дождитесь завершения сеанса.
2. Проверьте логи выполнения задания на интерфейсе. Как правило, при первом запуске выдается информация о том, что был обнаружен неучтенный трафик.

Возможные ошибки при выполнении задания:

  • TNS:no listener (TNS: нет прослушивателя). АСР не может установить сетевое соединение с агентом hcd по указанным в настройках реквизитам. Проверьте настройки.

Анализ неучтенного трафика

1. Войдите в АСР «Гидра» и откройте отчёт по неучтённому трафику (Отчёты -> Неучтённый трафик).
2. Установите подходящий фильтр по периоду и добавьте в настройки отчёта следующие аналитики:

  • Направление
  • Объём (СУММ)
  • Услуга
  • IP/Подсеть A
  • Маска подсети A
  • IP/Подсеть B
  • Маска подсети B
  • Причина
  • Объект

3. Запустите отчёт и дождитесь его выполнения.
4. Если в результатах отчёта нет ни одной строки, это может объясняться следующими причинами:

  • Не настроен параметр Минимальный объём IP-трафика за сеанс для попадания в неучтённый (см. #Подготовка к запуску).
  • Дата/время данных по трафику не попадает в период, за который сделан отчёт.
  • Статистика по трафику не поступает в АСР.
  • Весь трафик был успешно тарифицирован.

Передача статистики из внешнего источника

Предназначение

Агент hcd позволяет собирать статистику не только с помощью протоколов Netflow/sFlow, но и из любых других источников, например, от интеллектуальных устройств Cisco SCE (формат RDR). Также эта функция полезна при использовании АСР «Гидра» в датацентрах и у крупных операторов связи, где поток пакетов Netflow, поступающий с маршрутизаторов, превышает 20-30 МБит/с. При таких объемах трафика демон nfacctd может не успевать обрабатывать все поступающие на него пакеты Netflow. В этом случае рекомендуется использовать пакет flow-tools, собирать Netflow в архив и периодически делать по нему отчеты с помощью утилиты flow-report, результаты которой передавать в hcd с помощью функции загрузки статистики с внешнего источника.

Формат данных для передачи статистики

Статистика от внешних источников передавается в hcd в формате CSV, разделитель полей — точка с запятой («;»). Одна строка статистики выглядит следующим образом:

EXT_GOOD_ID; EXT_OBJECT_ID; D_BEGIN; D_END; ADDR_1/MASK_1; ADDR_2/MASK_2; BYTES;

Название поля

Описание

EXT_GOOD_ID

Идентификатор услуги из АСР «Гидра»

EXT_OBJECT_ID

Код оборудования из АСР «Гидра»

D_BEGIN

Дата начала потока данных (Unix timestamp, в UTC)

D_END

Дата окончания потока данных (Unix timestamp, в UTC)

ADDR_1/MASK_1

IP-адрес (подсеть) отправителя и его маска в CIDR-формате. Для IP-адресов значение маски 32

ADDR_2/MASK_2

IP-адрес (подсеть) получателя и его маска в CIDR-формате

BYTES

Объем данных в байтах

Пример:

c39501;;1291242554;1291242554;10.5.10.6/32;0.0.0.0/0;900

Если оборудование передает статистику по входящему и исходящему трафику в одном пакете, то на каждый пакет данных от оборудования должно приходиться две строки для передачи в hcd — для входящего трафика одна строка (например, услуга Интернет вх.), для исходящего — вторая (Интернет исх.).

Если для каждой строки статистики заданы поля EXT_OBJECT_ID и EXT_GOOD_ID, то поля ADDR_1/MASK_1 и ADDR_2/MASK_2 можно оставить пустыми. Если же код оборудования и ID услуги неизвестны, то адреса и маски нужно обязательно указывать, чтобы АСР смогла подобрать услугу по классам трафика (задаются в настройках услуг в справочнике номенклатуры), а оборудование — по IP-адресу.

Передача статистики

Статистика от внешних источников поступает в hcd с помощью утилиты hcdctl, входящей в состав этого пакета. Вызывать её нужно следующим образом:

$ hcdctl.py [OPTIONS] putfile <statistics name>

В качестве опций обычно нужно указывать:

  • -f <имя файла статистики>
  • -u https://user:password@host:port для авторизации на hcd
    В аргументе <statistics name> нужно передавать название статистики. Оно состоит из кода агрегатора в АСР (обычно agg) и окончивается на -ab (для статистики по исходящему трафику) или -ba (для статистики по входящему трафику).

Если для идентификации услуги и оборудования в статистике используются поля EXT_OBJECT_ID и EXT_GOOD_ID, то статистику и по входящему, и по исходящему трафику можно передавать в одном файле, и в аргумент <statistics name> передавать agg-ab. Если же услуга и оборудование определяются по IP-адресам (ADDR_1/MASK_1 и ADDR_2/MASK_2), то нужно разделять статистику на два файла и загружать её в hcd в два приема — в одном файле должна быть статистика по исходящему трафику (agg-ab), а во втором — по входящему (agg-ba).

Пример:

$ hcdctl.py -f /tmp/stat-out.txt -u http://hydra:q123@127.0.0.1:8888 putfile agg-ab
$ hcdctl.py -f /tmp/stat-in.txt -u http://hydra:q123@127.0.0.1:8888 putfile agg-ba
  • No labels