Версия ПО 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.
Пример установки через консоль:
apt update apt install software-properties-common add-apt-repository --yes --update ppa:ansible/ansible apt install ansible
Более подробная информация по установке Ansible доступна по ссылке.
2. Выполните проверку версии (должна быть не ниже v2.9):
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
При установке задайте свой пароль.
Пример задания пароля:
[default] localhost ansible_connection=local ansible_sudo_pass=rootpasswd
6. Далее необходимо настроить параметры доступа к платформе Eltex SC.
Для базовой установки достаточно отредактировать файл конфигурации /etc/ansible-iot-1.22/vars/default.yml
Откройте файл в любом доступном текстовом редакторе, например nano. Укажите корректный IP-адрес или доменное имя для доступа к платформе в переменной server_name:
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 — путь до директории, в которую будет произведена установка платформы (если такая директория не существует, то она будет создана);
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 ID | IMAGE | COMMAND | CREATED | STATUS | PORTS | NAMES |
---|---|---|---|---|---|---|
2bed00cc8fce | hub.eltex-co.ru/iot/iot-double-web:1.22 | /docker-entrypoint.… | 2 minutes ago | Up 2 minutes | iot_web | |
7da2459eaebf | hub.eltex-co.ru/iot/iot-core:1.22 | java -Dspring.profi… | 2 minutes ago | Up 2 minutes | 0.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_1 | iot_core |
ee6a8bb69b81 | hub.eltex-co.ru/iot/iot-mqttbroker-mongo:latest | java -cp @/app/jib-… | 2 minutes ago | Up 2 minutes | 0.0.0.0:8083->8083/tcp, :::8083->8083/tcp, 0.0.0.0:8883->8883/tcp, :::8883->8883/tcp | iot-mqtt-broker |
82378129b51a | hub.eltex-co.ru/softwlc/eltex-ngw:1.18 | /usr/sbin/ngw_start… | 2 minutes ago | Up 2 minutes | 0.0.0.0:8040->8040/tcp, :::8040->8040/tcp | iot_ngw-sc |
1c613dde3285 | hub.eltex-co.ru/iot-mongo5:1.22 | "/entrypoint.sh" | 2 minutes ago | Up 2 minutes | 0.0.0.0:27017->27017/tcp, :::27017->27017/tcp | iot_mongo |
a2258f59c1da | hub.eltex-co.ru/iot-clickhouse-backup:1.22 | /entrypoint.sh /ent… | 2 minutes ago | Up 2 minutes | iot-olapservice-db-backup | |
580e53733003 | hub.eltex-co.ru/iot-olapservice:1.22 | java -cp @/app/jib-… | 2 minutes ago | Up 2 minutes | iot-olapservice | |
57c02941cc4f | clickhouse/clickhouse-server:22.3.2.2-alpine | /entrypoint.sh | 2 minutes ago | Up 2 minutes | 8123/tcp, 9000/tcp, 9009/tcp | iot-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
При установке задайте свой пароль.
[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.
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.
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
Проверить занятость физического места на диске
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
Способ определения типа сертификата
# 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 имя_для_нового_ключа.