Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migration of unmigrated content due to installation of a new plugin

...

Code Block
collapsetrue
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

...

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

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

Code Block
title/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 Обычно конфигурация по умолчанию подходит и в ней нужно настроить только параметры доступа:

    Code Block
    # 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 в консольном режиме:

    Code Block
    languagebash
    user@server:~$ sudo /etc/init.d/hсdhcd run

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

    Code Block
    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 запустился:

    Code Block
    languagebash
    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 и агрегируются:

    Code Block
    languagebash
    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
    
    Code Block
    languagebash
    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.

...

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

...

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

Code Block
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

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

...

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

Пример:

Code Block
languagebash
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

...

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

 

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

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