Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

Описание


Модуль выполняет функции:

  • Пересылка копии RADIUS трафика в региональные съемники с учетом регионального признака;
  • Формирование выгрузки по соединениям абонентов (RADIUS accounting) для СОРМ-3,
  • Загрузка данных по соединениям абонентов (RADIUS accounting) на FTP сервер для системы ИС СОРМ «Январь» (МФИ-СОФТ);
  • Обогащение трафика - в RADIUS трафик добавляется флаг "Eltex-DPI-Step-Logic"  со значением 0 или 1, который сообщает о том что трафик установлен  на контроль.

Подробное описание интеграции: v1.33_Интеграция с системами СОРМ


Доступ к технической консоли можно получить по ссылке 'http://<ip address eltex-sorm2-replicator>:7071'.


Управление сервисом


Установка сервиса

apt install eltex-sorm2-replicator

Способ запуска/остановки

ДействиеКомандаОтвет
Проверка состояния
systemctl status eltex-sorm2-replicator

Сервис работает

● eltex-sorm2-replicator.service - LSB: Eltex.SORM2.replicator
   Loaded: loaded (/etc/init.d/eltex-sorm2-replicator; generated)
   Active: active (running) since Thu 2022-04-14 15:31:12 +07; 8min ago

Сервис не работает

● eltex-sorm2-replicator.service - LSB: Eltex.SORM2.replicator
   Loaded: loaded (/etc/init.d/eltex-sorm2-replicator; generated)
   Active: inactive (dead) since Thu 2022-04-14 15:39:57 +07; 2s ago

Запуск сервиса
systemctl start eltex-sorm2-replicator
Остановка сервиса
systemctl stop eltex-sorm2-replicator
Перезапуск сервиса
systemctl restart eltex-sorm2-replicator


Конфигурация


/etc/default/eltex-sorm2-replicator

Содержит базовые параметры для запуска приложения. Пример дефолтной конфигурации:

/etc/default/eltex-sorm2-replicator
# Eltex.SORM2.replicator Server daemon parameters

# Location of java binary
JAVA=/usr/bin/java

# Initial size of Java heap
JAVA_INIT_HEAP=256m
# Maximum size of Java heap
JAVA_MAX_HEAP=512m

# To monitor via JMX - jconsole to host:port
#JMX_OPTS="-Dcom.sun.management.jmxremote \
#-Dcom.sun.management.jmxremote.port=8085 \
#-Dcom.sun.management.jmxremote.authenticate=false \
#-Dcom.sun.management.jmxremote.ssl=false \
#-Djava.rmi.server.hostname=127.0.0.1"

# Options for Java Garbage Collector
GC_OPTS="-XX:+UseParallelGC \
-XX:+PrintGCDateStamps \
-XX:+PrintGCDetails \
-XX:+UseGCLogFileRotation \
-XX:NumberOfGCLogFiles=7 \
-XX:GCLogFileSize=5M \
-Xloggc:/var/log/eltex-sorm2-replicator/gc.log"
# Without log
#GC_OPTS="-XX:+UseParallelGC"

# Additional arguments to pass to java
HEAP_DUMP_OPTS="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/eltex-sorm2-replicator"

# Summary JAVA_OPTS used by daemon
JAVA_OPTS="$JMX_OPTS $GC_OPTS $HEAP_DUMP_OPTS"

# Send notification
#NOTIFICATION_ADDR="admin@mail.loc"
ПараметрыОписание

JAVA=/usr/bin/java

Расположение Java-машины.
JAVA_INIT_HEAP
Количество памяти, выделяемое на работу сервиса при старте. Рекомендуется выставлять равное JAVA_MAX_HEAP.
JAVA_MAX_HEAP
Максимальное количество памяти, которое может зарезервировать сервис.

GC_OPTS="-XX:+UseG1GC \

. . .

Параметры сборщика мусора.

# To monitor via JMX - jconsole to host:port

. . .

Параметры для работы с JMX.
HEAP_DUMP_OPTSПараметры записи дапма памяти.
JVM_OPTSДополнительные опции для запуска jvm.
NOTIFICATION_ADDRАдрес для отправки уведомлений.

/etc/eltex-sorm2-replicator/eltex-sorm2-replicator.json

Содержит настройки взаимодействия с другими сервисами.

/etc/eltex-sorm2-replicator/eltex-sorm2-replicator.json
{
  "acct.address" : "0.0.0.0",
  "acct.port" : [41813],
  "acct.receive.buffer.byte" : 134217728,

  "web.monitoring.port" : 7071,

  "cluster.enable" : false,
  "cluster.eventBusPort" : 5802,

  "radius" : {
    "url": "jdbc:mysql://localhost/radius?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&socketTimeout=5000&autoReconnect=true&useSSL=false",
    "user": "javauser",
    "password": "javapassword",
    "max_pool_size": 16
  },

  "sql.ems" : {
    "url": "jdbc:mysql://localhost/eltex_ems?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&socketTimeout=5000&autoReconnect=true&useSSL=false",
    "user": "javauser",
    "password": "javapassword",
    "max_pool_size": 16
  },

  "sql.wireless" : {
    "url": "jdbc:mysql://localhost/wireless?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&socketTimeout=5000&autoReconnect=true&useSSL=false",
    "user": "javauser",
    "password": "javapassword",
    "max_pool_size": 16
  },

  "sql.sorm2" : {
    "url": "jdbc:mysql:///eltex_sorm2?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&socketTimeout=5000&useSSL=false",
    "user": "javauser",
    "password": "javapassword",
    "max_pool_size": 16
  },

  "sql.pcrf" : {
    "url": "jdbc:mysql:///eltex_pcrf?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&socketTimeout=5000&useSSL=false",
    "user": "javauser",
    "password": "javapassword",
    "max_pool_size": 16
  },

  "global.clients" : {
    "enabled" : false,
    "clients" : [
      { "host" : "127.0.0.1", "port" : 11813, "secret": "eltex" }
    ]
  },

  "sorm3" : {
    "enabled" : true,
    "host" : "127.0.0.1",
    "port" : 21,
    "period_s" : 900,
    "user" : "ftp",
    "pass" : "ftp",
    "acct_dir" : null,
    "node_id" : null
  },

  "sorm2" : {
    "enabled" : true,
    "federated" : false
  },

  "dpi.step.logic" : {
    "enabled" : false,
    "verbose" : false
  }
}


ПараметрыОписание
Настройки сбора аккаунтинга
acct.address
Адрес интерфейса сервера, на котором слушается входящий трафик аккаунтинга (0.0.0.0 включает прослушивание на всех интерфейсах).
acct.port

Порт сервера, на котором прослушивается входящий трафик аккаунтинга.

acct.receive.buffer.byte
Размер буфера приема.
Порт мониторинга
web.monitoring.port
Порт для работы технологической консоли и мониторинга.
Включение кластеризации
cluster.enable
Запуск кластеризации.
cluster.eventBusPort
Порт для обмена данными с нодами в кластере.
Настройки коннектов к БД MariaDB ('radius', 'eltex_ems', 'wireless', 'eltex_sorm2', 'eltex-pcrf')
url
Строка подключения к базе данных MariaDB.
user
Логин для подключения к БД.
password
Пароль для подключения к БД.
max_pool_size
Максимальное количество коннектов, которое можно открыть сервис для подключения.
Перенаправления RADIUS-аккаунтинга на внешний сервер (global.clients)
enabled
Включает перенаправление аккаунтинга на внешний сервер.
host
Адрес внешнего сервера.
port
Порт внешнего сервера
secret
Пароль radius.
Выгрузка информации на FTP-сервер (sorm3)
enabled

Включает выгрузку информации на FTP-сервер.

host

Адрес FTP-сервера.

portПорт FTP-сервера.
period_s
Интервал выгрузки информации.
user
Логин для входа на FTP-сервер.
pass

Пароль для входа на FTP-сервер.

acct_dirДиректория для выгрузки информации.
node_id

Идентификатор (IP адрес) хоста съемника, используется в формировании имени  выгружаемого по ftp файла с данными.

Перенаправление RADIUS-аккаунтинга на региональный съемник (sorm2)
enabled
Глобально включает возможность пернаправления аккаунтинга.
federated
Включает поиск съемников, которые были включены в "Личном кабинете" в разделе "Настройки" → "Дерево доменов" в колонке "СОРМ-2".
Обогащение RADIUS-аккаунтинга для DPI (dpi.step.logic)
enabled

Активирует обогащение трафика для DPI:

  • enabled=false - не вычитывает SSID, высылает все пакеты, не подставляет новые статусы

  • enabled=true - вычитывает SSID, подcтавляет аргументы dpi и cms в radius

verbose

Определяет режим пересылки пакетов:

  • verbose=false - высылает пакет только если dpi = 1 (точка и SSID)
  • verbose=true - всегда высылает пакет, в пакете значения dpi 0 или 1

/etc/eltex-sorm2-replicator/hazelcast-cluster.xml

Конфигурация кластера Hazelcast, используемого для объединения отдельных нод SORM2-replicator.

/etc/eltex-sorm2-replicator/hazelcast-cluster.xml
<?xml version="1.0" encoding="UTF-8"?>
<!--
  ~ Copyright (c) 2008-2016, Hazelcast, Inc. All Rights Reserved.
  ~
  ~ Licensed under the Apache License, Version 2.0 (the "License");
  ~ you may not use this file except in compliance with the License.
  ~ You may obtain a copy of the License at
  ~
  ~ http://www.apache.org/licenses/LICENSE-2.0
  -->

<hazelcast xsi:schemaLocation="http://www.hazelcast.com/schema/config hazelcast-config-3.12.xsd"
           xmlns="http://www.hazelcast.com/schema/config"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <config-replacers>
        <replacer class-name="org.eltex.softwlc.hazelcast.configuration.EnvironmentConfigReplacer"></replacer>
    </config-replacers>
    <group>
        <name>eltex-sorm2-replicator</name>
        <password>eltex-sorm2-replicator</password>
    </group>
    <management-center enabled="false">http://localhost:8080/mancenter</management-center>
    <network>
        <!-- Write here public address of the node -->
        <public-address>$env{REPLICATOR_PUBLIC_ADDRESS:-192.168.0.1}</public-address>
        <port auto-increment="false" port-count="100">$env{REPLICATOR_PUBLIC_PORT:-5702}</port>
        <outbound-ports>
            <ports>0</ports>
        </outbound-ports>
        <join>
            <multicast enabled="true">
                <trusted-interfaces>
                    <interface>192.168.26.*</interface>
                </trusted-interfaces>
            </multicast>
            <tcp-ip enabled="false">
                <!-- Write here IP of all members of the cluster (including this) -->
                <member>192.168.0.1</member>
                <member>192.168.0.2</member>
            </tcp-ip>
            <discovery-strategies>
            </discovery-strategies>
        </join>
        <interfaces enabled="true">
            <!-- Write here IP of the interface to use for cluster -->
            <interface>$env{REPLICATOR_PUBLIC_ADDRESS:-192.168.0.1}</interface>
        </interfaces>
        <ssl enabled="false"/>
        <socket-interceptor enabled="false"/>
        <symmetric-encryption enabled="false">
            <algorithm>PBEWithMD5AndDES</algorithm>
            <!-- salt value to use when generating the secret key -->
            <salt>thesalt</salt>
            <!-- pass phrase to use when generating the secret key -->
            <password>thepass</password>
            <!-- iteration count to use when generating the secret key -->
            <iteration-count>19</iteration-count>
        </symmetric-encryption>
    </network>
    <partition-group enabled="false"/>

    <map name="__vertx.subs">
        <backup-count>1</backup-count>
        <time-to-live-seconds>0</time-to-live-seconds>
        <max-idle-seconds>0</max-idle-seconds>
        <eviction-policy>NONE</eviction-policy>
        <max-size policy="PER_NODE">0</max-size>
        <eviction-percentage>25</eviction-percentage>
        <merge-policy>com.hazelcast.map.merge.LatestUpdateMapMergePolicy</merge-policy>
    </map>

    <semaphore name="__vertx.*">
        <initial-permits>1</initial-permits>
    </semaphore>

    <map name="sorm2profiles">
        <map-store enabled="true">
            <class-name>org.eltex.softwlc.sorm2.hazelcast.profile.ProfileLoader</class-name>
            <properties>
                <property name="configPath">$env{REPLICATOR_MAP_CONFIG_FILE:-/etc/eltex-sorm2-replicator/eltex-sorm2-replicator.json}</property>
                <property name="environmentPrefix">REPLICATOR</property>
            </properties>
        </map-store>
        <in-memory-format>BINARY</in-memory-format>
        <backup-count>0</backup-count>
        <async-backup-count>0</async-backup-count>
        <time-to-live-seconds>1200</time-to-live-seconds>
        <max-idle-seconds>0</max-idle-seconds>
        <eviction-policy>LRU</eviction-policy>
        <max-size policy="FREE_HEAP_PERCENTAGE">5</max-size>
        <eviction-percentage>25</eviction-percentage>
        <min-eviction-check-millis>5000</min-eviction-check-millis>
        <merge-policy>com.hazelcast.map.merge.PutIfAbsentMapMergePolicy</merge-policy>
        <cache-deserialized-values>INDEX-ONLY</cache-deserialized-values>
    </map>

    <map name="sorm2links">
        <map-store enabled="true">
            <class-name>org.eltex.softwlc.sorm2.hazelcast.link.LinkLoader</class-name>
            <properties>
                <property name="configPath">$env{REPLICATOR_MAP_CONFIG_FILE:-/etc/eltex-sorm2-replicator/eltex-sorm2-replicator.json}</property>
                <property name="environmentPrefix">REPLICATOR</property>
            </properties>
        </map-store>
        <in-memory-format>BINARY</in-memory-format>
        <backup-count>0</backup-count>
        <async-backup-count>0</async-backup-count>
        <time-to-live-seconds>1200</time-to-live-seconds>
        <max-idle-seconds>0</max-idle-seconds>
        <eviction-policy>LRU</eviction-policy>
        <max-size policy="FREE_HEAP_PERCENTAGE">5</max-size>
        <eviction-percentage>25</eviction-percentage>
        <min-eviction-check-millis>5000</min-eviction-check-millis>
        <merge-policy>com.hazelcast.map.merge.PutIfAbsentMapMergePolicy</merge-policy>
        <cache-deserialized-values>INDEX-ONLY</cache-deserialized-values>
    </map>

    <map name="mysqlNas">
        <map-store enabled="true">
            <class-name>org.eltex.softwlc.sorm2.hazelcast.nas.SormNasLoader</class-name>
            <properties>
                <property name="configPath">$env{REPLICATOR_MAP_CONFIG_FILE:-/etc/eltex-sorm2-replicator/eltex-sorm2-replicator.json}</property>
                <property name="environmentPrefix">REPLICATOR</property>
            </properties>
        </map-store>
        <in-memory-format>BINARY</in-memory-format>
        <backup-count>0</backup-count>
        <async-backup-count>0</async-backup-count>
        <time-to-live-seconds>600</time-to-live-seconds>
        <max-idle-seconds>0</max-idle-seconds>
        <eviction-policy>LRU</eviction-policy>
        <max-size policy="FREE_HEAP_PERCENTAGE">5</max-size>
        <eviction-percentage>25</eviction-percentage>
        <min-eviction-check-millis>5000</min-eviction-check-millis>
        <merge-policy>com.hazelcast.map.merge.PutIfAbsentMapMergePolicy</merge-policy>
        <cache-deserialized-values>INDEX-ONLY</cache-deserialized-values>
    </map>

    <map name="mysqlDomains">
        <map-store enabled="true">
            <class-name>org.eltex.softwlc.hazelcast.mysql.DomainLoader</class-name>
            <properties>
                <property name="configPath">$env{REPLICATOR_MAP_CONFIG_FILE:-/etc/eltex-sorm2-replicator/eltex-sorm2-replicator.json}</property>
                <property name="environmentPrefix">REPLICATOR</property>
            </properties>
        </map-store>
        <in-memory-format>BINARY</in-memory-format>
        <backup-count>0</backup-count>
        <async-backup-count>0</async-backup-count>
        <time-to-live-seconds>600</time-to-live-seconds>
        <max-idle-seconds>0</max-idle-seconds>
        <eviction-policy>LRU</eviction-policy>
        <max-size policy="FREE_HEAP_PERCENTAGE">5</max-size>
        <eviction-percentage>25</eviction-percentage>
        <min-eviction-check-millis>5000</min-eviction-check-millis>
        <merge-policy>com.hazelcast.map.merge.PutIfAbsentMapMergePolicy</merge-policy>
        <cache-deserialized-values>INDEX-ONLY</cache-deserialized-values>
    </map>

    <map name="subnets">
        <map-store enabled="true">
            <class-name>org.eltex.softwlc.hazelcast.mysql.SubnetLoader</class-name>
            <properties>
                <property name="configPath">$env{REPLICATOR_MAP_CONFIG_FILE:-/etc/eltex-sorm2-replicator/eltex-sorm2-replicator.json}</property>
                <property name="environmentPrefix">REPLICATOR</property>
            </properties>
        </map-store>
        <in-memory-format>BINARY</in-memory-format>
        <backup-count>0</backup-count>
        <async-backup-count>0</async-backup-count>
        <time-to-live-seconds>600</time-to-live-seconds>
        <max-idle-seconds>0</max-idle-seconds>
        <eviction-policy>LRU</eviction-policy>
        <max-size policy="FREE_HEAP_PERCENTAGE">10</max-size>
        <eviction-percentage>25</eviction-percentage>
        <min-eviction-check-millis>5000</min-eviction-check-millis>
        <merge-policy>com.hazelcast.map.merge.PutIfAbsentMapMergePolicy</merge-policy>
        <cache-deserialized-values>INDEX-ONLY</cache-deserialized-values>
    </map>

    <map name="mysqlSsid">
        <map-store enabled="true">
            <class-name>org.eltex.softwlc.sorm2.hazelcast.ssid.SormSsidLoader</class-name>
            <properties>
                <property name="configPath">$env{REPLICATOR_MAP_CONFIG_FILE:-/etc/eltex-sorm2-replicator/eltex-sorm2-replicator.json}</property>
                <property name="environmentPrefix">REPLICATOR</property>
            </properties>
        </map-store>
        <in-memory-format>BINARY</in-memory-format>
        <backup-count>0</backup-count>
        <async-backup-count>0</async-backup-count>
        <time-to-live-seconds>600</time-to-live-seconds>
        <max-idle-seconds>0</max-idle-seconds>
        <eviction-policy>LRU</eviction-policy>
        <max-size policy="FREE_HEAP_PERCENTAGE">5</max-size>
        <eviction-percentage>25</eviction-percentage>
        <min-eviction-check-millis>5000</min-eviction-check-millis>
        <merge-policy>com.hazelcast.map.merge.PutIfAbsentMapMergePolicy</merge-policy>
        <cache-deserialized-values>INDEX-ONLY</cache-deserialized-values>
    </map>

    <serialization>
        <portable-version>0</portable-version>
    </serialization>

    <services enable-defaults="true"/>

    <lite-member enabled="false"/>

    <properties>
        <property name="hazelcast.logging.type">slf4j</property>
    </properties>

</hazelcast>

ПараметрыОписание
<name>eltex-sorm2-replicator</name>

Имя ноды. Должно быть одинаковым на всех устройствах.

<public-address>$env{REPLICATOR_PUBLIC_ADDRESS:-192.168.0.1}</public-address>
Собственный адрес ноды в кластере.
<member>192.168.0.1</member>
<member>192.168.0.2</member>

Список нод, состоящих в кластере. Необходимо указывать как собственный адрес, так и всех нод состоящих в кластере.

Так же требуется указать следующим образом параметры:

<multicast enabled="false">

<tcp-ip enabled="true">

<interface>$env{REPLICATOR_PUBLIC_ADDRESS:-192.168.0.1}</interface>
Адрес интерфейса ноды в кластере (как правило равен public-address).

/etc/eltex-sorm2-replicator/log4j.xml

Файл настроек логирования:

/etc/eltex-sorm2-replicator/log4j.xml
<?xml version="1.0" encoding="UTF-8"?>

<Configuration packages="org.eltex.softwlc.sorm2.logger">
    <Properties>
        <Property name="maxSize" value="5MB"/>
        <Property name="maxCount" value="7"/>
        <Property name="logDir" value="/var/log/eltex-sorm2-replicator"/>
        <Property name="defaultPattern" value="%d{ISO8601} [%t] %-5p %logger{1} %C{1}.%M(line:%L). %m%n"/>
        <Property name="gelfHost" value="udp:lab3-test.eltex.loc"/>
        <Property name="gelfPort" value="12201"/>
        <Property name="gelfLevel" value="OFF"/>
        <Property name="filenamePrefix" value="eltex-sorm2-replicator-"/>
    </Properties>

    <Appenders>
        <Console name="STDOUT" target="SYSTEM_OUT">
            <PatternLayout>
                <Pattern>${defaultPattern}</Pattern>
            </PatternLayout>
        </Console>

        <RollingFile name="SERVICE"
                     fileName="${logDir}/${filenamePrefix}service.log"
                     filePattern="${logDir}/service/%{filenamePrefix}service.%i.log">
            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout>
                <pattern>${defaultPattern}</pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="${maxSize}"/>
            </Policies>
            <DefaultRolloverStrategy max="${maxCount}"/>
        </RollingFile>

        <RollingFile name="FTP"
                     fileName="${logDir}/${filenamePrefix}ftp.log"
                     filePattern="${logDir}/ftp/${filenamePrefix}ftp.%i.log">
            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout>
                <pattern>${defaultPattern}</pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="${maxSize}"/>
            </Policies>
            <DefaultRolloverStrategy max="${maxCount}"/>
        </RollingFile>

        <RollingFile name="SORM3_ACCT"
                     fileName="${logDir}/${filenamePrefix}export_acct.csv"
                     filePattern="${logDir}/export_acct/IP_ACC_%d{yyyyMMdd_HHmm}.csv">
            <ThresholdFilter level="DEBUG" onMatch="ACCEPT" onMismatch="DENY"/>
            <CsvCustomParameterLayout format="Excel" delimiter=";" quote="" escape="^" quoteMode="NONE" nullString=""/>
            <Policies>
                <TimeBasedTriggeringPolicy />
            </Policies>
        </RollingFile>

        <RollingFile name="DEFAULT"
                     fileName="${logDir}/${filenamePrefix}default.log"
                     filePattern="${logDir}/default/${filenamePrefix}default.%i.log">
            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout>
                <pattern>${defaultPattern}</pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="${maxSize}"/>
            </Policies>
            <DefaultRolloverStrategy max="${maxCount}"/>
        </RollingFile>

        <RollingFile name="HAZELCAST"
                     fileName="${logDir}/${filenamePrefix}hazelcast.log"
                     filePattern="${logDir}/hazelcast/${filenamePrefix}hazelcast.%i.log">
            <ThresholdFilter level="INFO" onMatch="ACCEPT" onMismatch="DENY"/>
            <PatternLayout>
                <pattern>${defaultPattern}</pattern>
            </PatternLayout>
            <Policies>
                <SizeBasedTriggeringPolicy size="${maxSize}"/>
            </Policies>
            <DefaultRolloverStrategy max="${maxCount}"/>
        </RollingFile>

        <Gelf name="Gelf"
              host="${gelfHost}"
              port="${gelfPort}"
              version="1.1"
              facility="eltex-sorm2-replicator"
              extractStackTrace="true"
              originHost="%host{fqdn}"
              maximumMessageSize="8192" >
            <Field name="thread" pattern="%t" />
            <Field name="level" pattern="%level" />
            <Field name="severity" pattern="%-5level" />
            <Field name="logger" pattern="%logger{1}" />
            <Field name="location" pattern="%C{1}.%M(line:%L)" />
        </Gelf>
    </Appenders>

    <Loggers>
        <!-- These loggers write to service.log -->
        <Logger name="org.eltex.softwlc.sorm2.ftp">
            <AppenderRef ref="FTP"/>
        </Logger>

        <Logger name="org.eltex.softwlc">
            <AppenderRef ref="SERVICE"/>
        </Logger>

        <Logger name="io.vertx">
            <AppenderRef ref="SERVICE" />
        </Logger>

        <Logger name="com.hazelcast" additivity="false">
            <AppenderRef ref="HAZELCAST" />
        </Logger>

        <Logger name="net.jradius">
            <AppenderRef ref="SERVICE"/>
        </Logger>

        <Logger name="SORM3_ACCT">
            <AppenderRef ref="SORM3_ACCT"/>
        </Logger>

        <Root level="INFO">
            <AppenderRef ref="Gelf" level="${gelfLevel}"/>
        </Root>
    </Loggers>
</Configuration>
  • Максимально допустимый размер файла (при его превышении создается новый файл, а старый архивируется):
<Property name="maxSize" value="5MB"/>
  • Максимальное количество архивных файлов, при его превышении наиболее старые файлы будут перезаписываться:
<Property name="maxCount" value="7"/>
  • Базовая директория хранения логов:
 <Property name="logDir" value="/var/log/eltex-sorm2-replicator"/>
  • Блок настройки перенаправления логов в Graylog (уровень логирования, адрес, порт):
<Property name="gelfHost" value="udp:lab3-test.eltex.loc"/>
<Property name="gelfPort" value="12201"/>
<Property name="gelfLevel" value="OFF"/
  • Уровень логирования:
<Root level="INFO">  

/etc/eltex-sorm2-replicator/sorm3-columns.json

Файл настроек списка колонок в выгружаемой на FTP-сервер информации. При изменении файла требуется перезапустить сервис eltex-sorm2-replicator.

/etc/eltex-sorm2-replicator/sorm3-columns.json
{
  "CONNECTION_TIME": true,
  "REGION_ID": true,
  "POINT_ID": true,
  "LOGIN_TYPE": true,
  "SESSION_ID": true,
  "ALLOCATED_IPV4": true,
  "ALLOCATED_IPV6": true,
  "USER_NAME": true,
  "CONNECT_TYPE": true,
  "CALLING_NUMBER": true,
  "CALLED_NUMBER": true,
  "NAS_IPV4": true,
  "NAS_IPV6": true,
  "NAS_IP_PORT": true,
  "IN_BYTES_COUNT": true,
  "OUT_BYTES_COUNT": true,
  "USER_PASSWORD": true,
  "USER_EQ_MAC": true,
  "USER_EQ_VPI": true,
  "USER_EQ_VCI": true,
  "APN": true,
  "SGSN_IPV4": true,
  "SGSN_IPV6": true,
  "GGSN_IPV4": true,
  "GGSN_IPV6": true,
  "SERVICE_AREA_CODE": true,
  "LAC_START": true,
  "CELL_START": true,
  "TA_START": true,
  "WL_CELL_START": true,
  "WL_MAC_START": true,
  "LAC_END": true,
  "CELL_END": true,
  "TA_END": true,
  "WL_CELL_END": true,
  "WL_MAC_END": true,
  "PHONE_CARD_NUMBER": true,
  "IMSI": true,
  "IMEI": true,
  "ESN": true,
  "POOL": true,
  "L2_INTERFACE": false
}

Докеризация сервиса

С версии ПО 1.23 сервис может быть запущен в docker-контейнере. Для этого необходимо подготовить файл с переменными окружения .env и docker-compose.yml

 docker-compose.yml
docker-compose.yml
version: "3"
services:
  eltex-sorm2-replicator:
    container_name: eltex-sorm2-replicator
    image: ${ELTEX_HUB}/eltex-sorm2-replicator:${SWLC_VERSION}
    ports:
      # Публичный порт Hazelcast
      - "${REPLICATOR_PUBLIC_PORT}:${REPLICATOR_PUBLIC_PORT}"
      # Порт аккаунтинга
      - "${REPLICATOR_ACCT_PORT}:${REPLICATOR_ACCT_PORT}/udp"
      # Порт WEB-API Sorm Replicator
      - "${REPLICATOR_WEB_MONITORING_PORT}:${REPLICATOR_WEB_MONITORING_PORT}"
      # Порт EventBus Vert.x
      - "${REPLICATOR_CLUSTER_EVENT_BUS_PORT}:${REPLICATOR_CLUSTER_EVENT_BUS_PORT}"
    volumes:
      # eltex-sorm2-replicator-export_acct.csv будет писаться в эту директорию
      - "./export:${REPLICATOR_LOG_DIR}"
      #  Проброс таймзоны хоста для корректного именования файлов
      - "/etc/timezone:/etc/timezone:ro"
    environment:
      # Можно также переопределить параметры запуска сервиса
      # Но это нужно делать, только если есть необходимость, пока в закомментированном виде
      #- REPLICATOR_MAP_CONFIG_FILE=${REPLICATOR_MAP_CONFIG_FILE}
      #- REPLICATOR_LOG_DIR=${REPLICATOR_LOG_DIR}
      #- REPLICATOR_DOCKER=${REPLICATOR_DOCKER}
      #- REPLICATOR_MULTICAST_ENABLED=${REPLICATOR_MULTICAST_ENABLED}
      #- DEBUG_PORT=${REPLICATOR_DEBUG_PORT}
      #- REPLICATOR_JAVA_INIT_HEAP=${REPLICATOR_JAVA_INIT_HEAP}
      #- REPLICATOR_JAVA_MAX_HEAP=${REPLICATOR_JAVA_MAX_HEAP}
      #- REPLICATOR_HEAP_DUMP_PATH=${REPLICATOR_HEAP_DUMP_PATH}
      #- REPLICATOR_CONFIG_DIR=${REPLICATOR_CONFIG_DIR}
      #
      # Конфигурация логирования
      - REPLICATOR_LOG_LEVEL=${REPLICATOR_LOG_LEVEL}
      - REPLICATOR_CONSOLE_LOG_LEVEL=${REPLICATOR_CONSOLE_LOG_LEVEL}
      - REPLICATOR_FILE_LOG_LEVEL=${REPLICATOR_FILE_LOG_LEVEL}
      - GELF_HOST=${REPLICATOR_GELF_HOST}
      - GELF_PORT=${REPLICATOR_GELF_PORT}
      - GELF_LEVEL=${REPLICATOR_GELF_LEVEL}
      #
      # Конфигурация режима кластера
      - REPLICATOR_cluster.enable=${REPLICATOR_CLUSTER_ENABLED}
      - REPLICATOR_cluster.eventBusPort=${REPLICATOR_CLUSTER_EVENT_BUS_PORT}
      - REPLICATOR_PUBLIC_ADDRESS=${REPLICATOR_PUBLIC_ADDRESS}
      - REPLICATOR_PUBLIC_PORT=${REPLICATOR_PUBLIC_PORT}
      - REPLICATOR_TCP_IP_ENABLED=${REPLICATOR_TCP_IP_ENABLED}
      # REPLICATOR_TCP_IP_NODE_1=${REPLICATOR_TCP_IP_NODE_1}
      # REPLICATOR_TCP_IP_NODE_2=${REPLICATOR_TCP_IP_NODE_2}
      #
      # Настройки приложения из eltex-sorm2-replicator.json
      - REPLICATOR_acct.address=${REPLICATOR_ACCT_ADDRESS}
      - REPLICATOR_acct.port__0=${REPLICATOR_ACCT_PORT}
      - REPLICATOR_acct.receive.buffer.byte=${REPLICATOR_ACCT_RECEIVE_BUFFER_BYTE}
      #
      - REPLICATOR_web.monitoring.port=${REPLICATOR_WEB_MONITORING_PORT}
      #
      - REPLICATOR_radius__url=${REPLICATOR_RADIUS_URL}
      - REPLICATOR_radius__user=${REPLICATOR_RADIUS_USER}
      - REPLICATOR_radius__password=${REPLICATOR_RADIUS_PASSWORD}
      - REPLICATOR_radius__max_pool_size=${REPLICATOR_RADIUS_MAX_POOL_SIZE}
      #
      - REPLICATOR_sql.ems__url=${REPLICATOR_SQL_EMS_URL}
      - REPLICATOR_sql.ems__user=${REPLICATOR_SQL_EMS_USER}
      - REPLICATOR_sql.ems__password=${REPLICATOR_SQL_EMS_PASSWORD}
      - REPLICATOR_sql.ems__max_pool_size=${REPLICATOR_SQL_EMS_MAX_POOL_SIZE}
      #
      - REPLICATOR_sql.wireless__url=${REPLICATOR_SQL_WIRELESS_URL}
      - REPLICATOR_sql.wireless__user=${REPLICATOR_SQL_WIRELESS_USER}
      - REPLICATOR_sql.wireless__password=${REPLICATOR_SQL_WIRELESS_PASSWORD}
      - REPLICATOR_sql.wireless__max_pool_size=${REPLICATOR_SQL_WIRELESS_MAX_POOL_SIZE}
      #
      - REPLICATOR_sql.pcrf__url=${REPLICATOR_SQL_PCRF_URL}
      - REPLICATOR_sql.pcrf__user=${REPLICATOR_SQL_PCRF_USER}
      - REPLICATOR_sql.pcrf__password=${REPLICATOR_SQL_PCRF_PASSWORD}
      - REPLICATOR_sql.pcrf__max_pool_size=${REPLICATOR_SQL_PCRF_MAX_POOL_SIZE}
      #
      - REPLICATOR_sql.sorm2__url=${REPLICATOR_SQL_SORM2_URL}
      - REPLICATOR_sql.sorm2__user=${REPLICATOR_SQL_SORM2_USER}
      - REPLICATOR_sql.sorm2__password=${REPLICATOR_SQL_SORM2_PASSWORD}
      - REPLICATOR_sql.sorm2__max_pool_size=${REPLICATOR_SQL_SORM2_MAX_POOL_SIZE}
      #
      - REPLICATOR_global.clients__enabled=${REPLICATOR_GLOBAL_CLIENTS_ENABLED}
      - REPLICATOR_global.clients__clients__0__host=${REPLICATOR_GLOBAL_CLIENTS_CLIENTS_1_HOST}
      - REPLICATOR_global.clients__clients__0__port=${REPLICATOR_GLOBAL_CLIENTS_CLIENTS_1_PORT}
      - REPLICATOR_global.clients__clients__0__secret=${REPLICATOR_GLOBAL_CLIENTS_CLIENTS_1_SECRET}
      #
      - REPLICATOR_sorm3__enabled=${REPLICATOR_SORM3_ENABLED}
      - REPLICATOR_sorm3__host=${REPLICATOR_SORM3_HOST}
      - REPLICATOR_sorm3__port=${REPLICATOR_SORM3_PORT}
      - REPLICATOR_sorm3__period_s=${REPLICATOR_SORM3_PERIOD_S}
      - REPLICATOR_sorm3__user=${REPLICATOR_SORM3_USER}
      - REPLICATOR_sorm3__pass=${REPLICATOR_SORM3_PASS}
      - REPLICATOR_sorm3__acct_dir=${REPLICATOR_SORM3_ACCT_DIR}
      - REPLICATOR_sorm3__node_id=${REPLICATOR_SORM3_NODE_ID}
      #
      - REPLICATOR_sorm2__enabled=${REPLICATOR_SORM2_ENABLED}
      - REPLICATOR_sorm2__federated=${REPLICATOR_SORM2_FEDERATED}
      #
      - REPLICATOR_dpi.step.logic__enabled=${REPLICATOR_DPI_STEP_LOGIC_ENABLED}
      - REPLICATOR_dpi.step.logic__verbose=${REPLICATOR_DPI_STEP_LOGIC_VERBOSE}
      #
      # Также можно настроить поля из sorm3-columns.json
      - SORM3_FIELD_CONNECTION_TIME=${SORM3_FIELD_CONNECTION_TIME}
      - SORM3_FIELD_REGION_ID=${SORM3_FIELD_REGION_ID}
      - SORM3_FIELD_POINT_ID=${SORM3_FIELD_POINT_ID}
      - SORM3_FIELD_LOGIN_TYPE=${SORM3_FIELD_LOGIN_TYPE}
      - SORM3_FIELD_SESSION_ID=${SORM3_FIELD_SESSION_ID}
      - SORM3_FIELD_ALLOCATED_IPV4=${SORM3_FIELD_ALLOCATED_IPV4}
      - SORM3_FIELD_ALLOCATED_IPV6=${SORM3_FIELD_ALLOCATED_IPV6}
      - SORM3_FIELD_USER_NAME=${SORM3_FIELD_USER_NAME}
      - SORM3_FIELD_CONNECT_TYPE=${SORM3_FIELD_CONNECT_TYPE}
      - SORM3_FIELD_CALLING_NUMBER=${SORM3_FIELD_CALLING_NUMBER}
      - SORM3_FIELD_CALLED_NUMBER=${SORM3_FIELD_CALLED_NUMBER}
      - SORM3_FIELD_NAS_IPV4=${SORM3_FIELD_NAS_IPV4}
      - SORM3_FIELD_NAS_IPV6=${SORM3_FIELD_NAS_IPV6}
      - SORM3_FIELD_NAS_IP_PORT=${SORM3_FIELD_NAS_IP_PORT}
      - SORM3_FIELD_IN_BYTES_COUNT=${SORM3_FIELD_IN_BYTES_COUNT}
      - SORM3_FIELD_OUT_BYTES_COUNT=${SORM3_FIELD_OUT_BYTES_COUNT}
      - SORM3_FIELD_USER_PASSWORD=${SORM3_FIELD_USER_PASSWORD}
      - SORM3_FIELD_USER_EQ_MAC=${SORM3_FIELD_USER_EQ_MAC}
      - SORM3_FIELD_USER_EQ_VPI=${SORM3_FIELD_USER_EQ_VPI}
      - SORM3_FIELD_USER_EQ_VCI=${SORM3_FIELD_USER_EQ_VCI}
      - SORM3_FIELD_APN=${SORM3_FIELD_APN}
      - SORM3_FIELD_SGSN_IPV4=${SORM3_FIELD_SGSN_IPV4}
      - SORM3_FIELD_SGSN_IPV6=${SORM3_FIELD_SGSN_IPV6}
      - SORM3_FIELD_GGSN_IPV4=${SORM3_FIELD_GGSN_IPV4}
      - SORM3_FIELD_GGSN_IPV6=${SORM3_FIELD_GGSN_IPV6}
      - SORM3_FIELD_SERVICE_AREA_CODE=${SORM3_FIELD_SERVICE_AREA_CODE}
      - SORM3_FIELD_LAC_START=${SORM3_FIELD_LAC_START}
      - SORM3_FIELD_CELL_START=${SORM3_FIELD_CELL_START}
      - SORM3_FIELD_TA_START=${SORM3_FIELD_TA_START}
      - SORM3_FIELD_WL_CELL_START=${SORM3_FIELD_WL_CELL_START}
      - SORM3_FIELD_WL_MAC_START=${SORM3_FIELD_WL_MAC_START}
      - SORM3_FIELD_LAC_END=${SORM3_FIELD_LAC_END}
      - SORM3_FIELD_CELL_END=${SORM3_FIELD_CELL_END}
      - SORM3_FIELD_TA_END=${SORM3_FIELD_TA_END}
      - SORM3_FIELD_WL_CELL_END=${SORM3_FIELD_WL_CELL_END}
      - SORM3_FIELD_WL_MAC_END=${SORM3_FIELD_WL_MAC_END}
      - SORM3_FIELD_PHONE_CARD_NUMBER=${SORM3_FIELD_PHONE_CARD_NUMBER}
      - SORM3_FIELD_IMSI=${SORM3_FIELD_IMSI}
      - SORM3_FIELD_IMEI=${SORM3_FIELD_IMEI}
      - SORM3_FIELD_ESN=${SORM3_FIELD_ESN}
      - SORM3_FIELD_POOL=${SORM3_FIELD_POOL}
      - SORM3_FIELD_L2_INTERFACE=${SORM3_FIELD_L2_INTERFACE}

 .env
.env
# Docker HUB
ELTEX_HUB= hub.eltex-co.ru/softwlc

# Common version number
SWLC_VERSION=1.30-<tag>

# ! Настройки запуска приложения. Лучше не менять! !
# Путь до файла конфигурации внутри контейнера, рекомендуется не менять
REPLICATOR_MAP_CONFIG_FILE=/etc/eltex-sorm2-replicator/eltex-sorm2-replicator.json
# Директория для записи логов внутри контейнера, рекомендуется не менять
REPLICATOR_LOG_DIR=/var/log/eltex-sorm2-replicator
# Запущен ли eltex-sorm2-replicator в контейнере
REPLICATOR_DOCKER=TRUE
# Включено ли обнаружение через Multicast, пока что не поддерживается
REPLICATOR_MULTICAST_ENABLED=FALSE
# Порт для отладки JVM в контейнере. Пока установлено значение 0, отладка выключена.
REPLICATOR_DEBUG_PORT=0
# Изначальный размер хипа
REPLICATOR_JAVA_INIT_HEAP=256m
# Максимальный размер хипа
REPLICATOR_JAVA_MAX_HEAP=512m
# Путь, куда нужно складывать heap-dump в случае падения приложения
REPLICATOR_HEAP_DUMP_PATH=/var/log/eltex-sorm2-replicator
# Внутренний путь до конфигурации сервиса
REPLICATOR_CONFIG_DIR=/etc/eltex-sorm2-replicator

# ! Настройки приложения ! #
# ! Настройки логирования ! #
# Основной уровень логирования
REPLICATOR_LOG_LEVEL=INFO
REPLICATOR_CONSOLE_LOG_LEVEL=INFO
# Логирование в файл. Выключено по-умолчанию.
REPLICATOR_FILE_LOG_LEVEL=OFF
# Настройки GELF
REPLICATOR_GELF_HOST=udp:localhost
REPLICATOR_GELF_PORT=12201
REPLICATOR_GELF_LEVEL=OFF

# ! Настройки репликации ! #
#Включение режима кластера
REPLICATOR_CLUSTER_ENABLED=FALSE
# Порт Vert.x EventBus внутри кластера
REPLICATOR_CLUSTER_EVENT_BUS_PORT=5802
# Публичный адрес узла SORM2-Replicator
REPLICATOR_PUBLIC_ADDRESS=192.168.0.1
# Публичный порт узла SORM2-Replicator
REPLICATOR_PUBLIC_PORT=5702

# Механизм обнаружения через прямое указание адресов соседей, выключен по-умолчанию и пока поддерживается
# только этот вариант. Необходимо включить, если используется репликация
REPLICATOR_TCP_IP_ENABLED=FALSE
# Как указать адреса соседних узлов
# 1. Объявить переменную окружения REPLICATOR_TCP_IP_NODE_1=x.x.x.x, где x.x.x.x адрес узла кластера

# Свой адрес
# Такой же как и в REPLICATOR_PUBLIC_ADDRESS
#REPLICATOR_TCP_IP_NODE_1=192.168.0.1
# Адрес соседней ноды
#REPLICATOR_TCP_IP_NODE_2=192.168.0.2

# ! Настройки приложения из eltex-sorm2-replicator.json ! #
REPLICATOR_ACCT_ADDRESS=0.0.0.0
REPLICATOR_ACCT_PORT=41813
REPLICATOR_ACCT_RECEIVE_BUFFER_BYTE=134217728

REPLICATOR_WEB_MONITORING_PORT=7071

REPLICATOR_RADIUS_URL=jdbc:mysql://localhost/radius?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&socketTimeout=5000&autoReconnect=true&useSSL=false
REPLICATOR_RADIUS_USER=javauser
REPLICATOR_RADIUS_PASSWORD=javapassword
REPLICATOR_RADIUS_MAX_POOL_SIZE=16

REPLICATOR_SQL_EMS_URL=jdbc:mysql://localhost/eltex_ems?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&socketTimeout=5000&autoReconnect=true&useSSL=false
REPLICATOR_SQL_EMS_USER=javauser
REPLICATOR_SQL_EMS_PASSWORD=javapassword
REPLICATOR_SQL_EMS_MAX_POOL_SIZE=16

REPLICATOR_SQL_WIRELESS_URL=jdbc:mysql://localhost/wireless?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&socketTimeout=5000&autoReconnect=true&useSSL=false
REPLICATOR_SQL_WIRELESS_USER=javauser
REPLICATOR_SQL_WIRELESS_PASSWORD=javapassword
REPLICATOR_SQL_WIRELESS_MAX_POOL_SIZE=16

REPLICATOR_SQL_PCRF_URL=jdbc:mysql://localhost/eltex_pcrf?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&socketTimeout=5000&autoReconnect=true&useSSL=false
REPLICATOR_SQL_PCRF_USER=javauser
REPLICATOR_SQL_PCRF_PASSWORD=javapassword
REPLICATOR_SQL_PCRF_MAX_POOL_SIZE=16

REPLICATOR_SQL_SORM2_URL=jdbc:mysql://localhost/eltex_sorm2?useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&socketTimeout=5000&autoReconnect=true&useSSL=false
REPLICATOR_SQL_SORM2_USER=javauser
REPLICATOR_SQL_SORM2_PASSWORD=javapassword
REPLICATOR_SQL_SORM2_MAX_POOL_SIZE=16

REPLICATOR_GLOBAL_CLIENTS_ENABLED=FALSE
REPLICATOR_GLOBAL_CLIENTS_CLIENTS_1_HOST=127.0.0.1
REPLICATOR_GLOBAL_CLIENTS_CLIENTS_1_PORT=11813
REPLICATOR_GLOBAL_CLIENTS_CLIENTS_1_SECRET=eltex

REPLICATOR_SORM3_ENABLED=TRUE
REPLICATOR_SORM3_HOST=127.0.0.1
REPLICATOR_SORM3_PORT=21
REPLICATOR_SORM3_PERIOD_S=900
REPLICATOR_SORM3_USER=ftp
REPLICATOR_SORM3_PASS=ftp
REPLICATOR_SORM3_ACCT_DIR=null
REPLICATOR_SORM3_NODE_ID=172.16.0.162

REPLICATOR_SORM2_ENABLED=TRUE
REPLICATOR_SORM2_FEDERATED=FALSE

REPLICATOR_DPI_STEP_LOGIC_ENABLED=FALSE
REPLICATOR_DPI_STEP_LOGIC_VERBOSE=FALSE

# ! Настройки из sorm3-columns.json ! #
SORM3_FIELD_CONNECTION_TIME=true
SORM3_FIELD_REGION_ID=true
SORM3_FIELD_POINT_ID=true
SORM3_FIELD_LOGIN_TYPE=true
SORM3_FIELD_SESSION_ID=true
SORM3_FIELD_ALLOCATED_IPV4=true
SORM3_FIELD_ALLOCATED_IPV6=true
SORM3_FIELD_USER_NAME=true
SORM3_FIELD_CONNECT_TYPE=true
SORM3_FIELD_CALLING_NUMBER=true
SORM3_FIELD_CALLED_NUMBER=true
SORM3_FIELD_NAS_IPV4=true
SORM3_FIELD_NAS_IPV6=true
SORM3_FIELD_NAS_IP_PORT=true
SORM3_FIELD_IN_BYTES_COUNT=true
SORM3_FIELD_OUT_BYTES_COUNT=true
SORM3_FIELD_USER_PASSWORD=true
SORM3_FIELD_USER_EQ_MAC=true
SORM3_FIELD_USER_EQ_VPI=true
SORM3_FIELD_USER_EQ_VCI=true
SORM3_FIELD_APN=true
SORM3_FIELD_SGSN_IPV4=true
SORM3_FIELD_SGSN_IPV6=true
SORM3_FIELD_GGSN_IPV4=true
SORM3_FIELD_GGSN_IPV6=true
SORM3_FIELD_SERVICE_AREA_CODE=true
SORM3_FIELD_LAC_START=true
SORM3_FIELD_CELL_START=true
SORM3_FIELD_TA_START=true
SORM3_FIELD_WL_CELL_START=true
SORM3_FIELD_WL_MAC_START=true
SORM3_FIELD_LAC_END=true
SORM3_FIELD_CELL_END=true
SORM3_FIELD_TA_END=true
SORM3_FIELD_WL_CELL_END=true
SORM3_FIELD_WL_MAC_END=true
SORM3_FIELD_PHONE_CARD_NUMBER=true
SORM3_FIELD_IMSI=true
SORM3_FIELD_IMEI=true
SORM3_FIELD_ESN=true
SORM3_FIELD_POOL=true
SORM3_FIELD_L2_INTERFACE=false

Вместо <tag> необходимо указать актуальную версию, которую можно посмотреть по ссылке.

В папке с docker-compose.yml также необходимо создать папку export. По умолчанию в эту папку складываются логи и выгрузки SORM2.

Путь до папки, либо способ выгрузки можно поменять через конфигурацию docker-compose.yml.


 Возможные переменные окружения .env


Запуск сервиса

  • REPLICATOR_PUBLIC_PORT - порт, на котором будет стартовать сервис внутри контейнера
  • REPLICATOR_JAVA_INIT_HEAP - аргумент запуска JVM -Xms
  • REPLICATOR_JAVA_MAX_HEAP - аргумент запуска JVM -Xmx
  • REPLICATOR_ACCT_ADDRESS - адрес интерфейса сервера, на котором слушается входящий трафик аккаунтинга
  • REPLICATOR_ACCT_PORT - порт сервера, на котором прослушивается входящий трафик аккаунтинга
  • REPLICATOR_ACCT_RECEIVE_BUFFER_BYTE - размер буфера приема
  • REPLICATOR_WEB_MONITORING_PORT - порт для работы технологической консоли и мониторинга

Логирование

  • REPLICATOR_LOG_LEVEL - уровень Root логера
  • REPLICATOR_CONSOLE_LOG_LEVEL - уровень логирования при выводе в консоль
  • REPLICATOR_FILE_LOG_LEVEL - уровень логирования при выводе в файл
  • REPLICATOR_GELF_HOST - хост подключения к Gelf
  • REPLICATOR_GELF_PORT - порт подключения к Gelf
  • REPLICATOR_GELF_LEVEL - уровень Gelf логера

Подключение к БД

  • REPLICATOR_RADIUS_URL - хост подключения к БД MariaDB radius
  • REPLICATOR_RADIUS_USER - имя пользователя для подключения к БД MariaDB radius
  • REPLICATOR_RADIUS_PASSWORD - пароль пользователя для подключения к БД MariaDB radius
  • REPLICATOR_RADIUS_MAX_POOL_SIZE - максимальное число коннектов к БД  MariaDB  radius
  • REPLICATOR_SQL_EMS_URL - хост подключения к БД MariaDB eltex_ems
  • REPLICATOR_SQL_EMS_USER - имя пользователя для подключения к БД MariaDB eltex_ems
  • REPLICATOR_SQL_EMS_PASSWORD - пароль пользователя для подключения к БД MariaDB eltex_ems
  • REPLICATOR_SQL_EMS_MAX_POOL_SIZE - максимальное число коннектов к БД MariaDB eltex_ems
  • REPLICATOR_SQL_WIRELESS_URL - хост подключения к БД MariaDB wireless
  • REPLICATOR_SQL_WIRELESS_USER - имя пользователя для подключения к БД MariaDB wireless
  • REPLICATOR_SQL_WIRELESS_PASSWORD - пароль пользователя для подключения к БД MariaDB wireless
  • REPLICATOR_SQL_WIRELESS_MAX_POOL_SIZE - максимальное число коннектов к БД MariaDB wireless
  • REPLICATOR_SQL_PCRF_URL - хост подключения к БД MariaDB eltex_pcrf
  • REPLICATOR_SQL_PCRF_USER - имя пользователя для подключения к БД MariaDB eltex_pcrf
  • REPLICATOR_SQL_PCRF_PASSWORDпароль пользователя для подключения к БД MariaDB eltex_pcrf
  • REPLICATOR_SQL_PCRF_MAX_POOL_SIZE - максимальное число коннектов к БД MariaDB eltex_pcrf
  • REPLICATOR_SQL_SORM2_URL - хост подключения к БД MariaDB eltex_sorm2
  • REPLICATOR_SQL_SORM2_USER - имя пользователя для подключения к БД MariaDB eltex_sorm2
  • REPLICATOR_SQL_SORM2_PASSWORDпароль пользователя для подключения к БД MariaDB eltex_sorm2
  • REPLICATOR_SQL_SORM2_MAX_POOL_SIZE - максимальное число коннектов к БД MariaDB eltex_sorm2

Конфигурация настроек кластеризации

  • REPLICATOR_CLUSTER_ENABLED - включение кластеризации
  • REPLICATOR_CLUSTER_EVENT_BUS_PORT - порт для обмена данными с нодами в кластере
  • REPLICATOR_PUBLIC_ADDRESS - продолжительность блокировки после достижения максимального числа попыток входа
  • REPLICATOR_PUBLIC_PORT - собственный адрес ноды в кластере 
  • REPLICATOR_TCP_IP_ENABLED - включение юникастового режима работы кластера (в докере поддержан только этот режим работы)
  • REPLICATOR_TCP_IP_NODE_1 - адрес ноды 1 в кластере
  • REPLICATOR_TCP_IP_NODE_2 - адрес ноды 2 в кластере

Конфигурация настроек перенаправления RADIUS-аккаунтинга на внешний сервер 

  • REPLICATOR_GLOBAL_CLIENTS_ENABLED - включает перенаправление аккаунтинга на внешний сервер
  • REPLICATOR_GLOBAL_CLIENTS_CLIENTS_1_HOST - адрес внешнего сервера
  • REPLICATOR_GLOBAL_CLIENTS_CLIENTS_1_PORT - порт внешнего сервера
  • REPLICATOR_GLOBAL_CLIENTS_CLIENTS_1_SECRET - пароль radius


Конфигурация настроек выгрузки информации на внешний FTP-сервер

  • REPLICATOR_SORM3_ENABLED - включает выгрузку информации на FTP-сервер
  • REPLICATOR_SORM3_HOST - адрес FTP-сервера
  • REPLICATOR_SORM3_PORT - порт FTP-сервера
  • REPLICATOR_SORM3_PERIOD_S - интервал выгрузки информации
  • REPLICATOR_SORM3_USER - логин для входа на FTP-сервер
  • REPLICATOR_SORM3_PASS - пароль для входа на FTP-сервер
  • REPLICATOR_SORM3_ACCT_DIR - директория для выгрузки информации
  • REPLICATOR_SORM3_NODE_ID - идентификатор (IP адрес) хоста съемника, используется в формировании имени  выгружаемого по ftp файла с данными.


Конфигурация настроек перенаправления RADIUS-аккаунтинга на региональный съемник

  • REPLICATOR_SORM2_ENABLED - глобально включает возможность пернаправления аккаунтинга
  • REPLICATOR_SORM2_FEDERATED - включает поиск съемников, которые были включены в "Личном кабинете" в разделе "Настройки" → "Дерево доменов" в колонке "СОРМ-2"

Конфигурация настроек обогащения RADIUS-аккаунтинга для DPI

  • REPLICATOR_DPI_STEP_LOGIC_ENABLED - активирует обогащение трафика для DPI
  • REPLICATOR_DPI_STEP_LOGIC_VERBOSE - определяет режим пересылки пакетов

Конфигурация настроек списка колонок выгружаемой на FTP-сервер информации

  • SORM3_FIELD_<название колонки>включает/отключает выгрузку информации указанной колонки (полный список возможных названий приведен выше в описании файла .env)


TZ - часовой пояс в формате Asia/Novosibirsk (список существующих можно посмотреть командой timedatectl list-timezones)

Файлы .env и docker-compose.yml должны находиться в одной папке. Контейнер запускается командой:

docker-compose up -d
  • Нет меток