Описание
Сервис eltex-jobs выполняет формирование задачи с необходимыми параметрами и отправку отчета пользователю по команде от сервиса bruce. Параметры задачи хранятся в базе данных MariaDB.
Установка
Сервис устанавливается с помощью пакетного менеджера командой
apt install eltex-jobs
Настройка
Конфигурационный файл для настройки доступен по пути /etc/eltex-jobs/application.properties
# порт используемый сервисом server.port=9696 spring.batch.job.enabled=false spring.flyway.enabled=true # URL для подключения к mariadb spring.flyway.url=jdbc:mysql://localhost:3306/eltex_jobs #Логин и пароль для подключения spring.flyway.user=javauser spring.flyway.password=javapassword 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.datasource.poolName=h2-pool spring.h2.console.enabled=false # адрес базы данных ems и имя драйвера spring.jobsdatasource.jdbcUrl=jdbc:mysql://127.0.0.1/eltex_jobs?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 spring.jobsdatasource.driverClassName=com.mysql.cj.jdbc.Driver # логин и пароль для подключения к бд ems spring.jobsdatasource.poolName=jobs-pool spring.jobsdatasource.username=javauser spring.jobsdatasource.password=javapassword spring.emsdatasource.jdbcUrl=jdbc:mysql://127.0.0.1/eltex_ems?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000&useSSL=false spring.emsdatasource.driverClassName=com.mysql.cj.jdbc.Driver spring.emsdatasource.username=javauser 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 spring.emsdatasource.poolName=ems-pool # адрес сервиса 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 # адрес базы данных 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 management.health.defaults.enabled=true management.endpoints.web.exposure.include=health, beans, prometheus, env, threaddump, heapdump, metrics, httptrace management.endpoint.health.enabled=true
Докеризация сервиса
Сервис может быть запущен в 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} # Параметры миграции БД - SPRING_FLYWAY_ENABLED=${SPRING_FLYWAY_ENABLED} - SPRING_FLYWAY_URL=${SPRING_FLYWAY_URL} - SPRING_FLYWAY_USER=${SPRING_FLYWAY_USER} - SPRING_FLYWAY_PASSWORD=${SPRING_FLYWAY_PASSWORD} # Подключение к БД - SPRING_JOBSDATASOURCE_JDBCURL=${SPRING_JOBSDATASOURCE_JDBCURL} - SPRING_JOBSDATASOURCE_DRIVERCLASSNAME=${SPRING_JOBSDATASOURCE_DRIVERCLASSNAME} - SPRING_JOBSDATASOURCE_POOLNAME=${SPRING_JOBSDATASOURCE_POOLNAME} - SPRING_JOBSDATASOURCE_USERNAME=${SPRING_JOBSDATASOURCE_USERNAME} - SPRING_JOBSDATASOURCE_PASSWORD=${SPRING_JOBSDATASOURCE_PASSWORD} # 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} # 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 # Common version number SWLC_VERSION=1.30-<tag> SERVER_PORT=9696 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 # Настройки подключения к БД eltex_jobs для Flyway SPRING_FLYWAY_ENABLED=true SPRING_FLYWAY_URL=jdbc:mysql://<ip_mysql_server>/eltex_jobs SPRING_FLYWAY_USER=javauser SPRING_FLYWAY_PASSWORD=javapassword 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 # Настройка подключения к БД eltex_jobs SPRING_JOBSDATASOURCE_JDBCURL=jdbc:mysql://<ip_mysql_server>/eltex_jobs?zeroDateTimeBehavior=convertToNull&useUnicode=true&characterEncoding=utf8&relaxAutoCommit=true&connectTimeout=5000 SPRING_JOBSDATASOURCE_DRIVERCLASSNAME=com.mysql.cj.jdbc.Driver SPRING_JOBSDATASOURCE_POOLNAME=jobs-pool SPRING_JOBSDATASOURCE_USERNAME=javauser SPRING_JOBSDATASOURCE_PASSWORD=javapassword # Настройка подключения к БД 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 SPRING_H2_CONSOLE_ENABLED=true # Настройка подключения к БД 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_ngw_service> необходимо указать ip-адрес сервиса NGW.
Вместо <ip_mysql_server> необходимо указать ip-адрес сервера MariaDB.
Вместо <ip_graylog_server> необходимо указать ip-адрес сервера Graylog (либо указать localhost, если не планируется использовать отправку логов)
Описание переменных (environment)
SERVER_PORT - порт, на котором сервис будет работать внутри контейнера;
ELTEX_HUB - URL репозитория Элтекс;
SWLC_VERSION - версия образа;
Подключение к сервису NGW
SERVICES_NGW_HOST - ip-адрес сервиса NGW;
SERVICES_NGW_PORT - порт, на котором работает сервис NGW;
Подключение к БД eltex_jobs для миграции данных (MariaDB)
- SPRING_FLYWAY_ENABLED - Нужно ли выполнить миграцию данных;
- SPRING_FLYWAY_URL - jdbc-адрес для подключения к БД radius;
- SPRING_FLYWAY_USER - Логин подключения к БД;
- SPRING_FLYWAY_PASSWORD - Пароль подключения к БД;
Подключение к БД eltex_jobs (MariaDB)
- SPRING_RADIUSDATASOURCE_JDBCURL - jdbc-адрес для подключения к БД radius;
- SPRING_JOBSDATASOURCE_USERNAME - Логин подключения к БД;
- SPRING_JOBSDATASOURCE_PASSWORD - Пароль подключения к БД;
Подключение к БД eltex_ems (MariaDB)
SPRING_JOBSDATASOURCE_JDBCURL - jdbc-адрес подключения к БД eltex_jobs;
SPRING_EMSDATASOURCE_USERNAME - Логин подключения к БД;
SPRING_EMSDATASOURCE_PASSWORD - Пароль подключения к БД;
Подключение к БД radius (MariaDB)
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
Метрики сервиса
Метрики сервиса доступны по адресу:
http://<IP-адрес eltex-jobs>:9696/actuator/prometheus
Пример настройки подключения Prometheus:
- job_name: 'jobs' metrics_path: '/actuator/prometheus' scrape_interval: 5s static_configs: - targets: [ '<IP-адрес eltex-jobs>:9696' ]