...
Eltex-Bob - RESTful API сервис, предназначенный для выгрузки информации о ТД в формате JSON в систему мониторинга. По умолчанию, к сервису можно обратиться по порту 9190, выполнив GET-запрос.
Для получения информации о количестве и состоянии устройств, сервису eltex-bob требуется доступ до БД MYSQL.
Для защиты от DDoS, сервис имеет собственный кешкэш, который позволяет не нагружать БД, список ТД сервис запрашивает раз в 1 час. Информация о доступности устройств, обновляется раз в минуту.. Кэш сервиса обновляется с периодом, регулируемым с помощью крон-выражения в конфигурационном файле сервиса, либо в файле .env при работе сервиса в докер-контейнере. По умолчанию eltex-bob обновляет кэш один раз в 10 минут.
За обновление информации в БД, необходимой для работы eltex-bob отвечает сервис eltex-ems. Сервис eltex-ems обладает собственным кэшем, в котором хранится информация об устройствах. Регулирование периода опроса устройств для актуализации информации в кэше осуществляется параметром «Период опроса устройства (ICMP/SNMP)» в меню «Администрирование – Настройка сервера – Системные модули - system». Уменьшением значения данного параметра можно добиться более частого обновления информации об устройствах в кэше сервиса. Обновление информации в БД по кэшу eltex-ems происходит с периодом 1 минута.
Доступные методы API:
- http://<<ip_address>>:<<port>>/GetAPList Список ТД в формате JSON
- http://<<ip_address>>:<<port>>/GetAPDetail/{MAC_ADDRESS} - Детализация информации по ТД
- http://<<ip_address>>:<<port>>/GetAPAvailable/{MAC_ADDRESS} - Доступность ТД
- http://<<ip_address>>:<<port>>/GetAPPerformance/{MAC_ADDRESS} - Метрики по ТД
...
Блок кода | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
# The Datasource Mysql properties
spring.application.name=bob
spring.datasource.url=jdbc:mysql://10.62.18.35:3306/eltex_ems?useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
spring.datasource.username=javauser
spring.datasource.password=javapassword
spring.datasource.hikari.maximum-pool-size=10
# Common properties
#domain_search.mask=[a-zA-Z0-9.-_]*.ap.root
domain_search.mask=[a-zA-Z0-9.-_]*.ap.root
domain_search.regex=^root/Ap/(.*)$
domain_search.replacement=$1
vsp_search.regex=/(\\d{2,}[-_]\\d{2,})[^/]*$
mac.splitter=:
auth.enabled=false
auth.username=user
auth.password=password
excel.config.file=/etc/eltex-bob/excel_config.yaml
server.port=9190
server.cron=0 */10 * ? * * |
- Подключение к БД:
Без форматирования |
---|
spring.datasource.url=jdbc:mysql://localhost:3306/eltex_ems?useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC spring.datasource.username=javauser spring.datasource.password=javapassword |
...
Без форматирования |
---|
excel.config.file=/etc/eltex-bob/excel_config.yaml |
- Порт, который слушает сервиссервиc
Без форматирования |
---|
server.port=9190 |
- Крон выражение, определяющее период обновления кэша:
Без форматирования |
---|
server.cron=0 */10 * ? * * |
Следует отменить, что приведенный конфигурационный файл предназначен для доменов вида Ap.root. Если используется только root, то регулярные выражения нужно изменить следующим образом:
...
Блок кода | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
# AP Monitoring service # Initial size of Java heap JAVA_INIT_HEAP=128m # Maximum size of Java heap JAVA_MAX_HEAP=256m # Additional arguments to pass to java JAVA_OPTS="-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/eltex-bob" |
Параметры | Описание |
---|---|
JAVA_INIT_HEAP | Количество памяти, выделяемое на работу сервиса при старте. Рекомендуется выставлять равное JAVA_MAX_HEAP. |
JAVA_MAX_HEAP | Максимальное количество памяти, которое может зарезервировать сервис |
JAVA_OPTS | Дополнительные опции для запуска jvm |
/etc/eltex-bob/log4j2.xml
...
Блок кода | ||||
---|---|---|---|---|
| ||||
version: "3" services: bob: image: hub.eltex-co.ru/softwlc/eltex-bob:1.18-479 network_mode: host ports: - 9190:9190${BOB_PORT} volumes: - "/etc/eltex-bob/excel_config.yaml:/etc/eltex-bob/excel_config.yaml" - "/etc/eltex-bob/log4j2.xml:/etc/eltex-bob/log4j2-docker.xml" - "/etc/eltex-bob/application.properties:/etc/eltex-bob/application.properties" - "/var/log/eltex-bob:/var/log/eltex-bob" environment: - server.port=${BOB_PORT} - server.cron=${BOB_CRON} - spring.datasource.url=${BOB_DB_URL} - spring.datasource.username=${BOB_DB_USERNAME} - spring.datasource.password=${BOB_DB_PASSWORD} - domain_search.mask=${BOB_DOMAIN_SEARCH_MASK} - domain_search.regex=${BOB_DOMAIN_SEARCH_REGEX} - vsp_search.regex=${BOB_VSP_SEARCH_REGEX} |
...
Блок кода | ||||
---|---|---|---|---|
| ||||
# common bob params
BOB_DB_URL=jdbc:mysql://<IP-address>:3306/eltex_ems?useSSL=false&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC
BOB_DB_USERNAME=javauser
BOB_DB_PASSWORD=javapassword
BOB_DB_HIKARI_MAXIMUM_POOL_SIZE=20
BOB_DOMAIN_SEARCH_MASK=[a-zA-Z0-9\\._-]*\\.Ap\\.root
BOB_DOMAIN_SEARCH_REGEX=^root/Ap/(.*)$
BOB_VSP_SEARCH_REGEX=/(\\d{2,}[-_]\\d{2,})[^/]*$
BOB_PORT=9190
BOB_CRON=0 */10 * ? * * |
Файлы .env и doclerdocker-compose.yml должны находиться в одной папке. Контейнер запускается командой:
...
- BOB_PORT - порт, на котором сервис будет работать внутри контейнера;
BOB_CRON- крон выражение, отвечающее за период обновления данных в памяти сервиса. Задается в формате крон выражений spring.
Формат отличается от UNIX формата тем, что содержит 6 символов, где первый символ отвечает за секунды.
Подключение к БД (MySQL)
- BOB_DB_URL - URL для подключекния к БД MySQL;
- BOB_DB_USERNAME - Логин подключения к БД;
- BOB_DB_PASSWORD - Пароль подключения к БД;
...