Дерево страниц
Перейти к концу метаданных
Переход к началу метаданных

Версия ПО 1.22

Рекомендуемые характеристики сервера

Система Eltex SC строится по клиент-серверной архитектуре. Серверную часть рекомендуется устанавливать на многопроцессорный компьютер под управлением OS Ubuntu 20.

Производительность сервера зависит от числа пользователей, которые будут зарегистрированы на платформе.

Минимальные системные требования сервера*:

  • число аппаратных серверов — 1;
  • процессор — i5 3,0 ГГц;
  • оперативная память — 8 ГБ;
  • место на диске — 1000 ГБ.

Минимально необходимая конфигурация для запуска ядра платформы с микросервисами.

Установка платформы Eltex SC


В инструкции описан процесс установки платформы Eltex SC версии 1.22 на операционную систему Ubuntu 20.04Информацию по установке более ранних версий платформы Eltex SC (1.21 и ниже) можно найти по ссылке: Архив Eltex SC.


С версии 1.19.4 установка через deb-пакеты не осуществляется.

Установка Eltex SC на сервер, не отвечающий минимальным системным требованиям, ведет к неработоспособности платформы!

Перед развертыванием платформы необходимо установить систему Ansible и необходимые для ее работы компоненты. Ansible рекомендуется устанавливать из официального репозитория проекта.

Ansible — система управления конфигурациями, написанная на языке программирования Python с использованием декларативного языка разметки для описания конфигураций. Система используется для автоматизации настройки и развертывания программного обеспечения, в частности для ПО Eltex SC.


Для установки платформы выполните следующие шаги:

1. Установите Ansible на сервер Ubuntu 20.04. 

Пример установки через консоль:

Установка Ansible
apt update
apt install software-properties-common
add-apt-repository --yes --update ppa:ansible/ansible
apt install ansible


Более подробная информация по установке Ansible доступна по ссылке.


2. Выполните проверку версии (должна быть не ниже v2.9):

Проверка версии Ansible
ansible --version


3. После установки Ansible добавьте необходимые для ее работы коллекции.

Пример добавления коллекций:

Установка
ansible-galaxy collection install community.general
ansible-galaxy collection install community.crypto
ansible-galaxy collection install community.docker


4. Подготовьте конфигурацию.

Для получения файлов конфигурации обратитесь с запросом в Коммерческий отдел ЭЛТЕКС.
Файлы конфигурации будут направлены вам в виде архива tar.gz, который необходимо распаковать в директорию 
/etc с правами root.

Пример распаковки архива:

Распаковка архива с конфигурацией
tar -C /etc -xvf ansible-iot-1.22.tar.gz


После распаковки архива все пакеты и зависимости будут развернуты в директории на текущем сервере.

Файлы конфигурации и плейбуки (скрипты/конфигурации) Ansible будут расположены в директории /etc/ansible-iot-1.22


5. Отредактируйте файл /etc/ansible-iot-1.22/inventory

Откройте файл в любом доступном текстовом редакторе, например nano. Укажите пароль пользователя root в переменной ansible_sudo_pass:

Далее в примере для пользователя root используется пароль rootpasswd

При установке задайте свой пароль.

Пример задания пароля:

Содержимое файла inventory
[default]
localhost   ansible_connection=local     ansible_sudo_pass=rootpasswd


6. Далее необходимо настроить параметры доступа к платформе Eltex SC.

Для базовой установки достаточно отредактировать файл конфигурации /etc/ansible-iot-1.22/vars/default.yml 

Откройте файл в любом доступном текстовом редакторе, например nano. Укажите корректный IP-адрес или доменное имя для доступа к платформе в переменной server_name:  

Содержимое конфигурационного файла vars/default.yml
server_name: my.test.server
mongodb_version: 5
use_external_mongodb: false
external_mongodb_addr: "{{ server_name }}"
external_mongodb_port: 27017
web_http_port: 80
web_https_port: 443
use_https_web_from_core: true
web_enable_certbot: false
web_certbot_email: test@email.com
mail_smtp_submitter: test@email.com
mail_smtp_password: password
mail_smtp_auth: "true"
mail_smtp_host: email.com
mail_smtp_port: 587
flussonic_url: ""
flussonic_api_key: ""
flussonic_operator_id: ""
flussonic_admin_login: ""
install_dir: /storage/iot

Для функций самостоятельной регистрации, регистрации демонстрационных учетных записей, а также для процедуры восстановления пароля может потребоваться активация почтовых оповещений через e-mail. Для этого потребуется указать:

  • mail_smtp_submitter — учетная запись e-mail;
  • mail_smtp_password — пароль от учетной записи e-mail;
  • mail_smtp_auth — проверка подлинности smtp (включена по умолчанию);
  • mail_smtp_host — адрес smtp-сервера;
  • mail_smtp_port — smtp-порт сервера.

Описание параметров конфигурации в файле vars/default.yml:

  • server_name — доменное имя (IP-адрес) сервера, на котором будет производиться развертывание;
  • mongodb_version — версия используемой БД MongoDB (по умолчанию версия 5);
  • use_external_mongodb — параметр использования внешней MongoDB;

При указании true в значении параметра use_external_mongodb MongoDB должна быть настроена, а параметры подключения — указаны в external_mongodb_addr и external_mongodb_port.

  • external_mongodb_addr — адрес внешней MongoDB;
  • external_mongodb_port — порт внешней MongoDB;
  • web_http_port — порт HTTP, по которому будет осуществляться доступ в web;
  • web_https_port — порт HTTPS, по которому будет осуществляться доступ в web;
  • use_https_web_from_core — параметр использования HTTPS для доступа из API к web;


При указании true в значении параметра use_https_web_from_core будет использован порт, указанный в web_https_port. При указании false будет использован HTTP и порт, указанный в web_http_port.


  • web_enable_certbot — параметр использования certbot для получения сертификатов Let's Encrypt;
  • web_certbot_email — e-mail владельца домена. Необходим для подтверждения валидности домена при получении сертификата Let's Encrypt.
  • mail_smtp_submitter — учетная запись e-mail (опционально);
  • mail_smtp_password — пароль от учетной записи e-mail (опционально);
  • mail_smtp_auth — проверка подлинности SMTP (включена по умолчанию) (опционально);
  • mail_smtp_host — адрес SMTP-сервера (опционально);
  • mail_smtp_port — SMTP-порт сервера (опционально);
  • flussonic_url — хост Watcher'a сервера Flussonic (опционально);
  • flussonic_api_key — ключ API, используемый для аутентификации запросов;
  • flussonic_operator_id — идентификатор оператора (опционально);
  • flussonic_admin_login — логин администратора (опционально);
  • install_dir — путь до директории, в которую будет произведена установка платформы (если такая директория не существует, то она будет создана);
Содержимое конфигурационного файла /vars/service_parameters.yml
iot_release: 1.22
registry: hub.eltex-co.ru
container_name_suffix: ""
network_name_suffix: ""
db_mapped_port: 27017
mqtt_broker_external_mapped_port: 8883
mqtt_broker_internal_mapped_port: 8083
olapservice_mapped_port: 8023
olapservice_db_mapped_port: 8123
ngw_mapped_port: 8040
core_ctlgate_tcp_mapped_port: 8069
core_ctlgate_mapped_port: 8070
core_ctlgate_ssl_mapped_port: 8072
core_api_mapped_port: 8071
core_api_ssl_mapped_port: 8073
services:
with_distro_preparing_step: true
iot_core_log_level: info
export_mongo_port: false
export_mqtt_broker_port: false
export_olapservice_port: false
export_olapservice_db_port: false
export_ngw_port: false
without_core: false
without_web: false
testdata_enable: false
swagger_enable: false
iot_core_db: iot-core
iot_fs_db: iot-fs
iot_licenses_db: iot-licenses
iot_events_db: iot-events
mqtt_broker_db: iot-broker
olap_service_db: iotcore
mjollnir_url: "http://92.125.152.58:8078/api/v1"

Описание параметров конфигурации в файле vars/service_parameters.yml:

  • iot_release — версия релизных core & web;
  • registry — имя репозитория docker registry, хранящего docker-образы для развертывания. Менять не рекомендуется;
  • container_name_suffix — суффикс, добавляемый к имени каждого контейнера (помогает избежать конфликта имен контейнеров);
  • network_name_suffix — суффикс, добавляемый к имени создаваемой сети docker (помогает избежать конфликта имен сетей docker);
  • *_mapped_port — маппинги портов сервисов в docker-compose (помогают избежать конфликта экспортируемых портов сервисов);
  • services — список сервисов для перезапуска (при запуске плейбука services_restart.yml). Можно оставить пустым, а при запуске передавать параметром командной строки (опционально);
  • with_distro_preparing_step — параметр необходимости подготовки дистрибутива к установке. Данный шаг полезен при "чистой" установке на только что созданный сервер. Если ранее уже была выполнена установка компонентов IoT через Ansible, то такая подготовка не требуется и этот шаг можно пропустить для экономии времени;
  • iot_core_log_level — уровень лога;
  • export_mongo_port — проброс портов внутреннего сервиса MongoDB из контейнера docker для доступа к БД из внешней сети;
  • export_mqtt_broker_port — проброс портов внутреннего сервиса MQTT-брокера из контейнера docker для доступа к API ядра из внешней сети;
  • export_olapservice_port — проброс портов внутреннего сервиса OLAP-брокера из контейнера docker для доступа к API ядра из внешней сети;
  • export_olapservice_db_port — проброс портов внутреннего сервиса ClickHouse из контейнера docker для доступа к БД из внешней сети;
  • export_ngw_port проброс портов внутреннего сервиса NGW;
  • without_core параметр для выполнения установки без сервиса core;
  • without_web параметр для выполнения установки без сервиса web;
  • testdata_enable — параметр необходимости создания тестовых учетных записей на платформе;
  • swagger_enable — параметр необходимости включения swagger (описание API платформы);
  • *_db — имя БД;
  • mjollnir_url — адрес сервера лицензий.

7. После этого можно запустить установку:

Установка
cd /etc/ansible-iot-1.22
ansible-playbook install.yml

8. Выполните проверку статуса контейнеров:

Проверка статуса контейнеров
docker ps
Вывод команды docker ps
CONTAINER IDIMAGE COMMANDCREATEDSTATUSPORTSNAMES
2bed00cc8fcehub.eltex-co.ru/iot/iot-double-web:1.22/docker-entrypoint.…2 minutes agoUp 2 minutes
iot_web
7da2459eaebfhub.eltex-co.ru/iot/iot-core:1.22java -Dspring.profi…2 minutes agoUp 2 minutes0.0.0.0:8069-8073->8069-8073/tcp, :::8069-8073->8069-8073/tcp, 0.0.0.0:8078->8078/tcp, :::8078->8078/tcp, 0.0.0.0:9900->9900/tcp, :::9900->9900/tcp iot_core_1iot_core
ee6a8bb69b81hub.eltex-co.ru/iot/iot-mqttbroker-mongo:latestjava -cp @/app/jib-…2 minutes agoUp 2 minutes0.0.0.0:8083->8083/tcp, :::8083->8083/tcp, 0.0.0.0:8883->8883/tcp, :::8883->8883/tcpiot-mqtt-broker
82378129b51ahub.eltex-co.ru/softwlc/eltex-ngw:1.18/usr/sbin/ngw_start…2 minutes agoUp 2 minutes0.0.0.0:8040->8040/tcp, :::8040->8040/tcpiot_ngw-sc
1c613dde3285hub.eltex-co.ru/iot-mongo5:1.22"/entrypoint.sh"2 minutes agoUp 2 minutes0.0.0.0:27017->27017/tcp, :::27017->27017/tcpiot_mongo
a2258f59c1dahub.eltex-co.ru/iot-clickhouse-backup:1.22/entrypoint.sh /ent…2 minutes agoUp 2 minutes
iot-olapservice-db-backup
580e53733003hub.eltex-co.ru/iot-olapservice:1.22java -cp @/app/jib-…2 minutes agoUp 2 minutes
iot-olapservice
57c02941cc4fclickhouse/clickhouse-server:22.3.2.2-alpine/entrypoint.sh2 minutes agoUp 2 minutes8123/tcp, 9000/tcp, 9009/tcpiot-olapservice-db


Платформа будет доступна по адресу: http://[Адрес вашего сервера Eltex SC]

Адрес сервера был ранее указан в переменной server_name файла конфигурации /etc/ansible-iot-1.22/vars/default.yml 


Порты доступа к API платформы можно изменить только в случае редактирования соответствующих настроек в файле конфигурации.


9. Добавьте файл лицензий.

Подробное описание процесса добавления файла лицензий доступно в документации Интерфейс администратора в разделе Лицензии.

Время использования платформы и количество добавляемых устройств ограничивается типом лицензии, которая приобретается заказчиком.

Установка платформы Eltex SC с внешней БД mongo

В случае развертывания внешней БД mongo, т.е. при установке платформы Eltex SC с внешним процессом/службой mongodb:

1. Установите необходимые зависимости и сервис mongodb (например версии 4.4):

sudo apt-get update
sudo apt-get upgrade
sudo apt-get install -y software-properties-common gnupg build-essential net-tools dkms
wget https://www.mongodb.org/static/pgp/server-4.4.asc
sudo apt-key add server-4.4.asc
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
sudo apt-get update
sudo apt-get install -y mongodb-org
sudo service mongod start
sudo service mongod status

2. В файле /etc/mongod.conf в секции net укажите:

port: 27017
bindIp: 0.0.0.0

И перезапустите сервис mongod:

sudo service mongod restart
sudo service mongod status

3. Установите Ansible на сервер:

sudo add-apt-repository --yes --update ppa:ansible/ansible
sudo apt install ansible
sudo ansible-galaxy collection install community.general
sudo ansible-galaxy collection install community.crypto
sudo ansible-galaxy collection install community.docker

4. Подготовьте конфигурацию:

Распаковка архива с конфигурацией
tar -C /etc -xvf ansible-iot-1.22.tar.gz


После распаковки архива все пакеты и зависимости будут развернуты в директории на текущем сервере.

Файлы конфигурации и плейбуки (скрипты/конфигурации) Ansible будут расположены в директории /etc/ansible-iot-1.22.


5. Отредактируйте файл /etc/ansible-iot-1.22/inventory.

Откройте файл в любом доступном текстовом редакторе, например, nano. Укажите пароль от root в переменной ansible_sudo_pass:

Далее в примере для пользователя root используется пароль rootpasswd

При установке задайте свой пароль.

Содержимое файла inventory
[default]
localhost ansible_connection=local ansible_sudo_pass=rootpasswd


6. Настройте параметры доступа к платформе, в том числе параметры для работы с внешним сервисом БД. Для этого отредактируйте файлы конфигурации /etc/ansible-iot-1.22/vars/default.yml и /etc/ansible-iot-1.22/vars/service_parameters.yml.

Откройте файл default.yml в любом доступном текстовом редакторе, например, nano. Укажите корректный IP-адрес или доменное имя в переменной server_name. 

Для параметра use_external_mongodb установите значение true.

Содержимое конфигурационного файла vars/default.yml
server_name: my.test.server
mongodb_version: 5
use_external_mongodb: true
external_mongodb_addr: "{{ server_name }}"
external_mongodb_port: 27017
web_http_port: 80
web_https_port: 443
use_https_web_from_core: true
web_enable_certbot: false
web_certbot_email: test@email.com
mail_smtp_submitter: test@email.com
mail_smtp_password: password
mail_smtp_auth: "true"
mail_smtp_host: email.com
mail_smtp_port: 587
flussonic_url: ""
flussonic_api_key: ""
flussonic_operator_id: ""
flussonic_admin_login: ""
install_dir: /storage/iot


Внимание!

При указании true в значении параметра use_external_mongodb MongoDB должна быть настроена, а параметры подключения — указаны в: 

external_mongodb_addr (по умолчанию используется адрес, указанный в server_name);

external_mongodb_port.


7. Откройте файл service_parameters.yml в любом доступном текстовом редакторе, например, nano. Для параметра export_mongo_port установите значение true.

Содержимое конфигурационного файла /vars/service_parameters.yml
iot_release: 1.22
registry: hub.eltex-co.ru
container_name_suffix: ""
network_name_suffix: ""
db_mapped_port: 27017
mqtt_broker_external_mapped_port: 8883
mqtt_broker_internal_mapped_port: 8083
olapservice_mapped_port: 8023
olapservice_db_mapped_port: 8123
ngw_mapped_port: 8040
core_ctlgate_tcp_mapped_port: 8069
core_ctlgate_mapped_port: 8070
core_ctlgate_ssl_mapped_port: 8072
core_api_mapped_port: 8071
core_api_ssl_mapped_port: 8073
services:
with_distro_preparing_step: true
iot_core_log_level: info
export_mongo_port: true
export_mqtt_broker_port: false
export_olapservice_port: false
export_olapservice_db_port: false
export_ngw_port: false
without_core: false
without_web: false
testdata_enable: false
swagger_enable: false
iot_core_db: iot-core
iot_fs_db: iot-fs
iot_licenses_db: iot-licenses
iot_events_db: iot-events
mqtt_broker_db: iot-broker
olap_service_db: iotcore
mjollnir_url: "http://92.125.152.58:8078/api/v1"


8. После этого можно запустить установку:

cd /etc/ansible-iot-1.22
sudo ansible-playbook install.yml

Платформа будет доступна по адресу: http://[Адрес вашего сервера Eltex SC]

Адрес сервера был ранее указан в переменной server_name файла конфигурации /etc/ansible-iot-1.22/vars/default.yml 

9. Добавьте файл лицензий.

Подробное описание процесса добавления файла лицензий доступно в документации Интерфейс администратора в разделе Лицензии.

Время использования платформы и количество добавляемых устройств ограничивается типом лицензии, которая приобретается заказчиком.

Работа с контейнерами

В процессе обслуживания можно осуществлять перезапуск контейнеров:

Перезапуск контейнеров
ansible-playbook services_restart.yml --extra-vars '{"services":["web", "core", "broker", "olapservice"]}'


В квадратных скобках нужно перечислить сервисы, которые необходимо перезапустить (в примере это "web", "core", "broker", "olapservice"). Если не указать параметр "services" через --extra-vars, то будут перезапущены все сервисы.
Аналогичным образом можно остановить часть контейнеров:

Остановка контейнеров
ansible-playbook services_stop.yml --extra-vars '{"services":["web", "core", "broker", "olapservice"]}'


Или обновить все контейнеры из репозитория:

Обновление контейнеров
ansible-playbook services_update.yml


Применение новой или измененной конфигурации:

Обновление контейнеров
ansible-playbook install.yml

Расположение конфигурационных файлов

В /etc/ansible-iot-1.22/templates располагаются конфигурации для ядра, web и сервера e-mail/sms-рассылок:

  • default-for-docker.yml.j2
  • eltex-sc-web.j2
  • notification.properties.j2

Директория хранения журналов работы платформы: /storage/iot/core/var/log/eltex-sc/server.log

Файлы журналов разбиваются на части по размеру. Каждая часть сохраняется в файл с именем: server-YYYY-MM-DD.NN.log, где YYYY-MM-DD — дата, а NN — номер части.

При изменении конфигурации перезапустите install.yml:

ansible-playbook install.yml

Некоторые конфигурационные параметры дублируют файл конфигурации /etc/ansible-iot-1.22/vars/default.yml (например параметры flussonic-сервера). При запуске платформы параметры, заданные в файле конфигурации /etc/ansible-iot-1.22/vars/default.yml, имеют наивысший приоритет по отношению к другим файлам конфигурации, а также ведут к их перезаписи.


Содержимое конфигурационного файла default-for-docker.yml.j2:

testData:
  environment: {{ 'true' if testdata_enable else 'false' }}

fileStorage:
  path: "/var/lib/eltex-sc/files"

logger:
  mongodb: ERROR
  springdata: INFO

controllerGateTCP:
  port: 8069

controllerGate:
  port: 8070

controllerGateSecurity:
  port: 8072

api:
  port: 8071
  sslPort: 8073

{% if ui_port_for_core != "80" and ui_port_for_core != "443" %}
# Порт UI нужен для формирования на платформе ссылок, которые пользователь сможет открыть через UI
# Может отсутствовать. В таком случае port не будет указываться при составлении URL для UI (WEB)
ui:
  port: {{ ui_port_for_core }}
{% endif %}
mqttBroker:
  enabled: true
  # Хост MQTT-брокера, используется платформой
  host: "broker"
  # Порт MQTT-брокера, используется платформой для связи по протоколу MQTT
  port: 8883
  # Порт, на котором у брокера поднимается REST API, используется платформой
  apiPort: 8083
  # Внешний URL по которому доступен MQTT-брокер, передаётся MQTT-клиентам
  remoteAccessURL: "{{ server_name }}:{{ mqtt_broker_external_mapped_port }}"
  # Таймаут в секундах, по достижении которого MQTT-устройства выставляется статус "Offline"
  offlineTimeoutSec: 300

olapservice:
  host: "olapservice"
  port: 8023

hystrix:
  eventlog:
    # Время на выполнение вызова, по истечении которого вызов будет отменён и отмечен как TIMEOUT
    timeoutInMilliseconds: 5000
    # Минимальное количество вызовов, после которого начнет считаться процент отказов
    requestVolumeThreshold: 20
    # Процент ошибок, при котором запросы будут перенаправляться в резервные методы
    errorThresholdPercentage: 50
    # Количество времени, при котором запросы будут перенаправляться в резервные методы
    sleepWindowInMilliseconds: 5000

# параметры для формирования ссылок к UI(WEB) и API
server:
  # Доменное имя сервера, на котором развернута платформа и/или UI
  name: "{{ server_name }}"
  # Использовать схему https:// при формировании ссылок к UI
  useHttpsForUi: {{ 'true' if use_https_web_from_core else 'false' }}
  # Использовать схему https:// при формировании ссылок к API
  useHttpsForApi: false
  # Использовать ui.port вместо api.port при формировании ссылок к API
  useUiProxyForApi: false

electricMeterScheduler:
  cron: "0 0/30 * * * ?"

electricMeterArchiveScheduler:
  cron: "0 0 17 * * ?"

services:
  ngw:
    host: "ngw-sc"
    port: 8040

  push:
    firebase:
      enabled: true
    apns:
      enabled: true
dictionary:
  path: "dict.json"

languageInterface:
  language: "ru"

# Hazelcast instance configuration -> Move it to separate microservice -> Use hz-client here
hazelcast:
  instanceName: "iot-core-hz-instance{{ container_name_suffix }}"
  clusterName: "iot-core{{ container_name_suffix }}"
  network:
    port: "5705"
#    member: "127.0.0.1:5701"

mjollnir:
  sync-period: "0 0 23 1/1 * ?"
  login: "platform"
  password: "platform"
  url: {{ mjollnir_url }}

# Основная база данных iot-core
iot-core:
  host: "{{ mongodb_addr }}"
  port: {{ mongodb_port }}
  # hosts: "192.168.0.1:27017, 192.168.0.2"
  user: ""
  password: ""
  database: "{{ iot_core_db }}"

# База данных файлового хранилища iot-fs
file-storage:
  host: "{{ mongodb_addr }}"
  port: {{ mongodb_port }}
  user: ""
  password: ""
  database: "{{ iot_fs_db }}"

# База лицензионных файлов
license-storage:
  host: "{{ mongodb_addr }}"
  port: {{ mongodb_port }}
  user: ""
  password: ""
  database: "{{ iot_licenses_db }}"

# База — журнал событий eventlog
eventlog:
  host: "{{ mongodb_addr }}"
  port: {{ mongodb_port }}
  user: ""
  password: ""
  database: "{{ iot_events_db }}"

test-base:
  host: "localhost"
  port: 27018
monitoring-system:
  countAttempt: 3
  delayAttempt: 0

kafka:
  enabled: false
  bootstrap-servers: "localhost:9092"

video:
  flussonic:
    url: "{{ flussonic_url }}"
    apiKey: "{{ flussonic_api_key }}"
    operator_id: "{{ flussonic_operator_id }}"
    admin_login: "{{ flussonic_admin_login }}"
    #Ссылка на демонстрационный поток для демо-режима
    fake_camera_url: "rtsp://127.0.0.1/vod/mp4:BigBuckBunny_115k.mov"
  ivideon:
    #IP-адрес, на который ivideon будет посылать события (для развертывания следует изменить)
    ip_for_catch_event: ""

#Абсолютный путь до сертификата SSL
ssl:
  key: "/etc/ssl/private/eltex-sc-api.key"
  crt: "/etc/ssl/certs/eltex-sc-api.crt"

proxy:
  enabled: false
  host: ""
  port: 8050

billing:
  cron: "0 0 0 * * ?"
  ftp:
    host: "127.0.0.1"
    port: 21
    login: "user"
    password: "password"
    workdir: "test"

notifications:
  duplicate_delay_sec: 0
  antispam_time_sec: 0
  delay_push_time_millisec: 250

guard:
  deviceRequestDelay: 15000

#Включение и отключение swagger. При вводе корректного значения key открываются скрытые пункты в swagger.
swagger:
  enable: {{ 'true' if swagger_enable else 'false' }}
  key: ""

controller:
  delay_answer_from_control_millisec: 12000


Параметры конфигурационного файла:

  • testData — порт сервера;
  • fileStorage — путь до хранилища загружаемых файлов (внутри контейнера Docker);
  • logger — уровень логирования сервера. Для включения режима debug необходимо выставить mongodb: DEBUG;
  • controllerGateTCP — порт сервера, к которому подключаются контроллеры Ethernet в режиме TCP-клиента;
  • controllerGate port — порт сервера, к которому подключаются контроллеры (по умолчанию 8070);
  • controllerGateSecurity port — порт сервера, к которому подключаются контроллеры c использованием сертификата SSL, по умолчанию 8072;
  • api port — порт сервера для взаимодействия с API платформы через веб-интерфейс или мобильное приложение;
  • api sslPort — порт сервера для взаимодействия с API платформы через веб-интерфейс или мобильное приложение с использованием SSL-сертификата;
  • ui port — порт, указываемый при формировании ссылок в письмах оповещений и т.д., например для функционала "Восстановление пароля";
  • mqttBroker — настройка сервиса MQTT;
  • olapservice — настройка сервиса OLAP (доступ до контейнера Docker);
  • hystrix — настройка сервиса hystrix (с версии 1.23 будет упразднен);
  • server name — доменное имя сервера, на котором развернута платформа и/или UI;
  • electricMeterScheduler — параметр, отвечающий за автоматический опрос устройства платформой (по умолчанию опрос выполняется каждые 30 минут, начиная от начала часа). Пример: cron: 3 0/1 * * * ? — опрос каждые 3 минуты;
  • electricMeterArchiveScheduler — параметр, отвечающий за автоматический опрос архива устройства платформой;
  • services — настройки внешних сервисов (Eltex NGW, Google FCM, Apple APNS) для работы системы рассылки оповещений на платформе;
  • video — настройка видеосервиса Flussonic;
  • ssl — путь до сертификатов SSL (внутри контейнера Docker);
  • proxy — настройка прокси-сервера;
  • billing — настройка сервиса биллинга;
  • notifications — настройка защиты сервиса push-уведомлений.

    Параметры:

    - duplicate_delay_sec — период времени, в течение которого будет блокироваться дубликат сообщения (полностью совпадающий), задается в секундах; 

    - antispam_time_sec — период времени, в течение которого будет блокироваться отправка последующих однотипных сообщений (не полностью совпадающих, например "Контроллер вне доступа 1", "Контроллер вне доступа 2" и т. д.), задается в секундах; 

    - delay_push_time_millisec — задержка между отложенными push-уведомлениями, задается в миллисекундах.

  • guard — настройка задержки перед постановкой на охрану;
  • swagger — сервис для взаимодействия и просмотра API платформы Eltex SC. Для доступа необходимо обратиться к сервису :8071/api/v1/swagger-ui/.
  • controller: delay_answer_from_control_millisec — настройка задержки ожидания ответа от контроллера;

Порты, используемые платформой по умолчанию:

  • 8069 — порт для подключения контроллеров Ethernet к платформе в режиме TCP-клиент;
  • 8070 — WS-порт для подключения контроллеров к платформе;
  • 8071 — HTTP-порт API-платформы;
  • 8072 — WSS-порт для подключения контроллеров к платформе;
  • 8073 — HTTPS-порт API-платформы;
  • 8883 — порт для подключения к MQTT-брокеру.

По окончании установки и конфигурирования сервер Eltex SC будет готов к работе. Взаимодействие с платформой происходит через веб-интерфейсы пользователей и администратора, а также через мобильное приложение Eltex Home.

Во всех случаях для входа в платформу необходимо указать ее адрес и номер порта. В общем случае в адресную строку браузера вводится следующее: <Адрес сервера Eltex SC>.

Проверка работоспособности платформы

В данном разделе представлен чек-лист для проверки работоспособности платформы.

Проверить занятость ядер процессора и оперативной памяти

htop
Необходимо следить за MEM% и CPU% процессов mongo и eltex-sc.



Проверить занятость физического места на диске

df -h
Обратите внимание на использование диска всеми подразделами 

Проверить соединения контроллеров Z-Wave или датчиков Wi-Fi с платформой

netstat -na | grep 8070
netstat -na | grep 8883

Параметры, на которые следует обратить внимание:

  • Состояние соединений:
    • ESTABLISHED, LISTEN — норма;
    • LAST_ACK — связь с контроллером потеряна, рядом должно быть переоткрытое соединение с того же IP;
    • TIME_WAIT, CLOSE_WAIT — соединение зависло, неудачное закрытие;
  • 2-ая колонка — очередь принятых сервером пакетов;
  • 3-я колонка — очередь пакетов, отосланных на контроллеры;
  • 5-я колонка — IP-адреса контроллеров.

Необходимо следить, чтобы пакеты не копились в очереди на контроллер. Если такое происходит, значит веб-сокет этого контроллера недоступен, и нужно проверить событие и время события в лог-файлах платформы.

Проверить наличие ошибок в логе

Лог-файлы платформы по умолчанию находятся в /storage/iot/core/var/log/eltex-sc/server*. Они разбиваются на части по размеру. Чтобы проверить все журналы на наличие некоторого параметра за определенную дату (например за 15 января 2022 года) и записать результаты в файл, выполните команду:

grep <значение для поиска> server-2022-01-15* > <имя файла для вывода>

Если требуется, можно дописать следующие опции после значения для поиска:

  • -i — не чувствителен к регистру;
  • -n — номера строк;
  • -h — подавляет запись имени файла перед каждой строкой в результирующем файле;
  • -A — количество строк после совпадения;
  • -B — количество строк до совпадения.


Общий вид команды:

grep -i -n -A 5 -B 2 error server-2022-01-15* > errors.log


Ключевые слова для поиска:

  • ERROR;
  • ID или IP контроллера;
  • PONG — ключевое слово, которое записывается, если контроллер не отвечает.

Проверить доступность веб-интерфейса

Самый простой способ проверить доступность веб-интерфейса платформы — открыть его в браузере (по IP или доменному имени — в зависимости от настроек сети и сервера).

Можно проверить доступность API платформы. Для этого в адресной строке браузера к URL веб-интерфейса платформы допишите: 

<Адрес сервера Eltex SC>:<порт API>/api/v1/version

где порт API — вышеуказанный порт доступа к API по HTTP (по умолчанию 8071/8073). Платформа должна моментально вернуть данные об установленной версии платформы, версии API и текущем времени на сервере в формате JSON.


Пример вывода:

Ответ сервера на запрос
{
  "version" : "1.22-3116",
  "api" : "1.0",
  "currentTime" : "2022-12-29T17:54:16.278+07:00[Asia/Novosibirsk]"
}

Настройка сервиса eltex-notification-gw (eltex-ngw)

Сервис eltex-notification-gw представляет собой интерфейс для отправки e-mail и sms-оповещений пользователям платформы. Eltex-notification-gw обеспечивает взаимодействие компонентов платформы с внешними SMS-шлюзами, call-центрами и серверами электронной почты.

Для настройки сервиса необходимо отредактировать конфигурационный файл /etc/ansible-iot-1.22/templates/notification.properties.j2

Конфигурационный файл содержит параметры:

  • Ссылка на конфигурационный файл для подключения к SMS-шлюзу (для отправки SMS пользователям):

    sms.gate.outgoing.sms.config=smsc_gate.conf
  • Ссылка на конфигурационный файл для идентификации пользователя по отправленным им SMS:

    sms.gate.incoming.sms.config=
  • Ссылка на конфигурационный файл для идентификации пользователя по исходящим от него звонкам:

    sms.gate.incoming.call.config=
  • Настройка размера очереди SMS на отправку и времени ожидания отправки:

    sms.gate.pool.size=50
    sms.gate.pool.wait.millis=5000
  • Настройка размера очереди и времени ожидания отправки, ссылка на конфигурационный файл для авторизации по входящему звонку:

    call.gate.outgoing.call.config=
    call.gate.pool.size=50
    pool.wait.millis=5000
    
  • Порт, прослушиваемый сервисом для приема запросов на отправку сообщений:

    server.port=8040

  • Настройка подключения к MongoDB для хранения журнала отправки сообщений:

    mongodb.host={{ mongodb_addr }}
    mongodb.port={{ mongodb_port }}
    mongodb.name=notification-gw
    mongodb.fsfiles.store.period=7
  • Подключение к серверу электронной почты:

    mail.smtp.submitter={{ mail_smtp_submitter }}
    mail.smtp.password={{ mail_smtp_password }}
    mail.smtp.auth={{ mail_smtp_auth }}
    mail.smtp.host={{ mail_smtp_host }}
    mail.smtp.port={{ mail_smtp_port }}
    mail.smtp.sendpartial=true
    mail.smtp.starttls.enable=false
    mail.smtp.connectiontimeout=5000
    mail.gate.pool.size=20
    mail.pool.wait.millis=10000

mail.smtp.password

Если в вашем пароле используются спецсимволы типа:  " [ \ ^ $ . | ? * + ( )",  их необходимо экранировать знаком "\", иначе пароль будет неверным!

Пример 1: пароль "326P%1E\" при экранировании должен выглядеть следующим образом: "326P%1E\\"; 

Пример 2: пароль "326P%1E^" при экранировании должен выглядеть следующим образом: "326P%1E\^".


Для включения шифрования соединения с почтовым сервером укажите опцию:

mail.smtp.starttls.enable=true

Переход с http на https


Ваш сертификат должен иметь формат PKCS#8.

Способ определения типа сертификата

# head -1 /tmp/eltex-sc-api.key 
-----BEGIN PRIVATE KEY-----

# head -1 /etc/ssl/private/eltex-sc-api.key 
-----BEGIN RSA PRIVATE KEY-----


  • BEGIN PRIVATE KEY — кодировка PKCS#8;
  • BEGIN RSA PRIVATE KEY — кодировка PKCS#1.

Если ваш сертификат имеет кодировку PKCS#1, необходимо конвертировать его в PKCS#8.

Пример конвертирования сертификата из PKCS#1 в PKCS#8, letsencrypt:

openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in путь_до_ключа -out имя_для_нового_ключа.
  • Нет меток