8. Настройка сбора и обработки логов

8.1. Настройка коллектора в автономном режиме
8.2. Настройка коллектора в связке с flow-tools
8.3. Запуск коллектора
8.4. Наладка приёма данных коллектором в автономном режиме
8.5. Настройка обработки данных

Замечание

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.