Описание
Сервис представляет собой интерфейс для взаимодействия компонентов платформы и внешними 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 нужно использовать при интеграции с этим сервисом.