Описание
Сервис представляет собой интерфейс для взаимодействия компонентов платформы и внешними 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) ngw_skk_received_statuses_total |
| Остановка сервиса | systemctl stop eltex-ngw | Сервис успешно остановлен Active: failed |
| Перезапуск сервиса | systemctl restart eltex-ngw | Сервис успешно перезапущен Active: active (running) |
| Создание пользователя базы данных | eltex-ngw create-db-user | |
| Удаление базы данных | eltex-ngw remove-db |
Если при установке пакета с помощью скрипта-инсталлятора переменная ANSWER_SOFTWLC_LOCAL имеет значение "1", то пользователь базы данных будет создан автоматически. При установке пакета вручную необходимо создать пользователя командой:
eltex-ngw create-db-user
Конфигурация
/etc/eltex-ngw/application.conf
Содержит основные настройки сервиса. Подробные инструкции по настройке различных методов авторизации находится в разделе "Инструкция по настройке и установке"→"Настройка авторизации".
// Server configuration
server {
port = 8040 # порт, который слушает сервис eltex-ngw
// number of threads in executor that executes handlers and different gateways
threads = 50
}
http {
// Timeout of http connection to the end gateway
connectionTimeout = 30s
// Number of maximum simultaneous http connections
maxConnections = 50
// Time that connection will be kept alive
keepAliveTimeout = 5s
// Whether to check SSL certificate
checkCert = true
// HTTP User Agent
userAgent = eltex-ngw
}
sms {
// Incoming (user to service) sms config
incoming.config = "smsc.conf" # выбор конфигурации шлюза для входящих сообщений (SMS от пользователя к шлюзу)
// Outgoing (service to user) sms config
outgoing.config = "smsc.conf" # выбор конфигурации для исходящих сообщений (SMS от шлюза к пользователю)
}
call {
// Incoming (user to service) call config
incoming.config = "sbc.conf" # выбор конфигурации шлюза для входящих звонков (звонок от пользователя)
// Outgoing (service to user) call config
outgoing.config = "smg.conf" # выбор конфигурации для исходящих звонков (звонок пользователю)
}
email {
// Outgoing (service to user) email config
outgoing.config = "email.conf" # выбор конфигурации для взаимодействия с сервером электронной почты (SMTP)
}
database {
host = localhost # адрес базы данных
port = 3306 # порт
name = eltex_ngw # название базы данных
user = javauser # логин для доступа к бд
password = javapassword # пароль для доступа к бд
pool {
// Time to wait for a connection
connectionTimeout = 10s
// Time to wait for connection validation
validationTimeout = 3s
min = 1
max = 10
}
migrate = true
jdbc {
driverClass = com.mysql.cj.jdbc.Driver
url = "jdbc:mysql://${database.host}:${database.port}/${database.name}"
properties {
max_allowed_packet = 32362048
useUnicode = true
characterEncoding = utf8
}
}
# настройки планировщика заданий по очистке старых сообщений в базе данных
// 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_events = 1000 # лимит кол-ва удаляемых записей за одно выполнение из таблицы eltex_ngw.incoming_events
limit_messages = 1000 # лимит кол-ва удаляемых записей за одно выполнение из таблицы eltex_ngw.messages
limit_emails = 1000 # лимит кол-ва удаляемых записей за одно выполнение из таблицы eltex_ngw.emails
limit_files = 1000 # лимит кол-ва удаляемых записей за одно выполнение из таблицы eltex_ngw.files
// cleanup schedule cron, e.g. "0 0 3 * * *"
// set to "-" to disable
cron = "0 0 3 * * *" # настройка планировщика для запуска очистки устаревших записей, значение по умолчанию "0 0 3 * * *" (каждый день в 3:00), для отключения указать "-"
// cron for optimize tables, cron-like expression, e.g. "0 0 4 5 * *"
// set to "-" to disable
cron_optimize = "0 0 4 5 * *" # настройка планировщика для запуска очистки таблиц БД от удаленных записей, значение по умолчанию "0 0 4 5 * *" (каждый 5-й день месяца в 4:00), для отключения указать "-"
}
}
Удаление файлов из таблицы "eltex_ngw.file_chunks" происходит автоматически после удаления из таблицы eltex_ngw.files
/etc/eltex-ngw/gateway.d/
каталог содержит конфигурационные файлы для подключения к различным шлюзам.
Для подключения к различным шлюзам создан набор шаблонов конфигураций, которые находятся в каталоге /etc/eltex-ngw/gateway.d/. Зеленым цветом отмечены наиболее широко используемые конфигурации.
| Файл | Описание | Назначение | Примечание |
|---|---|---|---|
| email.conf | Почтовый сервер | Для отправки сообщений электронной почты по протоколу SMTP | |
| gazprom.conf | SMS | Индивидуальная интеграция | |
| kaspib.conf | Kaspi Bank | SMS | Индивидуальная интеграция |
| netping.conf | GSM-шлюз NetPing SMS | SMS | |
| nskbl.conf | SMS | Индивидуальная интеграция | |
| psbank.conf | SMS | Индивидуальная интеграция | |
| rtk.conf | Ростелеком | SMS | Индивидуальная интеграция |
| sbc.conf | Исходящий звонок | Для авторизации по звонку от пользователя | |
| script.conf | Отправка SMS с помощью скрипта | ||
| serial_port.conf | GSM-шлюз Fargo maestro 100 | SMS | |
| sevensky.conf | Seven Sky | SMS | |
| skk.conf skk_template.json | Шлюз СКК | SMS | Индивидуальная интеграция |
| smg.conf | Входящий звонок | Для авторизации по звонку к пользователю | |
| smpp.conf | шлюз с поддержкой SMPP | SMS | |
| smsc.conf | SMS-центр | SMS | |
| zagruzka.conf | Связной загрузка | SMS | |
| mts.conf | SMS шлюз МТС | SMS |
Если среди предложенных шаблонов настроек шлюзов Вы не нашли подходящий - обратитесь в техподдержку для интеграции с Вашим шлюзом.
/etc/default/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
Содержит параметры логирования.
- Интервал автоматического перечитывания конфигурации логгера:
<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:localhost</Property> <Property name="gelfPort">12201</Property>
- Уровень логирования:
<Root level="ERROR">
Замечания по настройке взаимодействия с почтовым сервером
NGW обеспечивает взаимодействие с почтовым сервером по протоколу SMTP и используется для отправки уведомлений и отчетов на email. Для корректной работы требуется включить и настроить взаимодействие с почтовым сервером.
В файле /etc/eltex-ngw/application.conf, в разделе email указывается файл настроек взаимодействия с почтовым сервером:
Для настройки взаимодействия с почтовым сервером используется файл /etc/eltex-ngw/gateway.d/email.conf:
Важно!
Возможность указать версию протокола шифрования "tlsVersion" реализована с версии 1.21 SoftWLC.
Для возможности использования "TLSv1.0" или "TLSv1.1" требуется установить Java 8 версии 291 или ранее.
Докеризация сервиса
Сервис может быть запущен в docker-контейнере. Для этого необходимо подготовить файл docker-compose.yml
version: "3"
volumes:
softwlc_logs:
driver: local
services:
ngw:
container_name: ngw
image: hub.eltex-co.ru/softwlc/eltex-ngw:1.23-<tag>
ports:
- 8040:${NGW_PORT}
# - 1814:1814/udp # For smg.conf if needed
# - 8041:8041/udp # For sbc.conf if needed
volumes:
- "/etc/eltex-ngw/gateway.d:/etc/eltex-ngw/gateway.d"
- "/etc/timezone:/etc/timezone:ro"
environment:
- server.port=${NGW_PORT}
- JAVA_INIT_HEAP=${JAVA_INIT_HEAP}
- JAVA_MAX_HEAP=${JAVA_MAX_HEAP}
- sms.incoming.config=${NGW_SMS_INCOMING_CONF}
- sms.outgoing.config=${NGW_SMS_OUTGOING_CONF}
- call.incoming.config=${NGW_CALL_INCOMING_CONF}
- call.outgoing.config=${NGW_CALL_OUTGOING_CONF}
- email.outgoing.config=${NGW_EMAIL_OUTGOING_CONF}
- database.host=${NGW_DB_HOST}
- database.port=${NGW_DB_PORT}
- database.name=${NGW_DB_NAME}
- database.user=${NGW_DB_USER}
- database.password=${NGW_DB_PASSWORD}
- database.pool.connectionTimeout=${NGW_DB_POOL_CONNECTION_TIMEOUT}
- database.pool.min=${NGW_DB_POOL_MIN_IDLE}
- database.pool.max=${NGW_DB_POOL_SIZE}
- database.cleanup.events=${NGW_DB_CLEANUP_EVENTS}
- database.cleanup.messages=${NGW_DB_CLEANUP_MESSAGES}
- database.cleanup.emails=${NGW_DB_CLEANUP_EMAILS}
- database.cleanup.files=${NGW_DB_CLEANUP_FILES}
- database.cleanup.limit_events=${NGW_DB_CLEANUP_LIMIT_EVENTS}
- database.cleanup.limit_messages=${NGW_DB_CLEANUP_LIMIT_MESSAGES}
- database.cleanup.limit_emails=${NGW_DB_CLEANUP_LIMIT_EMAILS}
- database.cleanup.limit_files=${NGW_DB_CLEANUP_LIMIT_FILES}
- database.cleanup.cron=${NGW_DB_CLEANUP_CRON}
- database.cleanup.cron_optimize=${NGW_DB_CLEANUP_CRON_OPTIMIZE}
- NGW_LOG_LEVEL=${NGW_LOG_LEVEL}
- NGW_CONSOLE_LEVEL=${NGW_CONSOLE_LEVEL}
- GELF_LEVEL=${GELF_LEVEL}
- GELF_HOST=${GELF_HOST}
- GELF_PORT=${GELF_PORT}
- TZ=${TZ}
На данный момент нельзя конфигурировать настройки шлюзов, находящихся в папке "/etc/eltex-ngw/gateway.d", через переменные окружения. Для применения необходимых настроек нужно сделать маппинг конфигурационных файлов ранее установленной deb-версии.
Некоторые параметры можно сконфигурировать через переменные окружения представленные ниже. Для этого необходимо создать файл .env и разместить его рядом с docker-compose.yml, указав в последнем необходимые переменные. В блоке "environment" необходимо указывать названия переменных в соответствии с названием переменных в конфигурационных файлах. В случае, если переменные не будут заданы или названия переменных будут заданы некорректно, то применяться значения по умолчанию.
NGW_PORT=8040 NGW_SMS_INCOMING_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_EVENTS=1000 NGW_DB_CLEANUP_LIMIT_MESSAGES=1000 NGW_DB_CLEANUP_LIMIT_EMAILS=1000 NGW_DB_CLEANUP_LIMIT_FILES=1000 # Don't clean up #NGW_DB_CLEANUP_CRON=- # 3 am each day NGW_DB_CLEANUP_CRON="0 0 3 * * *" # Don't optimize tables #NGW_DB_CLEANUP_CRON_OPTIMIZE=- # 4 am 5th day each month NGW_DB_CLEANUP_CRON_OPTIMIZE="0 0 4 5 * *" NGW_LOG_LEVEL=INFO NGW_CONSOLE_LEVEL=INFO GELF_LEVEL=OFF GELF_HOST=udp:localhost GELF_PORT=12201 #Настройка часового пояса TZ=Asia/Novosibirsk
Возможные переменные окружения
Запуск сервиса- NGW_PORT - Grpc порт, который будет слушать сервис.
- JAVA_INIT_HEAP - Xms JVM опция.
- JAVA_MAX_HEAP - Xmx JVM опция.
- JAVA_OPTS - JVM опции (может переопределить все остальные параметры по умолчанию).
- 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_EVENTS - лимит удалений из таблицы событий за раз.
NGW_DB_CLEANUP_LIMIT_MESSAGES - лимит удалений из таблицы сообщений за раз.
NGW_DB_CLEANUP_LIMIT_EMAILS - лимит удалений из таблицы emails за раз.
NGW_DB_CLEANUP_LIMIT_FILES - лимит удалений из таблицы файлов за раз.
NGW_DB_CLEANUP_CRON - расписание очистки cron.
NGW_DB_CLEANUP_CRON_OPTIMIZE - расписание оптимизации таблиц cron.
Настройки логирования
- NGW_LOG_LEVEL - уровень логов при отправке на сервер, указанный в настройке "GELF_HOST"
- NGW_CONSOLE_LEVEL - уровень логов в консоли docker
- GELF_LEVEL - выключить/включить отправку логов на сервер
- GELF_HOST - адрес сервера для отправки логов
- GELF_PORT - порт сервера для отправки логов
Настройка часового пояса
- TZ - часовой пояс в формате Asia/Novosibirsk (список существующих можно посмотреть командой timedatectl list-timezones)
Дополнительные параметры конфигурации для авторизации по исходящему звонку (от пользователя)
Указать в файле ".env" используемый файл конфигурации:
NGW_CALL_INCOMING_CONF=sbc.conf
Указать маппинг порта, который указан в параметре файла sbc.conf:
connection {
port = 8041
в файле docker-compose.yml:
ports:
- 8040:${NGW_PORT}
- 8041:8041/udp # For sbc.conf if needed
Дополнительные параметры конфигурации для авторизации по входящему звонку (пользователю)
Указать в файле ".env" используемый файл конфигурации:
NGW_CALL_OUTGOING_CONF=smg.conf
Указать маппинг порта, который указан в параметре раздела smg.conf:
listen {
port = 1814
в файле docker-compose.yml:
ports:
- 8040:${NGW_PORT}
- 1814:1814/udp # For smg.conf if needed
Метрики сервиса
Метрики сервиса доступны по адресу:
http://<IP-адрес eltex-ngw>:8040/actuator/prometheus
Пример настройки подключения Prometheus:
- job_name: 'NGW'
metrics_path: '/actuator/prometheus'
scrape_interval: 60s
static_configs:
- targets: ['<IP-адрес eltex-ngw>:8040']
Справка по метрикам
Label application - 'NGW'.
Метрики приведены в алфавитном порядке (нет справки для общих метрик начинающихся с jetty, jvm, hikaricp, process, system):
Встроенная документация
В составе сервиса NGW есть встроенная документация.
Найти ее можно на том же порту 8040, на котором работает весь сервис: http://ubuntu:8040/doc/index.html
Предназначена она в первую очередь для разработчиков.
Например, на главной странице можно узнать, какую версию ngw-client нужно использовать при интеграции с этим сервисом.