Биллинг netams 4 на debian 7

БИЛЛИНГ!!! На основе Netams4 под управлением операционной системы debian 7.

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

Да, в простом варианте есть другие способы, например прокси и статистика снятая с его логов. Достаточно разумный вариант когда кому то нужен контроль именно веб страниц. Минусы всем известны, нельзя адекватно, не делая mitm атаку на сертификаты, прослушать внутренности ssl трафика, всем пользователям нужно прописывать прокси в браузере, не учитывается сторонний трафик, такой как почта, торрент, сторонние ресурсы на не стандартных портах. А ведь в современном мире нельзя думать что интернет это только www.

Другим способом является самописный скрипт, который складывает куда либо информацию о проходящем через iptables трафике. Таким скриптом можно добиться записи общего количества трафика по конкретным хостам, на основе таблиц сделать простенькое разделение по правилам 80, 443, 25 порт и тд, но для этого надо писать кучу правил в iptables и это не всегда правильное решение, особенно когда транзитный маршрутизатор с правилами FORWARD – j ACCEPT.

В таких случаях применяются биллинговые системы. Что такое биллинг можно почитать в википедии или специализированном ресурсе, если вы читаете эту статью, то наверняка уже имеете представление об этом. В кратце мы прослушиваем сенсором\собираем информацию с сенсоров о каждом пакете данных проносящихся через маршрутизатор. Причем маршрутизаторов может быть много. Потом эта информация передается в ядро биллинга и записывается в базу данных для хранения. А уже потом через веб форму при запросе данных ядро читает эту информацию из базы и выводит на экран статистику.

Выбор остановился на нетамсе 4 версии. До этого был опыт общения и работы с нетамсом 3. Опыт был достаточно хороший, сама система мне всегда нравилась, была возможность пилить самостоятельно отдельные части. В новом нетамсе внутренности оказались закрыты, так как написано оно уже на яве, что сначала меня отпугнуло. Всем известно что ява прожорлива до памяти. А как например водрузить биллинговую систему на шлюз компании в котором всего то полгига-гиг памяти? Да, непростое это занятие. Однако было решено задействовать систему. Выделена виртуальная машина с 6 Гб памяти, 3 процессарам, 10 Гб диска. Установлена самая последняя версия debian 7. И понеслось.

Проблемы с Явой.

Создаем папку, например /usr/netams4/ с правами на запись руту. Качаем туда архив с netams’ом   wget http://www.netams.com/files/netams4/netams4.0.1625-linuxx64.tar.gz

Проверяем скачанное выводом ls.

Распаковываем tar xvzf netams4…tar.gz

Этот архив распакуется в ту же директорию.

Качаем коллектор траффика н4агент wget http://www.netams.com/files/netams4/agents/n4agent_pcaplinux64

Запускаем например так. /usr/netams4/n4agent_pcap-linux64 -c 127.0.0.1:20002 -p /var/run/n4agent.pid –d

Или если на другой машине-шлюзе, то так.

/home/sysadmin/netams4/n4agent_pcap-linux -c 192.168.1.96:20002 -p /var/run/n4agent.pid -i eth0 -s 123456 -d

 

Ставим яву. Надо добавить contrib non-free к имеющимя репозиториям для доступа к проприетарным программам, таким как ява.

Далее обновляем репы и ставим нужную нам яву стандартным способом из репов пакетным менеджером apt-get.

 

/usr/lib/jvm – путь к установленным ява машинам на дебиане.

 

Делаем сим-линк в нашу папку с нетамсом так

ln –s /usr/lib/jvm/sun-java6 java

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

 

Добавим ПООЧЕРЕДНУЮ автозагрузку биллинга в файл /etc/rc.local

 

  cd /usr/netams4

  cd jserver && /bin/sh jserver-startup.sh && cd ..

  cd webadmin && /bin/sh webadmin-startup.sh && cd ..

  sleep 10

  cd repserver && /bin/sh repserver-startup.sh && cd ..

 

exit 0

 

Проблемы с биллингом и их решения.

После изменений на сервере биллинга я настраивал там еще кое-что и вносил изменения в ОС. Потом при попытке рестарта биллинга оно внезапно стало выводить ошибки ядра биллинга на невозможность подключения. Долго думал, настройки нетамса не менял. Наткнулся на этот кусок текста, проблема была решена. На будущее не забыть и быть внимательнее.

В завершение, вам необходимо убедиться в правильности настройки локальной службы DNS. Компоненты netams4 общаются между собой по TCP/IP, по умолчанию используя адрес “localhost”. Из-за особенностей реализации механизма RMI в виртуальной машине Java происходит определение локального имени хоста, и попытка связи с ним по IP-адресу, полученному из данного имени. Таким образом, если команда `hostname` на вашей машине выдает некоторое имя вашего хоста, например “myserver”, то прямое преобразование имени в IP-адрес должно завершаться успехом, т.е. к примеру `ping myserver` должен приводить к ответам. Если это не так, оперативное решение проблемы состоит в добавлении записи:

127.0.0.1                 myserver

 

в файл /etc/hosts

 

 

 

Проблемы с базой данных.

При первоначальной инсталляции и настройке все было сделано в тестовой среде на виртуальной машине с Debian 7. Выделено ресурсов – 6Гб памяти, 3 ядра процессора, 10 Гб диска. Ресурсы кроме диска подбирались во время тестирования для оптимальной производительности. Система была оттестирована и принята в долговременный тест в боевые условия. Биллинг отлично справлялся с задачей, это на самом деле отличный вариант для организаций по учету, хранению и статистике трафика.

Однако со временем тестовый жесткий диск подходил к концу. Объемы данных о трафике были большими и постоянно накапливались. Всё это дело писалось в БД MySQL на этом же сервере.

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

Проблема такая, что простыми способами обойтись не получилось. Phpmyadmin не смог работать с базами таких размеров. Даже дамп адекватно сделать не смог. Другие сторонние средства так же не шибко помогли. С разворотом базы на новом сервере вообще дела плохи, даже 600 мегабайтный дамп вываливался с ошибкой. Были перепробованы всевозможные настройки, отключения таймаутов, копирование целевого дамп в каталог, отключение всех лимитов и тд и тп. Итогом был максимум разворот на около миллиона записей. А нам требовалось от 40 миллионов записей перенести.

Применился mysqldump.

На конечном новом сервере устанавливается mysqld, создается база данных netams4 такая же как и была на исходном сервере. Сама база переносится с системных разделов на отдельный, в нашем случае на программный рейд /raid0/mysql путем остановки сервера, копирования файлов в новое место, установки прав рекурсивно на каталоги и файлы перемещенные, прописывания нового места базы данных в конфиге /etc/mysql/my.cfg, запуска сервера mysqld. Далее переходим в любой понравившийся каталог где много места.

После путем подключения к удаленному серверу делаем дамп баз данных сразу на целевой сервер (должно быть доступно подключение по сети).

mysqldump –u root –p –h 192.168.1.7 –p –no-data netams4 > no-data-netams4.sql

mysqldump –u root –p –h 192.168.1.7 –p netams4 > netams4.sql

Таким образом, мы сделали дамп структуры интересующей нас базы по таблично и собственно сами данные. Обратный разворот происходит на целевом сервере, сначала создаем новую базу данных, потом разворачиваем дамп всех таблиц, получаем пустую базу со всеми нужными таблицами, привилегиями и свойствами. Потом разворачиваем дамп с данными этой базы. Итог, база корректно перенесена и готова к бою.

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

 

Конфиг cat /etc/mysql/my.cnf на целевом сервере в сети.

 

# The MySQL database server configuration file.

#

# You can copy this to one of:

# – “/etc/mysql/my.cnf” to set global options,

# – “~/.my.cnf” to set user-specific options.

[client]

port               = 3306

socket           = /var/run/mysqld/mysqld.sock

[mysqld_safe]

socket           = /var/run/mysqld/mysqld.sock

nice               = 0

 

[mysqld]

user              = mysql

pid-file = /var/run/mysqld/mysqld.pid

socket           = /var/run/mysqld/mysqld.sock

port               = 3306

basedir                   = /usr

datadir                   = /raid0/mysql

tmpdir           = /tmp

language      = /usr/share/mysql/english

skip-external-locking

###################################################

#bind-address                  = 127.0.0.1

##################################################

key_buffer              = 1024M

max_allowed_packet      = 256M

thread_stack          = 1024K

thread_cache_size       = 32

myisam-recover         = BACKUP

max_connections       = 200

table_cache           = 6400

thread_concurrency     = 10

query_cache_limit  = 10M

query_cache_size       = 500M

expire_logs_days   = 10

max_binlog_size         = 100M

[mysqldump]

quick

quote-names

max_allowed_packet      = 160M

[mysql]

#no-auto-rehash    # faster start of mysql but no tab completition

[isamchk]

key_buffer              = 160M

!includedir /etc/mysql/conf.d/

 

В итоге у нас получилась замечательная система биллинга, которая пережила 3 перемещения с сервера на сервер, получила физическое распределение компонентов и прекрасно себя чувствует.

Ядро на одной виртуальной машине, база данных на другом физическом сервере, коллекторы трафика на шлюзах. Всё работает как часы, база данных на момент написания размером около 30 Гб. Данные 2 годичной давности легко достаются за самое короткое время, отчеты за год конечно строятся долго, но зато очень точно.

Leave a Reply

Your email address will not be published. Required fields are marked *