Описание
Сервис предназначен для управления учетными записями 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 } } }
Мониторинг
Для мониторинга сервиса APB поддержаны совместимые с Prometheus метрики. Для просмотра списка метрик надо открыть:
http://<адрес сервера Eltex-Mercury>:6564/mercury/prometheus
Для запуска мониторинга со стороны Prometheus нужно добавить в его конфигурации:
- job_name: 'mercury' scrape_interval: 5s metrics_path: /mercury/prometheus static_configs: # Change this to the actual mercury address - targets: ['адрес сервера Eltex-Mercury:6564']
Grafana и Prometheus можно запустить в docker используя docker-compose.yml и .env:
docker-compose.yml
version: '3' services: prometheus: image: prom/prometheus:v2.25.0 volumes: - ./prometheus/:/etc/prometheus/ command: - '--config.file=/etc/prometheus/prometheus.yml' - '--storage.tsdb.path=/prometheus' - '--web.console.libraries=/usr/share/prometheus/console_libraries' - '--web.console.templates=/usr/share/prometheus/consoles' ports: - ${PROMETHEUS_PORT}:9090 grafana: image: grafana/grafana:7.4.2 volumes: - ./grafana/:/etc/grafana/ ports: - 3000:3000 depends_on: - prometheus environment: - PROMETHEUS_HOST=${PROMETHEUS_HOST} - PROMETHEUS_PORT=${PROMETHEUS_PORT}
.env
# Change this to the actual address PROMETHEUS_HOST=127.0.0.1 PROMETHEUS_PORT=9090
Шаблоны для Grafana, Prometheus и docker-compose.yml можно взять из архива: monitoring_mercury.zip. Для запуска нужно извлечь данные из архива, перейти в директорию и запустить:
docker-compose up
Докеризация сервиса
Сервис может быть запущен в docker-контейнере. Для этого необходимо подготовить файл с переменными окружения .env и docker-compose.yml
version: "3" services: eltex-mercury: container_name: eltex-mercury image: hub.eltex-co.ru/softwlc/eltex-mercury:1.21-<tag> 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 - TZ=${TZ} 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 #Настройка часового пояса TZ=Asia/Novosibirsk
Описание переменных окружения
Запуск сервиса
- 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.
Настройка часового пояса
- TZ - часовой пояс в формате Asia/Novosibirsk (список существующих можно посмотреть командой timedatectl list-timezones).