Описание
Сервис eltex-jobs выполняет формирование задачи с необходимыми параметрами и отправку отчета пользователю по команде от сервиса bruce. Параметры задачи хранятся в базе данных mongo.
Установка
Сервис устанавливается с помощью пакетного менеджера командой
apt install eltex-jobs
Настройка
Конфигурационный файл для настройки доступен по пути /etc/eltex-jobs/application.properties
# порт используемый сервисом server.port=9696 spring.batch.job.enabled=false spring.datasource.jdbcUrl=jdbc:h2:mem:testdb;DB_CLOSE_ON_EXIT=FALSE spring.datasource.driverClassName=org.h2.Driver spring.datasource.username=sa spring.datasource.password= spring.datasource.maximum-pool-size=200 spring.h2.console.enabled=true # адрес базы данных ems и имя драйвера spring.emsdatasource.jdbcUrl=jdbc:mysql://localhost/eltex_ems?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 spring.emsdatasource.driverClassName=com.mysql.cj.jdbc.Driver # логин для подключения к бд ems spring.emsdatasource.username=javauser # пароль для подключения к бд ems spring.emsdatasource.password=javapassword # ConnectionTimeout property controls the maximum number of milliseconds that a client (that's you) will wait for a connection from the pool. spring.emsdatasource.connection-timeout=15000 # ValidationTimeout property controls the maximum amount of time that a connection will be tested for aliveness. spring.emsdatasource.validation-timeout=3000 # IdleTimeout property controls the maximum amount of time that a connection is allowed to sit idle in the pool. spring.emsdatasource.idle-timeout=30000 # MinimumIdle property controls the minimum number of idle connections that HikariCP tries to maintain in the pool. spring.emsdatasource.minimum-idle=1 # Maximum size of connection pool spring.emsdatasource.maximum-pool-size=48 # адрес сервиса ngw services.ngw.host=localhost # порт сервиса ngw services.ngw.port=8040 services.ngw.retries=1 # ограничение размера сообщения для NGW в байтах services.ngw.attachment.maxSize=10000000 services.report.allSessions.compress=true # имя базы данных services.mongo.database=jobs # адрес базы данных services.mongo.uri=mongodb://127.0.0.1:27017/jobs # адрес базы данных radius для Clickhouse(раскоментировать при переходе на Clickhouse) #spring.radiusdatasource.jdbcUrl=jdbc:clickhouse://localhost:8123/radius?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 # имя драйвера для Clickhouse(раскоментировать при переходе на Clickhouse) #spring.radiusdatasource.driverClassName=ru.yandex.clickhouse.ClickHouseDriver # адрес базы данных radius для MySQL(закоментировать при переходе на MySQL) spring.radiusdatasource.jdbcUrl=jdbc:mysql://localhost/radius?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 # имя драйвера для MySQL(закоментировать при переходе на MySQL) spring.radiusdatasource.driverClassName=com.mysql.cj.jdbc.Driver # логин для подключения к бд radius spring.radiusdatasource.username=javauser # пароль для подключения к бд radius spring.radiusdatasource.password=javapassword
Докеризация сервиса
Сервис может быть запущен в docker-контейнере. Для этого необходимо подготовить файл с переменными окружения .env и docker-compose.yml.
version: "3" services: eltex-jobs: container_name: eltex-jobs ports: # Проброс порта из контейнера на хост. На этот порт обращается Eltex-Bruce. - 9696:${SERVER_PORT} image: ${ELTEX_HUB}/eltex-jobs:${SWLC_VERSION} environment: # Порт на котором поднят сервис внутри контейнера. По-умолчанию 9696 - SERVER_PORT=${SERVER_PORT} - SPRING_BATCH_JOB_ENABLED=${SPRING_BATCH_JOB_ENABLED} - SPRING_DATASOURCE_JDBCURL=${SPRING_DATASOURCE_JDBCURL} - SPRING_DATASOURCE_DRIVERCLASSNAME=${SPRING_DATASOURCE_DRIVERCLASSNAME} - SPRING_DATASOURCE_USERNAME=${SPRING_DATASOURCE_USERNAME} - SPRING_DATASOURCE_PASSWORD=${SPRING_DATASOURCE_PASSWORD} - SPRING_DATASOURCE_MAXIMUMPOOLSIZE=${SPRING_DATASOURCE_MAXIMUMPOOLSIZE} - SPRING_H2_CONSOLE_ENABLED=${SPRING_H2_CONSOLE_ENABLED} # JDBC-адрес подключения до БД eltex_ems - SPRING_EMSDATASOURCE_JDBCURL=${SPRING_EMSDATASOURCE_JDBCURL} - SPRING_EMSDATASOURCE_DRIVERCLASSNAME=${SPRING_EMSDATASOURCE_DRIVERCLASSNAME} # Логин от БД eltex_ems - SPRING_EMSDATASOURCE_USERNAME=${SPRING_EMSDATASOURCE_USERNAME} # Пароль от БД eltex_ems - SPRING_EMSDATASOURCE_PASSWORD=${SPRING_EMSDATASOURCE_PASSWORD} - SPRING_EMSDATASOURCE_CONNECTIONTIMEOUT=${SPRING_EMSDATASOURCE_CONNECTIONTIMEOUT} - SPRING_EMSDATASOURCE_VALIDATIONTIMEOUT=${SPRING_EMSDATASOURCE_VALIDATIONTIMEOUT} - SPRING_EMSDATASOURCE_IDLETIMEOUT=${SPRING_EMSDATASOURCE_IDLETIMEOUT} - SPRING_EMSDATASOURCE_MINIMUMIDLE=${SPRING_EMSDATASOURCE_MINIMUMIDLE} - SPRING_EMSDATASOURCE_MAXIMUMPOOLSIZE=${SPRING_EMSDATASOURCE_MAXIMUMPOOLSIZE} # Адрес хоста NGW - SERVICES_NGW_HOST=${SERVICES_NGW_HOST} # Адрес порта NGW - SERVICES_NGW_PORT=${SERVICES_NGW_PORT} - SERVICES_NGW_RETRIES=${SERVICES_NGW_RETRIES} - SERVICES_NGW_ATTACHMENT_MAXSIZE=${SERVICES_NGW_ATTACHMENT_MAXSIZE} - SERVICES_REPORT_ALLSESSIONS_COMPRESS=${SERVICES_REPORT_ALLSESSIONS_COMPRESS} - SERVICES_MONGO_DATABASE=${SERVICES_MONGO_DATABASE} # Адрес подключения к MongoDB - SERVICES_MONGO_URI=${SERVICES_MONGO_URI} # JDBC-адрес подключения до БД radius - SPRING_RADIUSDATASOURCE_JDBCURL=${SPRING_RADIUSDATASOURCE_JDBCURL} - SPRING_RADIUSDATASOURCE_DRIVERCLASSNAME=${SPRING_RADIUSDATASOURCE_DRIVERCLASSNAME} # Логин от БД radius - SPRING_RADIUSDATASOURCE_USERNAME=${SPRING_RADIUSDATASOURCE_USERNAME} # Пароль от БД radius - SPRING_RADIUSDATASOURCE_PASSWORD=${SPRING_RADIUSDATASOURCE_PASSWORD} - GELF_LEVEL=${GELF_LEVEL} - GELF_HOST=${GELF_HOST} - GELF_PORT=${GELF_PORT} - JOBS_LOG_LEVEL=${JOBS_LOG_LEVEL} - JOBS_CONSOLE_LEVEL=${JOBS_CONSOLE_LEVEL} - TZ=${TZ}
ELTEX_HUB=hub.eltex-co.ru/softwlc SWLC_VERSION=1.21-<tag> SERVER_PORT=9696 SERVICES_MONGO_DATABASE=jobs SERVICES_MONGO_URI=mongodb://<ip_mongodb_server>:27017/jobs SERVICES_NGW_ATTACHMENT_MAXSIZE=10000000 SERVICES_NGW_HOST=<ip_ngw_service> SERVICES_NGW_PORT=8040 SERVICES_NGW_RETRIES=1 SERVICES_REPORT_ALLSESSIONS_COMPRESS=true SPRING_BATCH_JOB_ENABLED=false SPRING_DATASOURCE_DRIVERCLASSNAME=org.h2.Driver SPRING_DATASOURCE_JDBCURL=jdbc:h2:mem:testdb;DB_CLOSE_ON_EXIT=FALSE SPRING_DATASOURCE_MAXIMUMPOOLSIZE=200 SPRING_DATASOURCE_PASSWORD= SPRING_DATASOURCE_USERNAME=sa SPRING_H2_CONSOLE_ENABLED=true # Настройка подключения к БД eltex_ems SPRING_EMSDATASOURCE_CONNECTIONTIMEOUT=15000 SPRING_EMSDATASOURCE_DRIVERCLASSNAME=com.mysql.cj.jdbc.Driver SPRING_EMSDATASOURCE_IDLETIMEOUT=30000 SPRING_EMSDATASOURCE_JDBCURL=jdbc:mysql://<ip_mysql_server>/eltex_ems?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 SPRING_EMSDATASOURCE_MAXIMUMPOOLSIZE=48 SPRING_EMSDATASOURCE_MINIMUMIDLE=1 SPRING_EMSDATASOURCE_PASSWORD=javapassword SPRING_EMSDATASOURCE_USERNAME=javauser SPRING_EMSDATASOURCE_VALIDATIONTIMEOUT=3000 # Настройка подключения к БД radius SPRING_RADIUSDATASOURCE_DRIVERCLASSNAME=com.mysql.cj.jdbc.Driver SPRING_RADIUSDATASOURCE_JDBCURL=jdbc:mysql://<ip_mysql_server>/radius?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 SPRING_RADIUSDATASOURCE_PASSWORD=javapassword SPRING_RADIUSDATASOURCE_USERNAME=javauser # Настройка перенаправления логов в Graylog GELF_HOST=udp:<ip_graylog_server> GELF_PORT=12201 GELF_LEVEL=OFF # Настройка логгирования JOBS_CONSOLE_LEVEL=INFO JOBS_LOG_LEVEL=INFO #Настройка часового пояса TZ=Asia/Novosibirsk
Вместо <tag> необходимо указать актуальную версию, которую можно посмотреть по ссылке.
Вместо <ip_mongodb_server> необходимо указать ip-адрес сервера MongoDB.
Вместо <ip_ngw_service> необходимо указать ip-адрес сервиса NGW.
Вместо <ip_mysql_server> необходимо указать ip-адрес сервера MySQL.
Вместо <ip_graylog_server> необходимо указать ip-адрес сервера Graylog.
Описание переменных (environment)
SERVER_PORT - порт, на котором сервис будет работать внутри контейнера;
ELTEX_HUB - URL репозитория Элтекс;
SWLC_VERSION - версия образа;
Подключение к БД jobs (MongoDB)
SERVICES_MONGO_URI - URI для подключения к БД;
Подключение к сервису NGW
SERVICES_NGW_HOST - ip-адрес сервиса NGW;
SERVICES_NGW_PORT - порт, на котором работает сервис NGW;
Подключение к БД eltex_ems (MySQL)
SPRING_EMSDATASOURCE_JDBCURL - jdbc-адрес подключения к БД eltex_ems;
SPRING_EMSDATASOURCE_USERNAME - Логин подключения к БД;
SPRING_EMSDATASOURCE_PASSWORD - Пароль подключения к БД;
Подключение к БД radius (MySQL)
SPRING_RADIUSDATASOURCE_JDBCURL - jdbc-адрес для подключения к БД radius;
SPRING_RADIUSDATASOURCE_USERNAME - Логин подключения к БД;
SPRING_RADIUSDATASOURCE_PASSWORD - Пароль подключения к БД;
Параметры логгирования
JOBS_CONSOLE_LOG_LEVEL - уровень логгирования сервиса в консоль;
JOBS_LOG_LEVEL - уровень логгирования сервиса;
Настройка перенаправления логов на сервер Graylog
GELF_LEVEL - уровень логов, перенаправляемых в Graylog;
GELF_HOST - адрес хоста Graylog;
GELF_PORT - порт хоста Graylog.
Настройка часового пояса
- TZ - часовой пояс в формате Asia/Novosibirsk (список существующих можно посмотреть командой timedatectl list-timezones).
Файлы .env и docker-compose.yml должны находиться в одной папке. Контейнер запускается командой:
docker-compose up -d