Экспорт данных в 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 при таком запуске недоступно.