Настройка сбора и обработки логов
BGIPNNetFlowCollector обновляется как обычное серверное приложение биллинга. Необходимо обновить приложение перед первым запуском.
В данном руководстве пропущена настройка экспорта NetFlow-логов на вашем роутере, вы можете обратится к его документации для выяснения данного момента. Для PC-роутеров вы можете использовать NetFlow-агент ipcad.
Установите на вашей машине BGIPNNetFlowCollector, который можно загрузить с нашего сайта. Распакуйте архив например на диск C: (для MS), либо /usr/local для Linux.
Следующий абзац актуален только для MS-систем.
Далее установите переменную среды BGIPN_NETFLOW_HOME=C:\BGIPNNetflowCollector. Как устанавливать переменные среды вы можете посмотреть в документации по установке сервера. Также на машине с коллектором должна быть установлена переменная JAVA_HOME. Если на этой машине уже установлен сервер биллинга, либо радиус сервер, она уже указана. Вызовите скрипт netflow_install.bat для установки службы и можете запускать/останавливать коллектор через консоль управления службами MS. После установки системных переменных перезагрузите машину с коллектором.
Для UNIX-систем укажите в файле netflow.sh переменную JAVA_HOME - путь к установленной jre, либо jdk (например /opt/jdk). Создайте службу запуска коллектора через скрипт netflow_start.sh и стопа через netflow_stop.sh, либо просто сделайте его автоматически стартующим после mysql-демона. Скрипты для /etc/init.d можно сделать по аналогии со скриптами bgbilling, bgscheduler.
Коллектор хранит логи в бинарных файлах собственного формата. При этом записи хранятся в своем изначальном виде - т.е. пакеты netflow и sflow хранятся как есть. Часовой лог может хранится в нескольких файлах. Лог совместим с форматом XDR. Лог состоит из заголовка и данных. Данные могут быть разбиты на блоки одинаковой длины, при этом, если данных в блоке меньше, чем его длина, то оставшееся место заполнено нулевыми байтами. Данные могут быть сжаты zlib (блоки сжимаются в одном zlib потоке).
Формат файла лога:
header {
int
magic =
"BGDL"
=
0x4247
;
int
version =
2
;
int
type =
1
(IP);
int
header_params_length;
param<> {
int
param_type;
int
param_value_length;
opaque value;
}
}
data {
block<> {
int
block_length;
long
reserved;
int
reserved;
opaque block_data;
}
}
Коллектор может работать как в автономном режиме, принимая и обрабатывая логи, так и взаимодействуя с flow-tools коллектором. Обработка логов производится непосредственно самим коллектором, что позволяет хорошо разносить нагрузку по машинам.
Логи складываются в дерево каталогов в следующем формате:
source_<код источника>
+ yyyy/
+ yyyy-MM/
+ yyyy-MM-dd/
+ log_yyyy-MM-dd-HH.nnn.bgdl
например, лог за 3 час 25-го мая 2009 года:
source_1
+
2009
/
+
2009
-
05
/
+
2009
-
05
-
25
/
+ log_2009-
05
-
25
-
03.000
.bgdl
+ log_2009-
05
-
25
-
03.001
.bgdl
+ log_2009-
05
-
25
-
03.002
.bgdl
Для начала работы необходимо сконфигурировать файл netflow_ipn.properties в соответствии с необходимым функционалом.
# Порт управления коллектором
port.admin=
2003
# Опции подключения к БД
db.driver=com.mysql.jdbc.Driver
db.url=jdbc
:mysql
://
127
.
0
.
0
.
1
/bgbilling?useUnicode=
true
&characterEncoding=
UTF
-
8
db.user=bill
db.pswd=bgbilling
db.maxActive=
300
db.maxIdle=
100
# Код модуля IPN
collector.mid=
XXX
# Где будут храниться логи (папка должна существовать и должны быть полные права на неё для процесса коллектора)
log.dir=/usr/bill/log
# Обрабатывать логи
process=
1
# Источники, логи которых будут обрабатываться коллектором
# данное поле не влияет на прием данных, а только на обработку логов
process.sources=<числовые коды источников>
# Кколичество обработчиков часовых логов,
# т.е. если необходимо обработать несколько часов, то их будут обрабатывать указанное кол-во потоков,
# на каждый час - один поток
#process.thread.count=1
# Количество потоков-обработчиков часового лога
# Указанное количество потоков будет обрабатывать часовой лог
# (не действует для старого формата логов и для логов snmp)
#process.datalog.thread.count=1
# Частота генерации заданий на обработку логов в минутах
# Если опция не указана, генерация происходит только на границе часа
#generate.minutes=30
# Каталог, куда будет выкладываться детализация на сервере
#ipn.collector.detail.folder=tmp
В параметре collector.mid файла netflow_ipn.properties укажите числовой код вашего модуля IPN, вы можете его узнать в редакторе модулей и услуг. Если база расположена на отличной от коллектора машине или вы меняли логин/пароль, скорректируйте опции подключения к БД. В параметре process.sources укажите числовые коды источников, логи которых коллектор будет обрабатывать, через запятую. Параметр log.dir определяет директорию расположения бинарных логов.
Код источника можно посмотреть на вкладке Источники экземпляра модуля IPN в первом столбце таблицы.
Возможно использование коллектора в автономном режиме, при этом он сам будет сохранять логи в файлы и производить их обработку ежечасно или чаще (опция generate.minutes). Также коллектор выполняет задания на переобработку логов добавленные пользователем в менеджере источников вручную.
Либо коллектор может работать в связке с flow-tools или иными сторонними коллекторами, при этом он При работе в связке с flow-tools коллектор перестаёт выполнять функции коллектора и остаётся лишь обработчиком.
Далее идёт описание запуска коллектора в автономном режиме и связке с flow-tools.