Описание сервиса
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 - сформированное по справочнику место расположение ТД;
APRTCGROUP - домен , в котором располагается устройство (за исключением скрываемой части - domain_search.regex, см. Настройки сервиса);
FULLADDRESS - графа из справочника с адресом рассположение ТД.
Пример :
{ "data": [ { "{#APHOSTNAME}": "a8:f9:4b:b4:99:60", "{#APVISIBLENAME}": "WEP-12ac", "{#APGROUP}": "Байкальский банк/Саха (Якутия)/Доп.офис №178-758", "{#APRTCGROUP}": "Dalniy_Vostok/Habarovskiy_filial/Evreyskaya_AO/Obluche/Sberbank/4157-081_Kuznechnaya_11a", "{#FULLADDRESS}": "678100, г.Олекминск, ул.Молодежная, 20741" }, ] }
GetAPDetail Детализация информации по ТД , которая содержит :
"ip" - ip адрес устройства
"office" - значение для найденного ВСП из справочника
"city" - значение для найденного ВСП из справочник
"firmware-version" - версия ПО
"serial-number" - серийный номер устройства
"vsp" - значение для найденного ВСП из справочник
"full-address" - значение для найденного ВСП из справочник
Пример:
{ "ip": "192.168.6.18", "office": "Доп.офис №178-758", "city": "г.Березовский", "firmware-version": "1.16.0.163", "serial-number": "WP01000177", "vsp": "4157-081" "full-address": "678100, г.Олекминск, ул.Молодежная, 20741" }
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 #Адрес сервера с базой mysql от EMS 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 # Common properties #domain_search.mask=% domain_search.mask=%.ap.root - домен, в по которому будет производиться выгрузка. Включает в себя дочерние домены domain_search.regex=^root/Ap/(.*)$ - часть домена которая будет скрыта при выводе результата domain_search.replacement=$1 mac.splitter=: - разделители октетов в мак-адресе (по умолчанию ":") auth.enabled=true - включение авторизации по логин-паролю, false - выключено auth.username=eltex - логин, для авторизации на сервисе bob auth.password=eltexeltex - пароль для авторизации сервисе bob excel.config.file=/etc/eltex-bob/excel_config.yaml - конфигурационный файл для работы со справочником ВСП. server.port=9190 - порт, который слушает сервис
Конфигурационный файл для работы со сравочником - /etc/eltex-bob/excel_config.yam:
vspSheetName: В конкурс - имя страницы для анализа vspExcelFile: /home/vagrant/list2.xlsx - путь до файла type: TITLE - параметр определяет режим работы с таблицей. TITLE - поиск колонок будет происходить по их заголовкам, NUMBER - поиск колонок будет происходить по их порядковому номеру 0,1,... columns: vsp: Номер ВСП - в этой колонке происходит поиск ячейки с номером ВСП совпадающим со значением ВСП из домена, например в домене .../Sberbank/4157-081_Kuznechnaya_11a..., это "4157-081" bank: Территориальный банк \ region: Субъект РФ - ячейки этих столбцов будут использованы для составления APGROUP office: Наименование подразделения / address: Фактитческий адрес Объекта - значение этого поля из этой колонки попадает в FULLADDRESS в выводе GetAPList ## Пример конфигурации по номерам колонок #vspSheetName: В конкурс #type: NUMBER #columns: # vsp: 3 # bank: 1 # region: 10 # office: 2 # address: 7
По умолчанию, сервис использует 10 коннектов до БД, при необходимости можно увеличить, добавив в конфигурационный файл spring.datasource.hikari.maximum-pool-size=20, где 20 число коннектов.
Файл инициализации сервиса располагается по адресу: /etc/default/eltex-bob .