Экспорт данных в CSV (Netflow/sFlow, NAT logging)

Для проверки, отладки или других целей существует возможность экспортировать данные по трафику из лог-файлов .bgdl/.data. Для этого необходимо выполнить консольную команду ./accounting.sh flowExport, например:

./accounting.sh flowExport -s 2 -h 2013-10-17-22 -tFmt "dd.MM.yyyy HH:mm:ss" -f flows.csv

Возможные параметры:

  • -s - ID устройства - источника данных (source_ID);

  • -h - фильтр по одному часу, формат ГГГГ-ММ-ДД-ЧЧ, например, 2013-10-17-22;

  • -tFrom - фильтр по периоду, начало периода, формат ГГГГ-ММ-ДДTЧЧ:ММ:СС, символ T - латинский;

  • -tTo - фильтр по периоду, конец периода, формат ГГГГ-ММ-ДДTЧЧ:ММ:СС, символ T - латинский;

  • -i - фильтр по интерфейсам, через запятую, например 1,4,7,41;

  • -r - фильтр по одному IP-адресу или диапазону IP-адресов, например, 192.168.0.1 или 192.168.0.1-192.168.0.24;

  • -f - имя файла, в который будет сохранен вывод;

  • -tFmt - формат времени в выводе, например, dd.MM.yyyy HH:mm:ss;

  • -dir - корневая директория с flow-логами, по умолчанию используется значение параметра datalog.flow.dir, т.е. та директория, в которую сохраняет логи InetAccounting;

  • -maxSort - кол-во выбранных записей для одного лог-файла, когда сортировку по времени нужно прекратить (для экономии памяти);

  • -writeIfaces - будет ли выводиться значения интерфейсов в CVS (1 или 0);

  • -tZone - зона (если данные сохранены в одной зоне, а запускаете flowExport с машины в другой зоне).

Минимально необходимые для выполнения параметры - -s, -h или -tFrom/-tTo, -f, например:

./accounting.sh flowExport -s 2 -tFrom 2014-01-01T00:00:00 -tTo 2014-01-31T23:59:59 -f 2014-01.csv -tFmt "yyyy-MM-dd HH:mm:ss"

Копия класса, производящего экспорт также находится в динамических классах - ru.bitel.bgbilling.modules.inet.dyn.accounting.detail.FlowExport. Его можно модифицировать под свои нужды и запустить командной:

./accounting.sh dynClassRun ru.bitel.bgbilling.modules.inet.dyn.accounting.detail.FlowExport -s 1 -h 2013-11-20-13 -f 2013-11-20-13.csv

Или лучше создать копию этого класса, модифицировать и запускать уже его, т.к. динамические классы из стандартной поставки перезаписываются при обновлении биллинга.

Команды, указанные выше, запускают экспорт внутри запущенного процесса InetAccounting. При необходимости Вы можете запустить экспорт отдельным процессом:

${JAVA_HOME}/bin/java -cp lib/app/*:lib/ext/* ru.bitel.bgbilling.modules.inet.accounting.detail.FlowExport -dir /dir/to/netflow/logs -s 2 -tFrom 2014-01-01T00:00:00 -tTo 2014-01-31T23:59:59 -f 2014-01.csv -tFmt "yyyy-MM-dd HH:mm:ss"

В этом случае также необходимо указать параметр -dir, т.к. значение параметра datalog.flow.dir при таком запуске недоступно.

Cisco NAT high-speed logging (HSL), Ericsson (Redback) SmartEdge NAT logging и MikroTik NAT log

Модуль Inet поддерживает логирование NAT Cisco NAT HSL, SE NAT logging и MikroTik NAT log, осуществляющееся с помощью Netflow9/IPFIX/Next Gen NetFlow. Для сохранения NAT-логов достаточно настроить прием/сохранение Netflow9.

Для получения информации по NAT-логам необходимо выполнить консольную команду ./accounting.sh natLogExport, например:

./accounting.sh natLogExport -s 1320 -tFrom 2014-08-09T14:02:00 -tTo 2014-08-09T16:03:00 -a 95.94.51.35 -f flow_nat.csv -tFmt "dd.MM.yyyy HH:mm:ss.SSS"

Возможные параметры:

  • -s - ID устройства - источника данных (source_ID);

  • -h - фильтр по одному часу, формат ГГГГ-ММ-ДД-ЧЧ, например, 2013-10-17-22;

  • -tFrom - фильтр по периоду, начало периода, формат ГГГГ-ММ-ДДTЧЧ:ММ:СС, символ T - латинский;

  • -tTo - фильтр по периоду, конец периода, формат ГГГГ-ММ-ДДTЧЧ:ММ:СС, символ T - латинский;

  • -a - внешний IP-адрес;

  • -p - внешний порт;

  • -f - имя файла, в который будет сохранен вывод;

  • -tFmt - формат времени в выводе, например, dd.MM.yyyy HH:mm:ss;

  • -dir - корневая директория с flow-логами, по умолчанию используется значение параметра datalog.flow.dir, т.е. та директория, в которую сохраняет логи InetAccounting;

  • -tZone - зона (если данные сохранены в одной зоне, а запускаете flowExport с машины в другой зоне).

Минимально необходимые для выполнения параметры - -s, -h или -tFrom/-tTo, -f, например:

./accounting.sh natLogExport -s 1320 -h 2014-08-09-15 -f flow_nat.csv

При необходимости Вы можете запустить экспорт отдельным процессом:

${JAVA_HOME}/bin/java -cp lib/app/*:lib/ext/* ru.bitel.bgbilling.kernel.network.datalog.netflow.nat.NatLogProcessor -dir /dir/to/netflow/logs -s 1320 -tFrom 2014-08-09T14:02:00 -tTo 2014-08-09T16:03:00 -a 95.94.51.35 -f flow_nat.csv -tFmt "dd.MM.yyyy HH:mm:ss.SSS"

В этом случае также необходимо указать параметр -dir, т.к. значение параметра datalog.flow.dir при таком запуске недоступно.