RTFM.WIKI

Ordnung muß sein. Ordnung über alles (18+)

Инструменты пользователя

Инструменты сайта


Боковая панель


Навигация

Линкшэринг

ALARM!

Добавить новую страницу

You are not allowed to add pages
linux:bgbilling


BG Биллинг - универсальная биллинговая система

Настройка Insserv

bgbilling.sh, bgcommonrc.sh, bgdataloader.sh, bgscheduler.sh, ActiveMQ.sh
#!/bin/bash
 
### BEGIN INIT INFO
# Provides:          bgbilling
# Required-Start:    mysql activemq
# Required-Stop:     mysql activemq
# Default-Start:     2
# Default-Stop:      0 6
# Description:       Start BGBilling
### END INIT INFO
 
cat bgcommonrc
#!/bin/bash
 
### BEGIN INIT INFO
# Provides:          bgcommonrc
# Required-Start:
# Required-Stop:
# Default-Start: 2
# Default-Stop: 0 6
# Description: Start bgcommonrc
### END INIT INFO
 
cat bgdataloader
#!/bin/bash
 
### BEGIN INIT INFO
# Provides:          bgdataloader
# Required-Start:    bgbilling
# Required-Stop:     bgbilling
# Default-Start:     2
# Default-Stop:      0 6
# Description:       Start bgdataloader
### END INIT INFO
 
cat bgscheduler
#!/bin/bash
 
### BEGIN INIT INFO
# Provides:          bgscheduler
# Required-Start:    bgbilling
# Required-Stop:     bgbilling
# Default-Start:     2
# Default-Stop:      0 6
# Description:       Start bgscheduler
### END INIT INFO 
 
 
### BEGIN INIT INFO
# Provides:          ActiveMQ
# Required-Start:    
# Required-Stop:     
# Default-Start:     2
# Default-Stop:      0 6
# Description:       Start ActiveMQ
### END INIT INFO 

Утилиты для работы с init.d

  • sysv-rc-conf
  • update-rc.d
  • insserv

Утилиты для приведения файла к формату unix

  • unix2dos

Добавляем ActiveMQ в автозагрузку

ln -s /opt/apache-activemq-5.4.2/bin/linux-x86-32/activemq /etc/init.d/activemq

Статус сервера:

root@srv1-billing-vtelecom:~# /etc/init.d/bgbilling status


Bывод:

BGBillingServer v 5.2 build 1375 from 20.12.2012 19:06:51
Started: 13.02.2013 18:45:26    Uptime: 0 d 00:23:26
Memory total: 58 261 504; max: 238 616 576; free: 38 599 344
Memory pools:
  Non-heap memory[Code Cache]: max: 50 331 648; used: 866 944; peek: 877 120
  Heap memory[PS Eden Space]: max: 82 378 752; used: 14 065 408; peek: 32 833 536
  Heap memory[PS Survivor Space]: max: 3 276 800; used: 3 180 624; peek: 3 180 624
  Heap memory[PS Old Gen]: max: 178 978 816; used: 2 416 128; peek: 2 416 128
  Non-heap memory[PS Perm Gen]: max: 67 108 864; used: 19 966 848; peek: 19 966 848
Thread count: 19
Connections pool to Master status Idle: 1; Active: 0; maxActive: 300; maxIdle: 20


Параметры запуска клиента BGBilling.
В файле запуска клиента можно указывать следующие параметры:

-Dbgbilling.transfer.debug=true - выводить debug 
-Dbgbilling.client.os=linux - операционная система.   
-Dlocal.setting.file.name=config_v.4.5 - имя файла с настройками в папке пользователя.
-Dsun.net.client.defaultConnectTimeout=1000 - таймаут получения URL для клиента, если в FOP, например, есть недоступная картинка.
-Duser.home - домашаняя папка клиента (в которой хранится local.setting.file.name)
-Dshared.client.distribution=1 - при обновлении клиента в сетевой папке, все запущенные клиенты перезагружаются.

Настройка меню клиента BGBilling. FIXME
Меню и панель инструментов могут быть настроены редактированием файла BGBillingServer/data/menu.xml и toolbar.xml. Установленные плагины и модули могут дополнять содержимое меню и панели инструментов новыми пунктами.

Отключение фонового рисунка
В клиентском приложении есть возможность отключить фоновый рисунок (например, при использовании терминал сервера), добавьте в BGBillingClient/client.properties

bg.enable=0


Hotkeys
Для быстрого комментирования отдельных строк и блоков: ctrl+shift+C.

Снапшоты
Для сохранения текущего состояния библиотек биллинга, каталога webroot, данных по установленным модулям и плагинам в БД с BGBilling поставляется скрипт snapshot.sh. Для создания снапшота вызовите перед обновлением:

./snapshot.sh create 

Снапшоты сохраняются архивами в каталог BGBillingServer/snapshots. Для восстановления снапшота команда:

./shapshot.sh restore <FILE>

, где <FILE> - имя файла со снапшотом.
Восстановив сервер из снапшота необходимо обновить с него все другие серверные приложения. Функционал скрипта реализован исключительно сторонними приложениями и может быть легко скорректирован.

Настройка BGInetAccess
Скрипт запуска BGInetAccess

BGInetAccess
#!/bin/bash
### BEGIN INIT INFO
# Provides:          BGInetAccess
# Required-Start:    mysql activemq bgbilling
# Required-Stop:     mysql activemq bgbilling
# Default-Start:     2
# Default-Stop:      0 6
# Description:       Start BGInetAccess
### END INIT INFO
 
BGINET_ACCESS_HOME=/usr/local/BGInetAccess
 
case "$1" in
        start)
                $BGINET_ACCESS_HOME/access_start.sh
        ;;
 
        stop)
                $BGINET_ACCESS_HOME/access_stop.sh
        ;;
 
        restart)
                $BGINET_ACCESS_HOME/access_stop.sh
                $BGINET_ACCESS_HOME/access_start.sh
        ;;
 
        *)
                echo "Usage: $0 start | stop | restart" >&2
                exit 1
        ;;
esac


Настройка сервера осуществляется путем редактирования файла inet-access.xml

<?xml version="1.0" encoding="UTF-8"?>
<application context="access">
	<!-- Уникальное имя приложения -->
	<param name="app.name" value="BGInetAccess"/>
	<!-- Уникальный числовой id приложения -->
	<param name="app.id" value=""/>
 
	<!-- Параметры подключения к БД -->
	<param name="db.driver" value="com.mysql.jdbc.Driver"/>
	<param name="db.url" value="jdbc:mysql://127.0.0.1/bgbilling?useUnicode=true&amp;characterEncoding=Cp1251&amp;allowUrlInLocalInfile=true&amp;zeroDateTimeBehavior=convertToNull&amp;jdbcCompliantTruncation=false&amp;queryTimeoutKillsConnection=true&amp;connectTimeout=1000"/>
	<param name="db.user" value="bill"/>
	<param name="db.pswd" value="bgbilling"/>
	<param name="db.validationTimeout" value="10"/>
 
	<!-- Параметры подключения к MQ -->
	<param name="mq.url" value="failover:(tcp://localhost:61616)"/>
	<param name="mq.user" value="bill"/>
	<param name="mq.pswd" value="bgbilling"/>
 
	<!-- id модуля -->
	<param name="moduleId" value=""/>
	<!-- id корневого устройства -->
	<param name="rootDeviceId" value=""/>
	<!-- Типы фейковых устройств, являющихся аккаунтинг серверами -->
	<param name="accounting.deviceTypeIds" value=""/>
 
	<!-- Внутренняя переменная приложения, не изменять -->
	<param name="commonIdentifierName" value="rootDeviceId"/>
 
	<!-- Параметры сохранения логов данных -->
	<!-- Директория, в которую сохранять radius логи -->
	<param name="datalog.radius.dir" value="data/radius" />
	<!-- Размер блока данных в файле лога, также размер буфера на лог файл -->
	<param name="datalog.radius.chunk.size" value="262144" />
	<!-- Сжимать radius логи: 0 - не сжимать, 1 - zlib -->
	<param name="datalog.radius.compression.type" value="1" />
	<!-- Директория, в которую сохранять flow логи -->
	<param name="datalog.dhcp.dir" value="data/dhcp" />
	<!-- Размер блока данных в файле лога, также размер буфера на лог файл -->
	<param name="datalog.dhcp.chunk.size" value="131072" />
	<!-- Сжимать flow логи: 0 - не сжимать, 1 - zlib -->
	<param name="datalog.dhcp.compression.type" value="1" />
 
 
	<!-- Создание Access -->
	<bean name="access" class="ru.bitel.bgbilling.modules.inet.access.Access" />
 
	<context name="radius">
		<!-- Cоздание процессора radius-пакетов -->
		<bean name="radiusProcessor" class="ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor"/>
 
		<!-- Служебный 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="1812"/>
				<!-- Размер буфера приема слушателя -->
				<param name="recvBufferSize">512 * 1024</param>
				<!-- Рекомендуемый SO_RCVBUF сокета -->
				<param name="soRCVBUF"></param>
				<!-- Количество потоков-обработчиков -->
				<param name="threadCount">10</param>
				<!-- Максимальное количество пакетов в очереди на обработку -->
				<param name="maxQueueSize">200</param>
				<!-- Передача процессора -->
				<param name="processor">radiusProcessor</param>
				<!-- Режим работы, RadiusListener.Mode.authentication -->
				<param name="mode">RadiusListener.Mode.authentication</param>
				<!-- Передача dataLogger -->
				<param name="dataLogger">radiusDataLogger</param>
			</constructor>
		</bean>
	</context>
 
	<context name="dhcp">
		<!-- Cоздание процессора dhcp-пакетов -->
		<bean name="dhcpProcessor" class="ru.bitel.bgbilling.modules.inet.dhcp.InetDhcpProcessor"/>
 
		<scheduledExecutorService name="hrlydtlggr" corePoolSize="1" />
 
		<!-- Cоздание dataLogger, сохраняющего dhcp-пакеты на диск  -->
		<bean name="dhcpDataLogger" class="ru.bitel.bgbilling.modules.inet.dhcp.DhcpHourlyDataLogger">
			<param name="scheduledExecutor">hrlydtlggr</param>
		</bean>
 
		<!-- Cоздание слушателя dhcp-пакетов на порту с передачей ему процессора и dataLogger -->
		<bean name="dhcpListener" class="ru.bitel.bgbilling.kernel.network.dhcp.DhcpListener">
			<constructor>
				<!-- Хост (интерфейс), на котором будет открыт сокет. Если пусто - на всех -->
				<param name="host" value=""/>
				<!-- Порт, на котором будет открыт сокет -->
				<param name="port" value="10067"/>
				<!-- Размер буфера приема слушателя -->
				<param name="recvBufferSize">512 * 1024</param>
				<!-- Количество потоков-обработчиков -->
				<param name="threadCount">10</param>
				<!-- Максимальное количество пакетов в очереди на обработку -->
				<param name="maxQueueSize">200</param>
				<!-- Передача процессора -->
				<param name="processor">dhcpProcessor</param>
				<!-- Передача dataLogger -->
				<param name="dataLogger">dhcpDataLogger</param>
			</constructor>
		</bean>
	</context>
 
</application>

Настройка BGInetAccounting
Скрипт запуска BGInetAccountin

#!/bin/bash
### BEGIN INIT INFO
# Provides:          BGInetAccounting
# Required-Start:    mysql activemq bgbilling 
# Required-Stop:     mysql activemq bgbilling   
# Default-Start:     2
# Default-Stop:      0 6
# Description:       Start BGInetAccounting
### END INIT INFO
 
BGINET_ACCOUNTING_HOME=/usr/local/BGInetAccounting
 
case "$1" in
        start)
                $BGINET_ACCOUNTING_HOME/accounting_start.sh
        ;;
 
        stop)
                $BGINET_ACCOUNTING_HOME/accounting_stop.sh
        ;;
 
        restart)
                $BGINET_ACCOUNTING_HOME/accounting_stop.sh
                $BGINET_ACCOUNTING_HOME/accounting_start.sh
        ;;
 
        *)
                echo "Usage: $0 start | stop | restart" >&2
                exit 1
        ;;
esac

Настройка сервера осуществляется путем редактирования файла inet-accounting.xml

<?xml version="1.0" encoding="UTF-8"?>
<application context="accounting">
        <!-- Уникальное имя приложения -->
        <param name="app.name" value="BGInetAccounting"/>
        <!-- Уникальный числовой id приложения -->
        <param name="app.id" value="98"/>
 
        <!-- Параметры подключения к БД -->
        <param name="db.driver" value="com.mysql.jdbc.Driver"/>
        <param name="db.url" value="jdbc:mysql://127.0.0.1/bgbilling?useUnicode=true&amp;characterEncoding=Cp1251&amp;allowUrlInLocalInfile=true&amp;zeroDateTimeBehavior=convertToNull&amp;jdbcCompliantTruncation=false&amp;queryTimeoutKillsConnection=true&$
        <param name="db.user" value="bill"/>
        <param name="db.pswd" value="naPQ7Ovif63Z0Z7q"/>
        <param name="db.validationTimeout" value="10"/>
 
        <!-- Параметры подключения к MQ -->
        <param name="mq.url" value="failover:(tcp://localhost:61616)"/>
        <param name="mq.user" value="bill"/>
        <param name="mq.pswd" value="bgbilling"/>
 
        <!-- id модуля -->
        <param name="moduleId" value=""/>
        <!-- id корневого устройства -->
        <param name="rootDeviceId" value=""/>
 
        <!-- Внутренняя переменная приложения, не изменять -->
        <param name="commonIdentifierName" value="rootDeviceId"/>
 
        <!-- Параметры сохранения radius-пакетов в файлы логов -->
        <!-- Директория, в которую сохранять radius логи -->
        <param name="datalog.radius.dir" value="data/radius" />
        <!-- Размер блока данных в файле лога, также размер буфера на лог файл -->
        <param name="datalog.radius.chunk.size" value="524288" />
        <!-- Сжимать radius логи: 0 - не сжимать, 1 - zlib -->
        <param name="datalog.radius.compression.type" value="1" />
        <!-- Параметры сохранения flow-пакетов в файлы логов -->
        <!-- Директория, в которую сохранять flow логи -->
        <param name="datalog.flow.dir" value="data/flow" />
        <!-- Размер блока данных в файле лога, также размер буфера на лог файл и поток слушателя -->
        <param name="datalog.flow.chunk.size" value="524288" />
        <!-- Сжимать flow логи: 0 - не сжимать, 1 - zlib -->
        <param name="datalog.flow.compression.type" value="1" />
 
 
        <!-- Создание Accounting -->
        <bean name="accounting" class="ru.bitel.bgbilling.modules.inet.accounting.Accounting"/>
 
        <context name="radius">
                <!-- Cоздание процессора radius-пакетов -->
                <bean name="radiusProcessor" class="ru.bitel.bgbilling.modules.inet.radius.InetRadiusProcessor"/>
 
                <!-- Служебный 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="1813"/>
                                <!-- Размер буфера приема слушателя -->
                                <param name="recvBufferSize">1 * 1024 * 1024</param>
                                <!-- Рекомендуемый SO_RCVBUF сокета -->
                                <param name="soRCVBUF"></param>
                                <!-- Количество потоков-обработчиков -->
                                <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>
 
        <!-- 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="2001"/>
                                <!-- Размер буфера приема слушателя -->
                                <param name="recvBufferSize">4 * 1024 * 1024</param>
                                <!-- Рекомендуемый SO_RCVBUF сокета -->
                                <param name="soRCVBUF">512 * 1024</param>
                                <!-- Количество потоков-обработчиков -->
                                <param name="threadCount" value="10"/>
                                <!-- id устройств-источников, если на данном порту нужно обрабатывать данные только у определенных источников -->
                                <param name="agentDeviceIds" value=""/>
                                <!-- Передача dataLogger -->
                                <param name="dataLogger">flowDataLogger</param>
                        </constructor>
                </bean>
 <!-- 
                <bean name="flowListener" class="ru.bitel.bgbilling.modules.inet.collector.InetFlowListener">
                        <constructor factoryMethod="newInstance">
                                <param name="type" value="netflow9"/>
                                <param name="host" value=""/>
                                <param name="port" value="9367"/>
                                <param name="recvBufferSize">4 * 1024 * 1024</param>
                                <param name="soRCVBUF">512 * 1024</param>
                                <param name="threadCount" value="8"/>
                                <param name="agentDeviceIds" value="4"/>
                                <param name="dataLogger">flowDataLogger</param>
                        </constructor>
                </bean>
 
                <bean name="flowListener" class="ru.bitel.bgbilling.modules.inet.collector.InetFlowListener">
                        <constructor factoryMethod="newInstance">
                                <param name="type" value="netflow"/>
                                <param name="host" value=""/>
                                <param name="port" value="9368"/>
                                <param name="recvBufferSize">4 * 1024 * 1024</param>
                                <param name="soRCVBUF">512 * 1024</param>
                                <param name="threadCount" value="8"/>
                                <param name="agentDeviceIds" value="20"/>
                                <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>
</application>

Справочники
Шаблоны комментариев:
В шаблоне указывается Название шаблона, а также сам Шаблон. Шаблон - это произвольная строка, в которой возможна подстановка значений из параметров договора, путём включения макросов ${param_<pid>}, где <pid> - код параметра договора.
Например: ${param_4} - подстановка значения параметра договора с кодом 4. При изменении параметров договора комментарий автоматически изменяется с учётом новых значений параметров.

Links
Уровни запуска rc0.d-rc6.d
insserv ru man page
update-rc.d ru man page
Java tzupdater

This website uses cookies. By using the website, you agree with storing cookies on your computer. Also you acknowledge that you have read and understand our Privacy Policy. If you do not agree leave the website.More information about cookies

Discussion

Enter your comment. Wiki syntax is allowed:
 
linux/bgbilling.txt · Последнее изменение: 2014/10/24 12:40 (внешнее изменение)