С версии SoftWLC 1.27 БД сервиса eltex-bruce перенесена в СУБД MariaDB. Если выполняется обновление с предыдущих версий SoftWLC необходимо выполнить миграцию данных БД.
Описание
Сервис eltex-bruce выполняет роль менеджера задач для сервиса eltex-jobs - формирует задачи и отслеживает статус их выполнения. Параметры задач хранятся в базе данных MariaDB
Установка
Сервис устанавливается с помощью пакетного менеджера командой
apt install eltex-bruce
Настройка
Конфигурационный файл для настройки доступен по пути /etc/eltex-bruce/application.properties
# порт используемый сервисом server.port=8008 # ip-адрес сервиса eltex-jobs server.address.jobs=http://localhost:9696 # название базы данных и данные подключения, в которой ELTEX-BRUCE будет хранить данные spring.datasource.url=jdbc:mysql://localhost:3306/eltex_bruce spring.datasource.username=javauser spring.datasource.password=javapassword spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver spring.flyway.url=${spring.datasource.url} spring.flyway.user=${spring.datasource.username} spring.flyway.password=${spring.datasource.password} #Quartz spring.quartz.job-store-type=jdbc spring.quartz.properties.quartz.jdbc.initialize-schema=never spring.quartz.properties.org.quartz.scheduler.instanceName=jobs-quartz spring.quartz.properties.org.quartz.scheduler.instanceId=AUTO spring.quartz.properties.org.quartz.jobStore.class = org.quartz.impl.jdbcjobstore.JobStoreTX spring.quartz.properties.org.quartz.jobStore.driverDelegateClass=org.quartz.impl.jdbcjobstore.StdJDBCDelegate spring.quartz.properties.org.quartz.jobStore.useProperties=false spring.quartz.properties.org.quartz.jobStore.tablePrefix=QRTZ_ spring.quartz.properties.org.quartz.jobStore.clusterCheckinInterval=20000 spring.quartz.properties.org.quartz.jobStore.misfireThreshold=12000000000 spring.quartz.properties.org.quartz.jobStore.isClustered=false spring.quartz.properties.org.quartz.jobStore.dataSource=quartzDataSource spring.quartz.properties.org.quartz.dataSource.quartzDataSource.provider=hikaricp spring.quartz.properties.org.quartz.dataSource.quartzDataSource.driver=${spring.datasource.driver-class-name} spring.quartz.properties.org.quartz.dataSource.quartzDataSource.URL=${spring.datasource.url} spring.quartz.properties.org.quartz.dataSource.quartzDataSource.user=${spring.datasource.username} spring.quartz.properties.org.quartz.dataSource.quartzDataSource.password=${spring.datasource.password} spring.quartz.properties.org.quartz.threadPool.class=org.quartz.simpl.SimpleThreadPool spring.quartz.properties.org.quartz.threadPool.threadCount=10 spring.quartz.properties.org.quartz.threadPool.threadPriority=5 management.health.defaults.enabled=true management.endpoints.web.exposure.include=health, beans, prometheus, env, threaddump, heapdump, metrics, httptrace management.endpoint.health.enabled=true
Файл настройки инициализации сервиса /etc/default/eltex-bruce
# Scheduling service # HTTP Port for use by Eltex Bruce -- порт, использующийся сервисом PORT=8008 # Initial size of Java heap -- выделение оперативной памяти для инициализации JAVA_INIT_HEAP=32m # Maximum size of Java heap -- ограничение потребления оперативной памяти для java-приложения JAVA_MAX_HEAP=256m # Additional arguments to pass to java -- Дополнительные аргументы для запуска java-приложения JAVA_OPTS="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/eltex-bruce
Управление сервисом
Действие | Команда | Ответ |
---|---|---|
Проверка состояния | service eltex-bruce status | Сервис запущен: Active: active (running) Cервис не запущен: Active: failed |
Запуск сервиса | service eltex-bruce start | Сервис успешно запущен: Active: active (running) |
Остановка сервиса | service eltex-bruce stop | Сервис успешно остановлен: Active: failed |
Перезапуск сервиса | service eltex-bruce restart | Сервис успешно перезапущен: Active: active (running) |
Мониторинг
Метрики сервиса доступны по ссылке:
http://<IP-адрес сервиса>:8008/actuator/prometheus
Пример настройки подключения Prometheus:
scrape_configs: - job_name: 'bruce' metrics_path: '/actuator/prometheus' scrape_interval: 5s static_configs: - targets: ['<IP-адрес сервиса>:8008']
Докеризация сервиса
Сервис может быть запущен в docker-контейнере. Для этого необходимо подготовить файл с переменными окружения .env и docker-compose.yml.
version: "3" services: eltex-bruce: ports: - "8008:${SERVER_PORT}" container_name: eltex-bruce image: ${ELTEX_HUB}/eltex-bruce:${SWLC_VERSION} environment: - TZ=${TZ} # Настроить порт внутри контейнера. По-умолчанию 8008 - SERVER_PORT=${SERVER_PORT} # Настроить адрес сервиса Jobs. Можно также объединить в один compose и создать одну сеть для сервисов. - SERVER_ADDRESS_JOBS=${SERVER_ADDRESS_JOBS} - SPRING_QUARTZ_JOBSTORETYPE=${SPRING_QUARTZ_JOBSTORETYPE} # Настроить адрес Mysql. - SPRING_DATASOURCE_URL=${SPRING_DATASOURCE_URL} - SPRING_DATASOURCE_USERNAME=${SPRING_DATASOURCE_USERNAME} - SPRING_DATASOURCE_PASSWORD=${SPRING_DATASOURCE_PASSWORD} - SPRING_DATASOURCE_DRIVERCLASSNAME=${SPRING_DATASOURCE_DRIVERCLASSNAME} # Настроить flyway. - SPRING_FLYWAY_URL=${SPRING_FLYWAY_URL} - SPRING_FLYWAY_USER=${SPRING_FLYWAY_USER} - SPRING_FLYWAY_PASSWORD=${SPRING_FLYWAY_PASSWORD} # Настроить Quartz - SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_SCHEDULER_INSTANCENAME=${SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_SCHEDULER_INSTANCENAME} - SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_SCHEDULER_INSTANCEID=${SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_SCHEDULER_INSTANCEID} - SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_CLASS=${SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_CLASS} - SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_DRIVERDELEGATECLASS=${SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_DRIVERDELEGATECLASS} - SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_USEPROPERTIES=${SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_USEPROPERTIES} - SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_TABLEPREFIX=${SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_TABLEPREFIX} - SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_CLUSTERCHECKININTERVAL=${SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_CLUSTERCHECKININTERVAL} - SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_MISFIRETHRESHOLD=${SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_MISFIRETHRESHOLD} - SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_ISCLUSTERED=${SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_ISCLUSTERED} - SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_DATASOURCE=${SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_DATASOURCE} - SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_DATASOURCE_QUARTZDATASOURCE_PROVIDER=${SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_DATASOURCE_QUARTZDATASOURCE_PROVIDER} - SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_DATASOURCE_QUARTZDATASOURCE_DRIVER=${SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_DATASOURCE_QUARTZDATASOURCE_DRIVER} - SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_DATASOURCE_QUARTZDATASOURCE_URL=${SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_DATASOURCE_QUARTZDATASOURCE_URL} - SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_DATASOURCE_QUARTZDATASOURCE_USER=${SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_DATASOURCE_QUARTZDATASOURCE_USER} - SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_DATASOURCE_QUARTZDATASOURCE_PASSWORD=${SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_DATASOURCE_QUARTZDATASOURCE_PASSWORD} - SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_THREADPOOL_CLASS=${SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_THREADPOOL_CLASS} - SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_THREADPOOL_THREADCOUNT=${SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_THREADPOOL_THREADCOUNT} - SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_THREADPOOL_THREADPRIORITY=${SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_THREADPOOL_THREADPRIORITY} # Настройка логгирования - BRUCE_LOG_LEVEL=${BRUCE_LOG_LEVEL} - BRUCE_CONSOLE_LEVEL=${BRUCE_CONSOLE_LEVEL} # Настройка перенаправления логов в Graylog - GELF_HOST=${GELF_HOST} - GELF_PORT=${GELF_PORT} - GELF_LEVEL=${GELF_PORT}
ELTEX_HUB=hub.eltex-co.ru/softwlc SWLC_VERSION=<Версия SoftWLC> SERVER_PORT=8008 SERVER_ADDRESS_JOBS=http://<ip-адрес сервиса eltex-jobs>:9696 SPRING_DATASOURCE_URL=jdbc:mysql://<ip-адрес БД MariaDB:3306>/eltex_bruce SPRING_DATASOURCE_USERNAME=javauser SPRING_DATASOURCE_PASSWORD=javapassword SPRING_DATASOURCE_DRIVERCLASSNAME=com.mysql.cj.jdbc.Driver SPRING_FLYWAY_URL=jdbc:mysql://<ip-адрес БД MariaDB:3306>/eltex_bruce SPRING_FLYWAY_USER=javauser SPRING_FLYWAY_PASSWORD=javapassword SPRING_QUARTZ_JOBSTORETYPE=jdbc SPRING_QUARTZ_PROPERTIES_QUARTZ_JDBC_INITIALIZESCHEMA=never SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_SCHEDULER_INSTANCENAME=jobs-quartz SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_SCHEDULER_INSTANCEID=AUTO SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_CLASS=org.quartz.impl.jdbcjobstore.JobStoreTX SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_DRIVERDELEGATECLASS=org.quartz.impl.jdbcjobstore.StdJDBCDelegate SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_USEPROPERTIES=false SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_TABLEPREFIX=QRTZ_ SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_CLUSTERCHECKININTERVAL=20000 SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_MISFIRETHRESHOLD=12000000000 SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_ISCLUSTERED=false SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_DATASOURCE=quartzDataSource SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_DATASOURCE_QUARTZDATASOURCE_PROVIDER=hikaricp SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_DATASOURCE_QUARTZDATASOURCE_DRIVER=com.mysql.cj.jdbc.Driver SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_DATASOURCE_QUARTZDATASOURCE_URL=jdbc:mysql://<ip-адрес БД MariaDB:3306>/eltex_bruce SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_DATASOURCE_QUARTZDATASOURCE_USER=javauser SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_DATASOURCE_QUARTZDATASOURCE_PASSWORD=javapassword SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_THREADPOOL_CLASS=org.quartz.simpl.SimpleThreadPool SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_THREADPOOL_THREADCOUNT=10 SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_THREADPOOL_THREADPRIORITY=5 # Настройка логгирования BRUCE_LOG_LEVEL=INFO BRUCE_CONSOLE_LEVEL=INFO # Настройка перенаправления логов в Graylog GELF_HOST=udp:<ip-адрес graylog сервера> GELF_PORT=12201 GELF_LEVEL=INFO #Настройка часового пояса TZ=Asia/Novosibirsk
Вместо<Версия SoftWLC> необходимо указать актуальную версию (например 1.27), которую можно посмотреть по ссылке.
Вместо <ip-адрес сервиса eltex-jobs> необходимо указать ip-адрес сервиса eltex-jobs.
Вместо <ip-адрес БД MariaDB:3306> необходимо указать ip-адрес сервера MariaDB.
Вместо <ip-адрес graylog сервера> необходимо указать ip-адрес сервера Graylog. Если использовать отправку логов на сторой сервер не планируется - можно указать "localhost" и отключить отправку логов настройкой параметра "GELF_LEVEL=OFF".
Описание переменных (environment)
Подключение к репозиторию Элтекс
- ELTEX_HUB - URL репозитория Элтекс;
- SWLC_VERSION - версия образа;
Запуск сервиса
- SERVER_PORT - порт, на котором сервис будет работать внутри контейнера;
Подключение к сервису Jobs
SERVER_ADDRESS_JOBS - URL для подключения к сервису Jobs;
Подключение к БД (MariaDB)
SPRING_DATASOURCE_URL - URI для подключения к БД MariaDB;
- SPRING_DATASOURCE_USERNAME - имя пользователя для подключения к БД MariaDB;
- SPRING_DATASOURCE_PASSWORD - пароль пользователя для подключения к БД MariaDB;
- SPRING_DATASOURCE_DRIVERCLASSNAME - тип для подключения к БД MariaDB;
Подключение к БД (MariaDB) для flyway
- SPRING_FLYWAY_URL - URI для подключения к БД MariaDB;
- SPRING_FLYWAY_USER - имя пользователя для подключения к БД MariaDB;
- SPRING_FLYWAY_PASSWORD - пароль пользователя для подключения к БД MariaDB;
Параметры quartz
- SPRING_QUARTZ_JOBSTORETYPE - тип хранения данных;
- SPRING_QUARTZ_PROPERTIES_QUARTZ_JDBC_INITIALIZESCHEMA - схема инициализации;
- SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_SCHEDULER_INSTANCENAME - имя инстанса;
- SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_SCHEDULER_INSTANCEID - id инстанса;
- SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_CLASS - класс;
- SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_DRIVERDELEGATECLASS - класс драйвера;
- SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_USEPROPERTIES - свойства;
- SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_TABLEPREFIX - префикс;
- SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_CLUSTERCHECKININTERVAL - интервал проверки соседей кластера (мс);
- SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_MISFIRETHRESHOLD - интервал планировщика в течении которого он может пропустить задачу (мс);
- SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_ISCLUSTERED - использовать режим кластера;
- SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_JOBSTORE_DATASOURCE - источник данных;
- SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_DATASOURCE_QUARTZDATASOURCE_PROVIDER - провайдер подключения к БД;
- SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_DATASOURCE_QUARTZDATASOURCE_DRIVER - драйвер подключения к БД;
- SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_DATASOURCE_QUARTZDATASOURCE_URL - URI для подключения к БД MariaDB;
- SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_DATASOURCE_QUARTZDATASOURCE_USER - имя пользователя для подключения к БД MariaDB;
- SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_DATASOURCE_QUARTZDATASOURCE_PASSWORD - пароль пользователя для подключения к БД MariaDB;
- SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_THREADPOOL_CLASS - имя пула потоков;
- SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_THREADPOOL_THREADCOUNT - количество потоков;
- SPRING_QUARTZ_PROPERTIES_ORG_QUARTZ_THREADPOOL_THREADPRIORITY - приоритет потоков;
Параметры логирования
- BRUCE_LOG_LEVEL - уровень логирования сервиса;
- BRUCE_CONSOLE_LOG_LEVEL - уровень логирования сервиса в консоль;
Настройка перенаправления логов на сервер Graylog
GELF_HOST - адрес хоста Graylog;
GELF_PORT - порт хоста Graylog;
- GELF_LEVEL - уровень логов, перенаправляемых в Graylog.
Настройка часового пояса
- TZ - часовой пояс в формате Asia/Novosibirsk (список существующих можно посмотреть командой timedatectl list-timezones)
Файлы .env и docker-compose.yml должны находиться в одной папке. Контейнер запускается командой:
docker-compose up -d