Описание
Сервис предназначен для управления учетными записями Hotspot-пользователей (используется сервисами eltex-portal и eltex-apb). Межсервисный обмен реализован на базе gRPC API.
Конфигурация
/etc/eltex-mercury/application.conf
Основной конфигурационный файл.
- Подключение к БД:
database { host = localhost port = 3306 name = radius user = javauser password = javapassword
- Активация режима только на просмотр:
readOnly = false
- Максимальное количество коннектов к БД:
maxPoolSize = 20
- Количество одновременных коннектов к БД:
maxPoolSize = 20
- Таймаут коннекта к БД (в секундах):
connectionTimeout = 5000
- Активация отправки информации об изменениях в таблице radstat в logging-service:
sorm3Enabled = false
- Подключение к eltex-logging-service:
logging { host = localhost port = 9099 }
/etc/default/eltex-mercury
Cодержит параметры, необходимые для инициализации сервиса.
Параметры | Описание |
---|---|
JAVA_INIT_HEAP | Количество памяти, выделяемое на работу сервиса при старте. Рекомендуется выставлять равное JAVA_MAX_HEAP. |
JAVA_MAX_HEAP | Максимальное количество памяти, которое может зарезервировать сервис |
JAVA_OPTS | Дополнительные опции для запуска jvm |
/etc/eltex-mercury/log4j2.xml
Файл настройки логирования сервиса.
- Интервал автоматического перечитывания конфигурации логгера:
<Configuration monitorInterval="600">
- Уровень логирования:
<Property name="rootLevel">${env:LOG_LEVEL:-ERROR}</Property>
- Базовая директория хранения логов:
<Property name="baseDir">/var/log/eltex-mercury</Property>
- Максимально допустимый размер файла (при его превышении создается новый файл. а старый архивируется):
<Property name="maxFileSize">20 MB</Property>
- Суммарный размер логов (текущий файл + архивные). При его превышении наиболее старые файлы будут удаляться:
<Property name="accumulatedFileSize">10 GB</Property>
- Срок хранения логов, файлы модифицированные раннее этого срока будут удаляться:
<Property name="lastModified">4d</Property>
- Максимальное количество архивных файлов, при его превышении наиболее старые файлы будут перезаписываться:
<Property name="maxCount">20</Property>
- Блок настройки перенаправления логов в Graylog (уровень логирования, адрес, порт):
<Property name="gelfLevel">${env:GELF_LEVEL:-OFF}</Property> <Property name="gelfHost">${env:GELF_HOST:-udp:lab3-test.eltex.loc}</Property> <Property name="gelfPort">${env:GELF_PORT:-12201}</Property>
Настройка
Настройка взаимодействия с eltex-portal
Настройка производится в конструкторе порталов - "Системные настройки - "Доступ к Mercury":
Настройка взаимодействия eltex-apb
Настройка производится в конфигурационном файле apb - /etc/eltex-apb/apb.properties:
... mercury.host=localhost mercury.port=6565 mercury.pool.size=100 ...
Настройка таймзоны
При получении в логах ошибки:
java.sql.SQLException: The server time zone value 'MSK' is unrecognized or represents more than one time zone. You must configure either the server or JDBC driver (via the serverTimezone configuration property) to use a more specifc time zone value if you want to utilize time zone support.
Нужно прописать корректную таймзону для подключения к БД в файле /etc/eltex-mercury/application.conf
:
database { ... jdbc { properties { serverTimezone = Europe/Moscow } } }
Докеризация сервиса
Сервис может быть запущен в docker-контейнере. Для этого необходимо подготовить файл с переменными окружения .env и docker-compose.yml
version: "3" services: eltex-mercury: container_name: eltex-mercury image: hub.eltex-co.ru/softwlc/eltex-mercury:1.18-67 ports: - 6565:${MERCURY_PORT} environment: - grpc.port=${MERCURY_PORT} - database.host=${MERCURY_DB_HOST} - database.port=${MERCURY_DB_PORT} - database.name=${MERCURY_DB_NAME} - database.user=${MERCURY_DB_USER} - database.password=${MERCURY_DB_PASSWORD} - database.readOnly=${MERCURY_DB_READ_ONLY} - database.pool.maxPoolSize=${MERCURY_DB_POOL_SIZE} - database.pool.minimumIdle=${MERCURY_DB_POOL_MIN_IDLE} - database.pool.connectionTimeout=${MERCURY_DB_POOL_TIMEOUT} - sorm3Enabled=${MERCURY_SORM} - logging.host=${MERCURY_LOGGING_HOST} - logging.port=${MERCURY_LOGGING_PORT} - LOG_LEVEL=DEBUG volumes: - /var/log/eltex-mercury:/var/log/eltex-mercury
Для сбора логов рекомендуется использовать коллектор, например Graylog, а не маппинг файлов, содержащих логи.
MERCURY_PORT=6565 MERCURY_DB_HOST=<IP-address> MERCURY_DB_PORT=3306 MERCURY_DB_NAME=radius MERCURY_DB_USER=javauser MERCURY_DB_PASSWORD=javapassword MERCURY_DB_READ_ONLY=false MERCURY_DB_POOL_SIZE=20 MERCURY_DB_POOL_MIN_IDLE=1 MERCURY_DB_POOL_TIMEOUT=5000 MERCURY_SORM=false MERCURY_LOGGING_HOST=<IP-address> MERCURY_LOGGING_PORT=9099 LOG_LEVEL=DEBUG
Описание переменных окружения
Запуск сервиса
- MERCURY_PORT - Grpc-порт, который будет слушать сервис.
- JAVA_INIT_HEAP - Xms JVM опция.
- JAVA_MAX_HEAP - Xmx JVM опция.
- JAVA_OPTS - JVM опции (может переопределить все остальные параметры по умолчанию).
Настройки взаимодействия с БД
MERCURY_DB_HOST - хост подключения к БД.
MERCURY_DB_PORT - порт подключения к БД.
MERCURY_DB_NAME - имя БД.
MERCURY_DB_USER - имя пользователя БД.
MERCURY_DB_PASSWORD - пароль пользователя БД.
MERCURY_DB_READ_ONLY - включить режим "только чтение".
MERCURY_DB_POOL_SIZE - размер пула соединений с БД.
MERCURY_DB_POOL_MIN_IDLE - минимальное число idle соединений.
MERCURY_DB_POOL_TIMEOUT - таймаут получения соединения из пула.
Настройка SORM3
- MERCURY_SORM - включить поддержку sorm3.
Взаимодействие с Logging Service
- MERCURY_LOGGING_HOST - хост подключения к сервису logging-service.
- MERCURY_LOGGING_PORT - порт подключения к сервису logging-service.