Описание сервиса
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, который содержит:
- apID - mac адрес устройства;
- apName - имя устройства;
- grCity - Город
- grRegion - Область/регион
- grTB - Территориальный банк
- vspAddress - графа из справочника с адресом расположение ТД.
- vspNumber - Номер ВСП
- apGroup - сформированное по справочнику месторасположение ТД;
- apRtcGroup - домен , в котором располагается устройство (за исключением скрываемой части - domain_search.regex, см. Настройки сервиса);
Пример
{ "data": [ { "apGroup": "Поволжский банк/Волгоградская область/Доп.офис №8621-0304", "apID": "a8-f9-4b-b5-a4-a0", "grTB": "Поволжский банк", "grCity": "г.Волгоград, Краснооктябрьский район", "vspNumber": "8621-00304", "apRtcGroup": "Ug/Volgogradskiy_filial/Volgogradskaya_obl/Volgograd/Sberbank/8621-0304_pr-kt_Metallurgov_15", "vspAddress": "400007, г.Волгоград, пр.Металлургов, 15", "apName": "sberbank_ug_vgg_volgograd_8621-0304_a8:f9:4b:b5:a4:a0", "grRegion": "Волгоградская область" }, ] }
Возможные параметры запроса
grTB - фильтр по полю grTB. При указании этого параметра в ответе от eltex-bob будут содержваться только те объекты, значение grTB которых совпадает с указанным. Если значение параметра пустое, фильтр будет игнорироваться.
пример запроса:http://localhost:9190/GetAPList?grTB='Сибирский банк'
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
Настройки
nginx и ACL
Для ограничения доступа к сервису по 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=[a-zA-Z0-9]*\.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 - порт, который слушает сервис
Следует отменить, что приведенный конфигурационный файл предназначен для доменов вида Ap.root. Если используется только root, то регулярные выражения нужно изменить следующим образом:
# Common properties domain_search.mask=root domain_search.regex=^(.*)$ domain_search.replacement=$1
Справочник ВСП
Конфигурационный файл для работы со сравочником - /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 .