Описание сервиса
Eltex-Bob - высоконагруженный RESTful API сервис, предназначенный для выгрузки информации о ТД в формате JSON в систему мониторинга. По умолчанию к сервису можно обратиться по порту 9190, выполнив GET запрос.
Для получения информации о количестве и состоянии устройств, требуется доступ до БД MYSQL.
Для защиты от DDoS, сервис имеет собственный кеш, который позволяет не нагружать БД, список ТД сервис запрашивает раз в 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} - Метрики по ТД
GetAPList Предоставляет список ТД в формате JSON, который содержит:
APHOSTNAME - mac адрес устройства
APVISIBLENAME - название устройства
APGROUP - домен , в котором располагается устройство
Пример :
{ "data": [ { "{#APHOSTNAME}": "a8:f9:4b:b4:99:60", "{#APVISIBLENAME}": "WEP-12ac", "{#APGROUP}": "root/WIFI/AP_GRE" }, ] }
GetAPDetail Детализация информации по ТД , которая содержит :
"ip" - ip адрес устройства
"office" - значение для найденного ВСП из справочника
"city" - значение для найденного ВСП из справочник
"firmware-version" - версия ПО
"serial-number" - серийный номер устройства
"vsp" - значение для найденного ВСП из справочник
"full-address" - значение для найденного ВСП из справочник
Пример:
{ "ip": "192.168.6.18", "office": "Доп.офис №8615-0181", "city": "г.Березовский", "firmware-version": "1.16.0.163", "serial-number": "WP01000177", "vsp": "8615-0181" "full-address": ""652420, г.Березовский, проспект Шахтеров, д.7, литер А"" }
GetAPAvailable Доступность ТД, которая содержит:
"available" доступность ТД, где 0 - ТД доступна, 1 - ТД недоступна
"uptime" - время доступности ТД, в секундах
Пример:
{ "available": 0, "uptime": 67370 }
GetAPPerformance Метрики ТД, которые содержат:
"wifi_users" - количество подключенных пользователей
Пример:
{ "wifi_users": "5" }
Для авторизации в сервисе доступно 2 способа:
- http-basic авторизация , включается в настройках сервиса
- ACL список в настройках конфигурации nginx, включается в конфигурационном файле nginx
Настройки
Для ограничения доступа к сервису по ip адресу, можно выполнить настройку nginx сервера с помощью ACL. Access Control List добавляется в конфигурационный файл nginx, пример :
где deny - ip address с которого запрещен доступ
allow - ip address с которого разрешен доступ
в примере, доступ с IP адреса 192.168.1.3 и 127.0.0.1 разрешен, остальным запрещен.
location /api { allow 192.168.1.3/24; allow 127.0.0.1; deny all; }
Также, если используется nginx для доступа к сервису bob, то следует настроить проксирование
server { listen 80; server_name bob; location /api/ { proxy_pass http://localhost:9190/; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Real-IP $remote_addr; proxy_redirect default; } }
Настройки сервиса:
Основной конфигурационный файл находится по адресу /etc/eltex-bob/application.properties:
# The Datasource Mysql properties spring.application.name=bob spring.datasource.url= - адрес сервера с базой mysql от EMS spring.datasource.username=javauser spring.datasource.password=javapassword # Common properties #domain_search.mask=% domain_search.mask=%.ap.root - домен, в по которому будет производиться выгрузка. Включает в себя дочерние домены domain_search.regex=^root/Ap/(.*)$ domain_search.replacement=$1 auth.enabled=true Включение авторизации по логин-паролю, false - выключено auth.username=eltex логин, для авторизации на сервисе bob auth.password=eltexeltex - пароль для авторизации сервисе bob server.port=9190 порт, который слушает сервис
По умолчанию, сервис использует 10 коннектов до БД, при необходимости можно увеличить, добавив в конфигурационный файл spring.datasource.hikari.maximum-pool-size=20, где 20 число коннектов.
Файл инициализации сервиса располагается по адресу: /etc/default/eltex-bob .