Описание


Сервис представляет собой интерфейс для взаимодействия компонентов платформы и внешними SMS-шлюзами, Call-центрами и серверами электронной почты. Служит для отправки уведомлений пользователям платформы, а также пользователям Wi-Fi.



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


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

apt-get install eltex-ngw

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

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

Сервис запущен

Active: active (running)

Cервис не запущен

Active: failed


Запуск сервисаsystemctl start eltex-ngw

Сервис успешно запущен

Active: active (running)


Остановка сервисаsystemctl stop eltex-ngw

Сервис успешно остановлен

Active: failed


Перезапуск сервисаsystemctl restart eltex-ngw

Сервис успешно перезапущен

Active: active (running)


Создание пользователя базы данныхeltex-ngw create-db-user
Удаление базы данныхeltex-ngw remove-db

   

  

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


/etc/eltex-ngw/application.conf

Содержит основные настройки сервиса.

// Server configuration                               
server {
    port = 8040                                             # порт, который слушает сервис eltex-ngw
}

sms {
    // Incoming (user to service) sms config
    incoming.config = "smsc.conf"                           # выбор конфигурации для исходящих сообщений
    // Outgoing (service to user) sms config
    outgoing.config = "smsc.conf"                           # выбор конфигурации для входящих сообщений

    // Sms gateway pool settings                            # настройка пула до смс шлюза 
    pool {
        min = 1
        max = 20
        waitTimeout = 5s
    }
}

call {                                                      
    // Incoming (user to service) call config
    incoming.config = "sbc.conf"                            # выбор конфигурации для входящих звонков
    // Outgoing (service to user) call config
    outgoing.config = "/smg.conf"                           # выбор конфигурации для исходящих звонков

    // Call gateway pool settings                           
    pool {
        min = 1
        max = 20
        waitTimeout = 5s
    }
}

email {
    // Outgoing (service to user) email config
    outgoing.config = "email.conf"                          # выбор конфигурации для электронной почты

    pool {
        min = 1
        max = 20
        waitTimeout = 5s
    }

}

database {
    host = localhost                                        # адрес базы данных
    port = 3306                                             # порт
    name = eltex_ngw                                        # название базы данных
    user = javauser                                         # логин для доступа к бд
    password = javapassword                                 # пароль для доступа к бд

    pool {
        // Time to wait for a connection
        connectionTimeout = 10s

        min = 1
        max = 10
    }
                                                            # настройки планировщика заданий по очистке старых сообщений в базе данных
    // Configure the lifetime of different tables' content
    cleanup {                                              
        // incoming events
        events = 365d                                       # время хранения событий
        // sms
        messages = 365d                                     # время хранения sms
        // email
        emails = 365d                                       # время хранения электронных писем
        // files
        files = 7d                                          # время хранения файлов
        // limit deletions by this number (0 if no limit)
        limit = 0
        // cleanup schedule cron, e.g. "0 0 3 ? * *"        # настройка времени запуска по cron
        // set to "-" to disable
        cron = "-"                                          # включение планировщика, по умолчанию выключен
    }
}

/etc/eltex-ngw/gateway.d/

каталог содержит конфигурационные файлы для подключения к  различным шлюзам.

Для подключения к различным  смс-шлюзам создан набор шаблонов конфигураций, которые находятся в каталоге /etc/eltex-ngw/gateway.d/. Если среди предложенных шаблонов и смс-шлюзов Вы не нашли свой, то обратитесь в техподдержку для интеграции с Вашим шлюзом.

  • SMS-центр - smsc_gate.conf.

  • Kaspi Bank - kaspib_gate.conf (Индивидуальная интеграция).

  • Seven Sky  - 7sky_gate.conf.

  • Связной загрузка - zagruzka_gate.conf.

  • SMS - шлюз с поддержкой SMPP - smpp_gate.conf.

  • GSM-шлюз NetPing SMS - netping_gate.conf.

  • GSM-шлюз  Fargo maestro 100 - serial_port.conf.

  • Банк Левобережный - levob_gate.conf (Индивидуальная интеграция).

  • Связьбанк шлюз - sviaz_bank_gate.conf (Индивидуальная интеграция).

  • rtk_sbc.conf - исходящий звонок.

  • smg_gate.conf - входящий звонок.

  • Ростелеком - rtk_gate.conf (Индивидуальная интеграция).

Возможность интеграции с другими шлюзами уточняйте в техподдержке компании.

/etc/default/eltex-ngw

Содержит параметры инициализации сервиса.

# Eltex Notification Gateway daemon parameters

# Initial size of Java heap
JAVA_INIT_HEAP=16m
# Maximum size of Java heap
JAVA_MAX_HEAP=128m

# Additional arguments to pass to java
JAVA_OPTS="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/eltex-ngw"

  • Количество памяти, выделяемое приложению при старте сервиса:
# Initial size of Java heap
JAVA_INIT_HEAP=16m
  • Максимальное количество памяти, которое может арендовать сервис:
# Maximum size of Java heap
JAVA_MAX_HEAP=128m
  • Дополнительные опции запуска java:
# Additional arguments to pass to java
JAVA_OPTS="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/eltex-ngw"


/etc/eltex-ngw/log4j2.xml

Содержит параметры логирования.

<?xml version="1.0" encoding="UTF-8"?>
<Configuration monitorInterval="600">
    <Properties>
        <Property name="baseDir">/var/log/eltex-ngw</Property>
        <Property name="maxFileSize">20 MB</Property>
        <Property name="accumulatedFileSize">100 GB</Property>
        <Property name="lastModified">4d</Property>
        <Property name="maxCount">10</Property>
        <Property name="logPattern">%d{ISO8601} [%t] %-5p %logger{12} %C{1}.%M(line:%L). %m%n</Property>

        <Property name="gelfLevel">OFF</Property>
        <Property name="gelfHost">udp:lab3-test.eltex.loc</Property>
        <Property name="gelfPort">12201</Property>
    </Properties>
    <Appenders>

        <RollingFile name="RollingFile" filename="${baseDir}/notification-gateway.log"
                     filepattern="${baseDir}/notification-gateway-%i.log.gz">
            <PatternLayout pattern="${logPattern}"/>
            <Policies>
                <SizeBasedTriggeringPolicy size="${maxFileSize}"/>
                <OnStartupTriggeringPolicy/>
            </Policies>
            <!-- Ограничение на кол-во файлов. для боевой реализации - не более 20 штук. -->
            <DefaultRolloverStrategy max="3">
                <Delete basePath="${baseDir}" maxDepth="1">
                    <IfFileName glob="notification-gateway-*.log.gz">
                        <IfLastModified age="${lastModified}"/>
                        <IfAny>
                            <IfAccumulatedFileSize exceeds="${accumulatedFileSize}"/>
                            <IfAccumulatedFileCount exceeds="${maxCount}"/>
                        </IfAny>
                    </IfFileName>
                </Delete>
            </DefaultRolloverStrategy>
        </RollingFile>
        <Gelf name="Gelf" host="${gelfHost}" port="${gelfPort}" version="1.1" facility="notification-gateway"
              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{12}"/>
            <Field name="location" pattern="%C{1}.%M(line:%L)"/>
        </Gelf>
    </Appenders>
    <Loggers>
        <Root level="ERROR">
            <AppenderRef ref="RollingFile"/>
            <AppenderRef ref="Gelf" level="${gelfLevel}"/>
        </Root>
        <Logger name="org.eclipse.jetty" level="WARN"/>
        <Logger name="org.mongodb" level="ERROR"/>
        <Logger name="org.jsmpp" level="ERROR"/>
        <Logger name="org.springframework" level="ERROR"/>
        <logger name="jndi" level="OFF"/>

        <!--log4j configuration logger-->
        <Logger name="EventLogger" additivity="false" level="ERROR">
            <AppenderRef ref="console"/>
        </Logger>
    </Loggers>
</Configuration>

  • Интервал автоматического перечитывания конфигурации логгера:
<Configuration monitorInterval="600">
  • Базовая директория хранения логов:
<Property name="baseDir">/var/log/eltex-ngw</Property>
  • Максимально допустимый размер файла (при его превышении создается новый файл. а старый архивируется):
<Property name="maxFileSize">20 MB</Property>
  • Суммарный размер логов (текущий файл + архивные). При его превышении наиболее старые файлы будут удаляться:
<Property name="accumulatedFileSize">100 GB</Property>
  • Срок хранения логов, файлы модифицированные раннее этого срока будут удаляться:
<Property name="lastModified">4d</Property>
  • Максимальное количество архивных файлов, при его превышении наиболее старые файлы будут перезаписываться:
<Property name="maxCount">10</Property>
  • Блок настройки перенаправления логов в Graylog (уровень логирования, адрес, порт):
<Property name="gelfLevel">OFF</Property>
<Property name="gelfHost">udp:lab3-test.eltex.loc</Property>
<Property name="gelfPort">12201</Property>
  • Уровень логирования:
<Root level="ERROR">



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

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

version: "2.4"

volumes:
  softwlc_logs:
    driver: local
services:
  ngw:
    container_name: ngw
    image: hub.eltex-co.ru/softwlc/eltex-ngw:1.19-<tag>
    network_mode: host
    ports:
      - 1814:1814
      - 8040:8040
    volumes:
      - "/etc/eltex-ngw:/etc/eltex-ngw"


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


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


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

NGW_PORT=8040

NGW_SMS_INCOMING_CONF=smsc.conf
NGW_SMS_OUTGOING_CONF=smsc.conf

NGW_CALL_INCOMING_CONF=
NGW_CALL_OUTGOING_CONF=

NGW_EMAIL_OUTGOING_CONF=

NGW_DB_HOST=<IP-address>
NGW_DB_PORT=3306
NGW_DB_NAME=eltex_ngw
NGW_DB_USER=javauser
NGW_DB_PASSWORD=javapassword

NGW_DB_POOL_CONNECTION_TIMEOUT=10s
NGW_DB_POOL_MIN_IDLE=1
NGW_DB_POOL_SIZE=10

NGW_DB_CLEANUP_EVENTS=365d
NGW_DB_CLEANUP_MESSAGES=365d
NGW_DB_CLEANUP_EMAILS=365d
NGW_DB_CLEANUP_FILES=7d
NGW_DB_CLEANUP_LIMIT=0
NGW_DB_CLEANUP_CRON=-


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

Запуск сервиса
  • NGW_PORT - Grpc порт, который будет слушать сервис.
  • JAVA_INIT_HEAP - Xms JVM опция.
  • JAVA_MAX_HEAP - Xmx JVM опция.
  • JAVA_OPTS - JVM опции (может переопределить все остальные параметры по умолчанию).
Настройки SMS
  • NGW_SMS_INCOMING_CONF - конфигурационный файл для идентификации пользователя по входящему SMS (от пользователя).
  • NGW_SMS_OUTGOING_CONF - конфигурационный файл для идентификации пользователя по исходящему SMS (пользователю).
  • sms.pool.waitTimeout - таймаут получения соединения из пула.
  • sms.pool.min - минимальное число idle соединений.
  • sms.pool.max - размер пула соединений.

Настройки звонков

  • NGW_CALL_INCOMING_CONF - конфигурационный файл для идентификации пользователя по входящему звонку (от пользователя).
  • NGW_CALL_OUTGOING_CONF - конфигурационный файл для идентификации пользователя по исходящему звонку (пользователю).
  • call.pool.waitTimeout - таймаут получения соединения из пула.
  • call.pool.min - минимальное число idle соединений.
  • call.pool.max - размер пула соединений.

Настройки email

  • NGW_EMAIL_OUTGOING_CONF - конфигурационный файл для исходящей почты.
  • email.pool.waitTimeout - таймаут получения соединения из пула.
  • email.pool.min - минимальное число idle соединений.
  • email.pool.max - размер пула соединений.

Настройки взаимодействия с БД

  • NGW_DB_HOST - хост подключения к БД.
  • NGW_DB_PORT - порт подключения к БД.
  • NGW_DB_NAME - имя БД.
  • NGW_DB_USER - имя пользователя БД.
  • NGW_DB_PASSWORD - пароль пользователя БД.
  • NGW_DB_POOL_CONNECTION_TIMEOUT - таймаут получения соединения из пула.
  • NGW_DB_POOL_MIN_IDLE - минимальное число idle соединений.
  • NGW_DB_POOL_SIZE - размер пула соединений с БД.
  • NGW_DB_CLEANUP_EVENTS - время жизни событий в БД.
  • NGW_DB_CLEANUP_MESSAGES - время жизни сообщений в БД.
  • NGW_DB_CLEANUP_EMAILS - время жизни email в БД.
  • NGW_DB_CLEANUP_FILES - время жизни файлов, отправленных по email, в БД.
  • NGW_DB_CLEANUP_LIMIT - лимит удалений за раз.
  • NGW_DB_CLEANUP_CRON - расписание очистки cron.