Версия ПО 1.23 |
|
Система Eltex SC строится по клиент-серверной архитектуре. Серверную часть рекомендуется устанавливать на многопроцессорный компьютер под управлением OS Ubuntu 20.
Производительность сервера зависит от числа пользователей, которые будут зарегистрированы на платформе.
Минимальные системные требования сервера*:
Минимально необходимая конфигурация для запуска ядра платформы с микросервисами. |
В инструкции описан процесс установки платформы Eltex SC версии 1.23 на операционную систему Ubuntu 20.04. Информацию по установке более ранних версий платформы Eltex SC (1.22 и ниже) можно найти по ссылке: Архив 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.23.tar.gz |
После распаковки архива все пакеты и зависимости будут развернуты в директории на текущем сервере.
Файлы конфигурации и плейбуки (скрипты/конфигурации) Ansible будут расположены в директории /etc/ansible-iot-1.23
5. Отредактируйте файл /etc/ansible-iot-1.23/inventory
Откройте файл в любом доступном текстовом редакторе, например nano. Укажите пароль пользователя root в переменной ansible_sudo_pass:
Далее в примере для пользователя root используется пароль rootpasswd При установке задайте свой пароль. |
Пример задания пароля:
[default] localhost ansible_connection=local ansible_sudo_pass=rootpasswd |
6. Далее необходимо настроить параметры доступа к платформе Eltex SC.
Для базовой установки достаточно отредактировать файл конфигурации /etc/ansible-iot-1.23/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. Для этого потребуется указать:
|
Описание параметров конфигурации в файле vars/default.yml:
5
);При использовании устаревших аппаратных средств, не поддерживающих оптимизацию, необходимо выставить значение |
При указании true в значении параметра use_external_mongodb MongoDB должна быть настроена, а параметры подключения — указаны в external_mongodb_addr и external_mongodb_port. |
При указании true в значении параметра use_https_web_from_core будет использован порт, указанный в web_https_port. При указании false будет использован HTTP и порт, указанный в web_http_port. |
Также есть дополнительные параметры в vars/service_parameters.yml:
iot_release: 1.23 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" script_step_delay: 2 script_critical_repetition: 2 script_max_delay: 10 script_stoppable: true |
Описание параметров конфигурации в файле vars/service_parameters.yml:
7. После этого можно запустить установку:
cd /etc/ansible-iot-1.23 ansible-playbook install.yml |
Если ранее использовалась версия платформы Eltex SC c подключением внешней БД MongoDB, необходимо удалить запись о репозитории mongodb.org из APT (например, /etc/apt/sources.list.d/mongodb-org-4.4.list). |
8. Выполните проверку статуса контейнеров:
docker ps |
Вывод команды docker ps | ||||||
CONTAINER ID | IMAGE | COMMAND | CREATED | STATUS | PORTS | NAMES |
---|---|---|---|---|---|---|
2bed00cc8fce | hub.eltex-co.ru/iot/iot-double-web:1.23 | /docker-entrypoint.… | 2 minutes ago | Up 2 minutes | iot_web | |
7da2459eaebf | hub.eltex-co.ru/iot/iot-core:1.23 | 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.23 | "/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.23 | /entrypoint.sh /ent… | 2 minutes ago | Up 2 minutes | iot-olapservice-db-backup | |
580e53733003 | hub.eltex-co.ru/iot-olapservice:1.23 | 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.23/vars/default.yml |
Порты доступа к API платформы можно изменить только в случае редактирования соответствующих настроек в файле конфигурации.
9. Добавьте файл лицензий.
Подробное описание процесса добавления файла лицензий доступно в документации Интерфейс администратора в разделе Лицензии.
Время использования платформы и количество добавляемых устройств ограничивается типом лицензии, которая приобретается заказчиком. |
В случае развертывания внешней БД MongoDB, т.е. при установке платформы Eltex SC с внешним процессом/службой mongodb:
Доступ к репозиториям mongodb.org может быть ограничен. В случае проблем с установкой пакетов необходимо использовать зеркало репозитория или вручную установить deb-пакеты (например, доступные в публичном репозитории). |
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.23.tar.gz |
После распаковки архива все пакеты и зависимости будут развернуты в директории на текущем сервере.
Файлы конфигурации и плейбуки (скрипты/конфигурации) Ansible будут расположены в директории /etc/ansible-iot-1.23.
5. Отредактируйте файл /etc/ansible-iot-1.23/inventory.
Откройте файл в любом доступном текстовом редакторе, например nano. Укажите пароль от root в переменной ansible_sudo_pass:
Далее в примере для пользователя root используется пароль rootpasswd При установке задайте свой пароль. |
[default] localhost ansible_connection=local ansible_sudo_pass=rootpasswd |
6. Настройте параметры доступа к платформе, в том числе параметры для работы с внешним сервисом БД. Для этого отредактируйте файлы конфигурации /etc/ansible-iot-1.23/vars/default.yml и /etc/ansible-iot-1.23/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 |
При указании - external_mongodb_addr (по умолчанию используется адрес, указанный в server_name); - external_mongodb_port. |
7. Откройте файл service_parameters.yml в любом доступном текстовом редакторе, например nano. Для параметра export_mongo_port установите значение true
.
iot_release: 1.23 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" script_step_delay: 2 script_critical_repetition: 2 script_max_delay: 10 script_stoppable: true |
8. После этого можно запустить установку:
cd /etc/ansible-iot-1.23 sudo ansible-playbook install.yml |
Платформа будет доступна по адресу: http://[Адрес вашего сервера Eltex SC] Адрес сервера был ранее указан в переменной server_name файла конфигурации /etc/ansible-iot-1.23/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.23/templates располагаются конфигурации для ядра, web и сервера e-mail/sms-рассылок:
Директория хранения журналов работы платформы: /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.23/vars/default.yml (например параметры flussonic-сервера). При запуске платформы параметры, заданные в файле конфигурации /etc/ansible-iot-1.23/vars/default.yml, имеют наивысший приоритет по отношению к другим файлам конфигурации, а также ведут к их перезаписи. |
Содержимое конфигурационного файла default-for-docker.yml.j2:
# Nеst-овые данные окружения: дом, контроллер, устройства, правила 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 resilience4j: # Автоматический выключатель, который срабатывает при большом количестве неудачных вызовов # и перенаправляет логику в альтернативный способ обработки вызова circuitbreaker: configs: default: # Процент ошибок, при котором запрос будет перенаправляться в резервные методы failureRateThreshold: 50 # Процент медленных запросов, при котором запрос будет перенаправляться в резервные методы slowCallRateThreshold: 50 # Время, по истечении которого запрос будет считаться медленным slowCallDurationThreshold: 5s # Количество вызовов, разрешённых в полуоткрытом состоянии permittedNumberOfCallsInHalfOpenState: 5 # Тип скользящего окна, которое используется для результатов вызовов в закрытом состоянии (COUNT_BASED/TIME_BASED) slidingWindowType: COUNT_BASED # Размер скользящего окна slidingWindowSize: 100 # Автоматический переход от открытого состояния в полуоткрытое automaticTransitionFromOpenToHalfOpenEnabled: true # Время, по истечении которого состояние circuitbreaker переходит из открытого состояния в полуоткрытое waitDurationInOpenState: 5s # Минимальное количество вызовов для расчёта ошибок и медленных вызовов minimumNumberOfCalls: 20 instances: eventlog: baseConfig: default flussonic: baseConfig: default slowCallDurationThreshold: 3s waitDurationInOpenState: 20s ivideon: baseConfig: default slowCallDurationThreshold: 3s waitDurationInOpenState: 20s |
# Ограничитель вызова метода по времени timelimiter: configs: default: # Время, через которое вызов прерывается timeoutDuration: 10s instances: eventlog: baseConfig: default flussonic: baseConfig: default timeoutDuration: 3s ivideon: baseConfig: default timeoutDuration: 3s # Ограничитель по количеству одновременных вызовов метода bulkhead: configs: default: # Максимальное количество параллельных вызовов, разрешённых bulkhead maxConcurrentCalls: 20 instances: eventlog: baseConfig: default flussonic: baseConfig: default maxConcurrentCalls: 10 ivideon: baseConfig: default maxConcurrentCalls: 10 # Повтор. Отмеченный метод вызывается несколько раз: либо до успеха, либо до максимального количества попыток retry: configs: default: # Максимальное количество попыток (включая первый запрос) maxAttempts: 2 # Время ожидания между попытками (мс) waitDuration: 500 instances: eventlog: baseConfig: default flussonic: baseConfig: default ivideon: baseConfig: default |
# параметры для формирования ссылок к 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 oauth2: # Время жизни access-токена в секундах. Должно быть не менее 5 секунд accessTokenTimeToLive: 3600 # Конфигурация jetty jetty: # Время простоя соединения connection-idle-timeout: 120000ms max-http-form-post-size: 200000B # Конфигурация потоков threads: acceptors: -1 selectors: -1 # Время простоя потока idle-timeout: 120000ms # Минимальное количество потоков min: 32 # Максимальное количество потоков max: 256 # Максимальный размер очереди задач для потоков max-queue-capacity: 32768 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" #Адрес локально развернутого сервера, временное решение для стыковки с android. ApiKey также локальный. video: flussonic: url: "{{ flussonic_url }}" apiKey: "{{ flussonic_api_key }}" operator_id: "{{ flussonic_operator_id }}" admin_login: "{{ flussonic_admin_login }}" fake_camera_url: "rtsp://34.227.104.115/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. springdoc: swagger-ui: enabled: {{ 'true' if swagger_enable else 'false' }} key: "" controller: delay_answer_from_control_millisec: 12000 yandex-skill: client-id: "IdChangeMe" client-password: "PasswordChangeMe" scriptengine: cycledScripts: stepDelay: {{ script_step_delay }} criticalRepetition: {{ script_critical_repetition }} maxDelay: {{ script_max_delay }} stoppable: {{ 'true' if script_stoppable else 'false' }} |
Параметры конфигурационного файла:
Параметры:
- duplicate_delay_sec — период времени, в течение которого будет блокироваться дубликат сообщения (полностью совпадающий), задается в секундах;
- antispam_time_sec — период времени, в течение которого будет блокироваться отправка последующих однотипных сообщений (не полностью совпадающих, например "Контроллер вне доступа 1", "Контроллер вне доступа 2" и т. д.), задается в секундах;
- delay_push_time_millisec — задержка между отложенными push-уведомлениями, задается в миллисекундах.
Порты, используемые платформой по умолчанию:
По окончании установки и конфигурирования сервер 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 |
Параметры, на которые следует обратить внимание:
Необходимо следить, чтобы пакеты не копились в очереди на контроллер. Если такое происходит, значит веб-сокет этого контроллера недоступен, и нужно проверить событие и время события в лог-файлах платформы.
Проверить наличие ошибок в логе
Лог-файлы платформы по умолчанию находятся в /storage/iot/core/var/log/eltex-sc/server*. Они разбиваются на части по размеру. Чтобы проверить все журналы на наличие некоторого параметра за определенную дату (например за 15 января 2022 года) и записать результаты в файл, выполните команду:
grep <значение для поиска> server-2022-01-15* > <имя файла для вывода> |
Если требуется, можно дописать следующие опции после значения для поиска:
Общий вид команды:
grep -i -n -A 5 -B 2 error server-2022-01-15* > errors.log |
Ключевые слова для поиска:
Проверить доступность веб-интерфейса
Самый простой способ проверить доступность веб-интерфейса платформы — открыть его в браузере (по IP или доменному имени — в зависимости от настроек сети и сервера).
Можно проверить доступность API платформы. Для этого в адресной строке браузера к URL веб-интерфейса платформы допишите:
<Адрес сервера Eltex SC>:<порт API>/api/v1/version |
где порт API — вышеуказанный порт доступа к API по HTTP (по умолчанию 8071/8073). Платформа должна моментально вернуть данные об установленной версии платформы, версии API и текущем времени на сервере в формате JSON.
Пример вывода:
{ "version" : "1.23-3477", "api" : "1.0", "currentTime" : "2022-07-25T09:24:12.544842Z[Etc/UTC]" } |
Сервис eltex-notification-gw представляет собой интерфейс для отправки e-mail и sms-оповещений пользователям платформы. Eltex-notification-gw обеспечивает взаимодействие компонентов платформы с внешними SMS-шлюзами, call-центрами и серверами электронной почты.
Для настройки сервиса необходимо отредактировать конфигурационный файл /etc/ansible-iot-1.23/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 |
Ваш сертификат должен иметь формат PKCS#8. |
Способ определения типа сертификата
# head -1 /tmp/eltex-sc-api.key -----BEGIN PRIVATE KEY----- # head -1 /storage/iot/ssl/private/eltex-sc-api.key -----BEGIN RSA PRIVATE KEY----- |
Если ваш сертификат имеет кодировку PKCS#1, необходимо конвертировать его в PKCS#8.
Пример конвертирования сертификата из PKCS#1 в PKCS#8, letsencrypt:
openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in путь_до_ключа -out имя_для_нового_ключа. |