forum.bitel.ru http://forum.bitel.ru/ |
|
[6.0] IPN в Inet (CRM) http://forum.bitel.ru/viewtopic.php?f=44&t=9079 |
Страница 1 из 1 |
Автор: | Phricker [ 25 мар 2014, 10:58 ] |
Заголовок сообщения: | [6.0] IPN в Inet |
Тестирую перенос всех IPN договоров в Inet. Пока решил для теста разделить netflow при помощи samplicate. Один поток идет в IPN, другой в Inet. Код: /usr/local/bin/samplicate -s 127.0.0.1 -p 2004 -f 127.0.0.1/2015 127.0.0.1/2010 /usr/local/bin/samplicate -s 127.0.0.1 -p 2029 -f 127.0.0.1/2020 127.0.0.1/2021 netflow идет с двух железок. Получается для того, чтобы сейчас получать netflow в Inet мне нужно создать два слушателя InetFlowListener с разными портами? |
Автор: | Phricker [ 25 мар 2014, 11:20 ] |
Заголовок сообщения: | Re: [6.0] IPN в Inet |
Цитата: Обычно достаточно оставить параметр agentDeviceIds пустым, что будет означать, что поток будет приниматься со всех устройств-источников, начиная от корневого устройства Accounting-сервера. Однако в ситуации, когда с одного IP-адреса приходит два потока с разных источников, чтобы Accounting корректно разделял данные на два источника, необходимо создать два устройства-источника с одним и тем же IP-адресом и добавить два слушателя на двух разных портах и в agentDeviceIds одного прописать первый источник, во втором - второй. Таким образом трафик, идущий с одного и того же адреса на один порт будет считаться как трафик с одного источника, на другой порт - с другого источника. В принципе нашел в доке ответ. Тогда следующий вопрос. В IPN у нас просто собирался трафик по IP Чтобы не заморачиваться, при заведении IP на договоре указывались оба источника. И вне зависимости от того откуда приходил трафик - он сажался на нужный договор. В Inet если указывать устройство то трафик будет приходить только с него? Для моей схемы нужно не указывать устройство при заведении сервисов Inet? |
Автор: | Phricker [ 25 мар 2014, 15:45 ] |
Заголовок сообщения: | Re: [6.0] IPN в Inet |
Скопировал папку BGInetAccounting. Чтобы поднять flowListener Поменял настройки в inet-accounting.xml Поменял порт и имя приложения в accounting.sh Запускаю. Код: [root@bgbilling log]# cat ./all.log 03-25/13:42:15 INFO [main] DefaultServerSetup - Init DB connection pools 03-25/13:42:15 ERROR [EventProcessor-init] EventProcessor - Name mq is not bound in this Context javax.naming.NameNotFoundException: Name mq is not bound in this Context at org.apache.naming.NamingContext.lookup(NamingContext.java:803) at org.apache.naming.NamingContext.lookup(NamingContext.java:159) at ru.bitel.bgbilling.kernel.event.EventProcessor$5.call(EventProcessor.java:1070) at ru.bitel.bgbilling.kernel.event.EventProcessor$5.call(EventProcessor.java:1) at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303) at java.util.concurrent.FutureTask.run(FutureTask.java:138) at java.lang.Thread.run(Thread.java:662) Что он хочет от меня |
Автор: | Phricker [ 25 мар 2014, 15:48 ] |
Заголовок сообщения: | Re: [6.0] IPN в Inet |
Код: <!-- Создание Accounting -->
<bean name="accounting" class="ru.bitel.bgbilling.modules.inet.accounting.Accounting"/> <!-- Cоздание процессора flow-пакетов --> <context name="collector"> <!-- Служебный ScheduledExecutorService, необходимый для dataLogger --> <scheduledExecutorService name="hrlydtlggr" corePoolSize="1"/> <!-- Cоздание dataLogger, сохраняющего flow-пакеты на диск (только один экземпляр) --> <bean name="flowDataLogger" class="ru.bitel.bgbilling.modules.inet.collector.IPHourlyDataLogger"> <param name="scheduledExecutor">hrlydtlggr</param> </bean> <!-- Cоздание слушателя flow-пакетов на порту с передачей ему dataLogger --> <bean name="flowListener" class="ru.bitel.bgbilling.modules.inet.collector.InetFlowListener"> <constructor factoryMethod="newInstance"> <!-- Тип слушателя, netflow, netflow9 или sflow --> <param name="type" value="netflow"/> <!-- Хост (интерфейс), на котором будет открыт сокет. Если пусто - на всех --> <param name="host" value=""/> <!-- Порт, на котором будет открыт сокет --> <param name="port" value="2015"/> <!-- Размер буфера приема слушателя --> <param name="recvBufferSize">4 * 1024 * 1024</param> <!-- Рекомендуемый SO_RCVBUF сокета --> <param name="soRCVBUF">512 * 1024</param> <!-- Количество потоков-обработчиков --> <param name="threadCount" value="10"/> <!-- id устройств-источников, если на данном порту нужно получать пакеты только c определенных источников --> <param name="agentDeviceIds" value=""/> <!-- id устройств-источников, если на данном порту нужно обрабатывать пакеты только c определенных источников --> <param name="processAgentDeviceIds" value=""/> <!-- 1, если нужно запретить сохранять и обрабатывать пакеты, в которых нет записей с IP-адресами из IP-ресурсов --> <param name="ipResourceFilter" value=""/> <!-- Передача dataLogger --> <param name="dataLogger">flowDataLogger</param> </constructor> </bean> <context name="detail"> <!-- Cоздание обработчика flow детализации --> <bean name="detailWorker" class="ru.bitel.bgbilling.modules.inet.accounting.detail.InetDetailWorker"/> </context> </context> |
Автор: | Amir [ 25 мар 2014, 15:56 ] |
Заголовок сообщения: | Re: [6.0] IPN в Inet |
А параметры подключения к activeMQ указаны? Нормально подключается? |
Автор: | Amir [ 25 мар 2014, 15:59 ] |
Заголовок сообщения: | Re: [6.0] IPN в Inet |
Цитата: Тогда следующий вопрос. В IPN у нас просто собирался трафик по IP При заведении нужно привязать к какому-либо устройству. А уже у этого устройства можно указать привязки flow. Например: Чтобы не заморачиваться, при заведении IP на договоре указывались оба источника. И вне зависимости от того откуда приходил трафик - он сажался на нужный договор. В Inet если указывать устройство то трафик будет приходить только с него? Для моей схемы нужно не указывать устройство при заведении сервисов Inet? Код: flow.agent.link=<agentDeviceId1>:-1,<agentDeviceId2>:-1 -1 - означает все интерфейсы. Например, в ситуации, когда коммутатор/устройство, к которому подключен/привязан абонент подключен двумя интерфейсами (3 и 5) к flow-агенту, то можно прописать вместо Код: flow.agent.link=<agentDeviceId>:-1 так: Код: flow.agent.link=<agentDeviceId>:3,<agentDeviceId>:5
|
Автор: | Phricker [ 25 мар 2014, 16:04 ] |
Заголовок сообщения: | Re: [6.0] IPN в Inet |
Так полностью папка скопирована с BGInetAccounting работающего. И там все работает. Изменения произошли только в строках Код: <param name="app.name" value="BGInetAccounting"/> |||| <param name="app.name" value="BGIPNAccounting"/> <param name="app.id" value="3"/> |||| <param name="app.id" value="6"/> <param name="rootDeviceId" value="1"/> |||| <param name="rootDeviceId" value="463"/> <param name="port" value="2000"/> |||| <param name="port" value="2015"/> И был удален следующий блок Код: <context name="radius">
<!-- Cоздание процессора radius-пакетов --> <bean name="radiusProcessor" class="ru.bitel.bgbilling.modules.inet.radius.InetRadiusHelperProcessor"/> <!-- Служебный ScheduledExecutorService, необходимый для dataLogger --> <scheduledExecutorService name="hrlydtlggr" corePoolSize="1"/> <!-- Cоздание dataLogger, сохраняющего radius-пакеты на диск (только один экземпляр) --> <bean name="radiusDataLogger" class="ru.bitel.bgbilling.modules.inet.radius.RadiusHourlyDataLogger"> <param name="scheduledExecutor">hrlydtlggr</param> </bean> <!-- Cоздание слушателя radius-пакетов на порту с передачей ему процессора и dataLogger --> <bean name="radiusListener" class="ru.bitel.bgbilling.modules.inet.radius.InetRadiusListener"> <constructor> <!-- Хост (интерфейс), на котором будет открыт сокет. Если пусто - на всех --> <param name="host" value=""/> <!-- Порт, на котором будет открыт сокет --> <param name="port" value="1811"/> <!-- Размер буфера приема слушателя --> <param name="recvBufferSize">1 * 1024 * 1024</param> <!-- Рекомендуемый SO_RCVBUF сокета --> <param name="soRCVBUF"/> <!-- Количество потоков-обработчиков --> <param name="threadCount">10</param> <!-- Максимальное количество пакетов в очереди на обработку --> <param name="maxQueueSize">200</param> <!-- Передача процессора --> <param name="processor">radiusProcessor</param> <!-- Режим работы, RadiusListener.Mode.accounting --> <param name="mode">RadiusListener.Mode.accounting</param> <!-- Передача setup --> <param name="setup">setup</param> <!-- Передача dataLogger --> <param name="dataLogger">radiusDataLogger</param> </constructor> </bean> </context> |
Автор: | Amir [ 25 мар 2014, 16:11 ] |
Заголовок сообщения: | Re: [6.0] IPN в Inet |
В accounting.out ошибок нет? Или какой-нибудь ошибки перед этой? |
Автор: | Phricker [ 25 мар 2014, 16:16 ] |
Заголовок сообщения: | Re: [6.0] IPN в Inet |
Код: Java Runtime: Sun Microsystems Inc. Java HotSpot(TM) 64-Bit Server VM [1.6.0_45] /usr/java/jdk1.6.0_45/jre
Runtime name: 2969@bgbilling Java endorsed dirs: /lib/endorsed:/usr/java/default/lib/endorsed OS: Linux 2.6.32-358.6.1.el6.x86_64 [amd64], file.encoding: UTF-8, user.name: root Heap sizes: current=489856k free=487298k max=489856k Starting CommandPortListener on port 1967 java.lang.NullPointerException at ru.bitel.bgbilling.server.util.Setup.addReloadListener(Setup.java:66) at ru.bitel.bgbilling.server.util.Setup.<init>(Setup.java:54) at ru.bitel.bgbilling.kernel.application.server.Application.<init>(Application.java:102) at ru.bitel.bgbilling.kernel.application.server.Application.main(Application.java:803) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at ru.bitel.common.bootstrap.Boot.boot(Boot.java:129) at ru.bitel.common.bootstrap.Boot.main(Boot.java:178) |
Автор: | Amir [ 25 мар 2014, 16:18 ] |
Заголовок сообщения: | Re: [6.0] IPN в Inet |
Все-таки, как-будто параметра mq.url в inet-accounting.xml нет или не находит. |
Автор: | Phricker [ 25 мар 2014, 16:24 ] |
Заголовок сообщения: | Re: [6.0] IPN в Inet |
Рядом папка BGInetAccounting с которой все и копировалось Код: Java Runtime: Sun Microsystems Inc. Java HotSpot(TM) 64-Bit Server VM [1.6.0_45] /usr/java/jdk1.6.0_45/jre
Runtime name: 9555@bgbilling Java endorsed dirs: /lib/endorsed:/usr/java/default/lib/endorsed OS: Linux 2.6.32-358.6.1.el6.x86_64 [amd64], file.encoding: UTF-8, user.name: root Heap sizes: current=489856k free=484740k max=489856k Starting CommandPortListener on port 1952 25.03.2014 14:23:42 org.apache.activemq.transport.failover.FailoverTransport doReconnect INFO: Successfully connected to tcp://localhost:61616 |
Автор: | Amir [ 25 мар 2014, 16:47 ] |
Заголовок сообщения: | Re: [6.0] IPN в Inet |
Доступ, наверное, нужен. Не представляю из-за чего может быть тогда. |
Автор: | Phricker [ 25 мар 2014, 19:39 ] |
Заголовок сообщения: | Re: [6.0] IPN в Inet |
Пока на тесте поднимаю, чтобы проверить. Столкнулся с еруром. Она мне логи засоряет. Это у вас или у нас? Код: accounting 03-25/17:38:28 ERROR [worker-p-15-t-1] InetLogProccessor - EROOR!!!!
ru.bitel.bgbilling.common.BGException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ORDER BY day' at line 1 [42000, 1064] at ru.bitel.common.model.AbstractDao.processException(AbstractDao.java:101) at ru.bitel.common.model.AbstractDao.list(AbstractDao.java:246) at ru.bitel.bgbilling.modules.inet.api.server.bean.DataProcessRecordDao.list(DataProcessRecordDao.java:89) at ru.bitel.bgbilling.modules.inet.accounting.proccess.InetLogProccessor.readTasks(InetLogProccessor.java:468) at ru.bitel.bgbilling.modules.inet.accounting.proccess.InetLogProccessor.process(InetLogProccessor.java:179) at ru.bitel.bgbilling.modules.inet.accounting.proccess.InetLogProccessor.run(InetLogProccessor.java:164) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:40) Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ORDER BY day' at line 1 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc.Util.getInstance(Util.java:386) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127) at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2293) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) at ru.bitel.common.model.AbstractDao.listImpl(AbstractDao.java:221) at ru.bitel.common.model.AbstractDao.listImpl(AbstractDao.java:234) at ru.bitel.common.model.AbstractDao.list(AbstractDao.java:242) ... 12 more |
Автор: | Phricker [ 25 мар 2014, 19:40 ] |
Заголовок сообщения: | Re: [6.0] IPN в Inet |
Апдейты последние. Только обновил тест. |
Автор: | Phricker [ 25 мар 2014, 22:24 ] |
Заголовок сообщения: | Re: [6.0] IPN в Inet |
Запустил на рабочем все таки. Трафик пошел. От "большого" ума прочитал Цитата: Также требуется переименование и корректировка скрипта запуска, разнесение портов в inet-accounting.xml. неправильно и в скрипте запуска accounting.sh написал Код: NAME=ipn-accounting NAME_SHORT=ipnaccounting После того как вернул NAME=inet-accounting, все запустилось. |
Автор: | Phricker [ 25 мар 2014, 23:29 ] |
Заголовок сообщения: | Re: [6.0] IPN в Inet |
Воу воу палехче. IPN действительно легко переносится ) По крайней мере трафик. ![]() |
Автор: | stark [ 26 мар 2014, 09:51 ] |
Заголовок сообщения: | Re: [6.0] IPN в Inet |
Phricker писал(а): Пока на тесте поднимаю, чтобы проверить. Столкнулся с еруром. Она мне логи засоряет. Это у вас или у нас? Код: accounting 03-25/17:38:28 ERROR [worker-p-15-t-1] InetLogProccessor - EROOR!!!! ru.bitel.bgbilling.common.BGException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ORDER BY day' at line 1 [42000, 1064] at ru.bitel.common.model.AbstractDao.processException(AbstractDao.java:101) at ru.bitel.common.model.AbstractDao.list(AbstractDao.java:246) at ru.bitel.bgbilling.modules.inet.api.server.bean.DataProcessRecordDao.list(DataProcessRecordDao.java:89) at ru.bitel.bgbilling.modules.inet.accounting.proccess.InetLogProccessor.readTasks(InetLogProccessor.java:468) at ru.bitel.bgbilling.modules.inet.accounting.proccess.InetLogProccessor.process(InetLogProccessor.java:179) at ru.bitel.bgbilling.modules.inet.accounting.proccess.InetLogProccessor.run(InetLogProccessor.java:164) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:304) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:178) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:293) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:744) at ru.bitel.common.worker.WorkerThread.run(WorkerThread.java:40) Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ') ORDER BY day' at line 1 at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:526) at com.mysql.jdbc.Util.handleNewInstance(Util.java:411) at com.mysql.jdbc.Util.getInstance(Util.java:386) at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1052) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3609) at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3541) at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:2002) at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2163) at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2624) at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:2127) at com.mysql.jdbc.PreparedStatement.executeQuery(PreparedStatement.java:2293) at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:96) at ru.bitel.common.model.AbstractDao.listImpl(AbstractDao.java:221) at ru.bitel.common.model.AbstractDao.listImpl(AbstractDao.java:234) at ru.bitel.common.model.AbstractDao.list(AbstractDao.java:242) ... 12 more Покажите свое дерево устройств и на что указывает rootDeviceId. |
Автор: | Phricker [ 26 мар 2014, 11:48 ] |
Заголовок сообщения: | Re: [6.0] IPN в Inet |
Так то я свою ошибку уже понял. И на рабочем уже завел. Но вот такое дерево устройств выдает ошибку. ![]() Т.е. нет коммутаторов, железок и иже с ними. |
Автор: | stark [ 28 мар 2014, 17:58 ] |
Заголовок сообщения: | Re: [6.0] IPN в Inet |
Phricker писал(а): Так то я свою ошибку уже понял. И на рабочем уже завел. Но вот такое дерево устройств выдает ошибку. ![]() Т.е. нет коммутаторов, железок и иже с ними. Т.е ошибка если rootDeviceId указывает на устройство, у которого нет потомков ? так ? |
Автор: | Phricker [ 28 мар 2014, 20:04 ] |
Заголовок сообщения: | Re: [6.0] IPN в Inet |
Да |
Автор: | stark [ 31 мар 2014, 14:51 ] |
Заголовок сообщения: | Re: [6.0] IPN в Inet |
Phricker писал(а): Да Исправлено. В следующем обновлении будет. Но inet все равно скорее всего не будет толком работать , если у rootDeviceId нет потомков. Минимальная схема - 2 устройства(rootDevice и потомок). |
Автор: | Phricker [ 31 мар 2014, 15:03 ] |
Заголовок сообщения: | Re: [6.0] IPN в Inet (CRM) |
Это то и понятно ) Я на тесте заводил модуль, чтобы избавиться от другой ошибки |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |