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 57 Next »

Назначение

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

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

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

Установка pmacct и HCD

В случае, когда статистика поступает не по протоколам NetFlow и sFlow, pmacct устанавливать и настраивать не требуется.

  1. Установка агента HCD достаточно проста и описана во вложенной статье.

  2. Установка pmacct:

     user@server:~$ sudo aptitude update         \\
                    sudo aptitude install pmacct

Настройка nfacctd

Отредактируйте файл /etc/pmacct/nfacctd.conf, заменив его содержимое следующей конфигурацией:

daemonize: true
pidfile: /var/run/hydra/hcd/nfacctd.pid
logfile: /var/log/hydra/hcd/nfacctd.log

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

aggregate_filter[agg-ab]: src net 1.2.3.4/17 or src net 5.6.7.8/19
aggregate_filter[agg-ba]: dst net 1.2.3.4/17 or dst net 5.6.7.8/19

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

imt_path[agg-ba]: /var/run/hydra/hcd/ipacc-agg-ba.pipe
imt_path[agg-ab]: /var/run/hydra/hcd/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-адрес (рекомендуется использовать внешний адрес вместо localhost) и номер UDP-порта, на который поступают пакеты NetFlow. Значения прочих настроек, как правило, можно оставить по умолчанию.

Название агрегатора, которое пишется в квадратных скобках, если убрать из него -ab (признак исходящего трафика) или -ba (признак входящего трафика), должно совпадать с кодом агрегатора в АСР «Гидра». Стандартным названием агрегатора, начиная с версии АСР «Гидра» 2.1.15, является agg.

Параметр aggregate_filter нужен для того, чтобы отфильтровать среди всех входящих NetFlow-пакетов только нужные, а также для разделения входящего (ba) и исходящего (ab) трафика. Подсети в фильтрах нужно задавать те, в которых находятся абоненты. В приведённой выше конфигурации это подсети 1.2.3.4/17 и 5.6.7.8/19. Синтаксис фильтра стандартный из библиотеки libpcap (используется в tcpdump, wireshark и т. д.). Обычно фильтр для исходящего трафика выглядит следующим образом (см. пример конфига выше):

aggregate_filter[agg-ab]: src net X or src net Y ... or src net Z

Фильтр для входящего трафика выглядит аналогично, только вместо конструкций ... or src net ... используется ... or dst net ....

Файл /etc/pmacct/networks.lst необходим для указания подсетей, используемых при агрегации:

! Список используемых подсетей (включая серые)
1.2.3.4/17
5.6.7.8/19

В этом файле необходимо вручную прописать список всех подсетей провайдера в CIDR-нотации, каждая на отдельной строке.

Для файла лога, указанного в параметре logfile, необходимо настроить ротацию с помощью logrotate:

/etc/logrotate.d/nfacctd
/var/log/hydra/hcd/nfacctd.log {
    daily
    rotate 90
    delaycompress
    dateext
    missingok
    su hcd hcd
    postrotate
        /usr/bin/killall -HUP nfacctd
    endscript
} 

Не следует добавлять демон nfacctd в автозапуск. Он будет запускаться автоматически агентом HCD с правами системного пользователя hcd. Поэтому необходимо убедиться, что директория /etc/pmacct доступна этому пользователю.

Для применения изменений необходимо перезапустить nfacctd.

Настройка агента HCD

  1. Отредактируйте конфигурационный файл агента HCD, по умолчанию это файл /etc/hydra/hcd/hcd.conf Обычно конфигурация по умолчанию подходит и в ней нужно настроить только параметры доступа:

    # For Netflow (nfacctd)
    module current_statistics = on
    
    # For custom statistics format
    module external_statistics = off
     
    # Идентификатор коллектора трафика в АСР «Гидра».
    server id = 37301
    
    # IP-адрес и порт, к которому привязывается встроенный в hcd сервер XML-RPC при запуске.
    # По этому адресу АСР связывается с hcd для снятия статистики по трафику.
    # Обратите внимание, что в АСР нужно задать настройки управления коллектором (см. ниже) в соответствии с данными параметрами.
    server ip = 127.0.0.1
    server port = 8888
    
    # Логин и пароль на сервере XML-RPC для управления hcd
    server login = hydra
    server password = 123

    Обратите внимание что параметры module current_statistics и module external_statistics не могут быть включены одновременно.

  2. Запустите HCD в консольном режиме:

    user@server:~$ sudo /etc/init.d/hcd run

    Если все действия выполнены правильно, то должно появиться сообщение об успешном запуске примерно следующего вида:

    InstallSignalHandlers root INFO Installing signal handlers...
    CreateXMLRPCServer root INFO Initializing XML-RPC server at 127.0.0.1:8888...
    RunXMLRPCServer root INFO Starting XML-RPC server...
  3. Убедитесь, что процесс nfacctd запустился:

    user@server:~$ sudo 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]
  4. Убедитесь, что Netflow-пакеты поступают в nfacctd и агрегируются:

    user@server:~$ sudo 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
    
    user@server:~$ /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
    Если пакеты по какой-то причине не агрегируются, попробуйте проверить настройки iptables.

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

  1. Войдите в АСР «Гидра».
  2. Найдите коллектор трафика (Оборудование -> Агенты -> Коллекторы трафика) и откройте форму его редактирования. Обычно он в системе уже существует и называется Collector.
  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

Конфигурация HCD отличается от стандартной тем, что в данном случае не используется pmacct. Соответственно, помимо стандартных настроек в файле hcd.conf нужно сделать еще следующие:

module current_statistics = off
module external_statistics = on # (по умолчанию отключено)

# ...

aggregator autostart = off
aggregator autoattach = off

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

Статистика от внешних источников передаётся в 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

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

Пример:

39501;;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-адресу.

Примечание. Для успешной тарификации трафика загружаемого из файла поле ADDR_2/MASK_2 должно в точности соответствовать значению поля "Адрес Б" из состава действующего ПКТ. Использование групп подсетей в качестве адреса Б в ПКТ будет невозможно.

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

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

user@server:~$ hcdctl.py [OPTIONS] putfile <statistics name>

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

  • -f <имя файла статистики>
  • -u http://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).

Пример:

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

Примечания

При возникновении ошибки переполнения буфера записи:

/var/log/hydra/hcd/nfacctd.log
WARN ( agg-print/print ): Unable to write data: try with a larger 'print_cache_entries' value.

необходимо добавить в /etc/pmacct/nfacctd.conf строку:

/etc/pmacct/nfacctd.conf
print_cache_entries[agg-ab]: 32771

где agg-ab - название агрегатора, после чего выполнить перезапуск агентов и проверить их работу:

user@server:~$ sudo /etc/init.d/ncd stop
user@server:~$ sudo /etc/init.d/nfacct stop
user@server:~$ sudo /etc/init.d/hcd start
user@server:~$ sudo ps aux | grep nfacctd

При необходимости значение параметра можно еще увеличить.

 

На этапе настройки HCD, если очень хочется его проверить сразу, можно не дожидаться, пока клиент настроит отправку netflow и попинать его вручную вот этим. На машине с докером выполняем 

docker run -it --rm networkstatic/nflow-generator -t {адрес сервера предбиллинга} -p 9992
  • No labels