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

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

Версия ПО 1.21

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

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

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

Число абонентовдо 5 000до 10 000до 20 000
Число аппаратных серверов1122
CPU (потоки, частота)4T 3.0 GHz8T 3.0 GHz4T 3.0 GHz X28T 3.0 GHz X2
RAM, ГБ101810+1018+18
HDD, ГБ100020001000+10002000+2000


Внимание!

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


Поддерживаемые дистрибутивы: Ubuntu 20.04.

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

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

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

Поддерживаемые дистрибутивы: Ubuntu 20.04.

В инструкции приведена установка платформы Eltex SC на операционную систему Ubuntu 20.04.

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

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

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

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

Установка Ansible

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

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

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

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

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

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

Добавление коллекций и подготовка конфигурации

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

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

Установка коллекций
ansible-galaxy collection install community.general
ansible-galaxy collection install community.crypto
ansible-galaxy collection install community.docker

Настройка сервера

1) После установки Ansible подготовьте конфигурацию.

Для получения файлов конфигурации необходимо обратиться с запросом в Коммерческий отдел ЭЛТЕКС.

Файлы конфигурации направляются в виде архива tar.gz, который необходимо распаковать в директорию /etc с правами root .

Пример:

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

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

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

2) Далее отредактируйте файл /etc/ansible-iot-1.21/inventory

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

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

При инсталляции необходимо указать валидный пароль!

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


3) Далее настройте параметры доступа к платформе.

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

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

Содержимое конфигурационного файла vars/default.yml
server_name: ip_адрес_сервера
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-адрес) сервера, на котором будет производиться развертывание
  • use_external_mongodb — если выставлен в true, будет использоваться внешняя 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 — email владельца домена. Необходим для подтверждения валидности домена при получении сертификата 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.21"
registry: hub.eltex-co.ru
services:
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

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

  • iot_release — версия релизных core & web;
  • registry — имя репозитория docker registry, хранящего docker-образы для развертывания. Менять не рекомендуется;
  • services — список сервисов для перезапуска (при запуске плейбука services_restart.yml). Можно оставить пустым, а при запуске передавать параметром командной строки (опционально).
  • 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;

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

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

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

Проверка статуса контейнеров
docker ps
Вывод команды docker ps
CONTAINER IDIMAGE COMMANDCREATEDSTATUSPORTSNAMES
2bed00cc8fcehub.eltex-co.ru/iot/iot-double-web:1.21/docker-entrypoint.…2 minutes agoUp 2 minutes
iot_web_1
7da2459eaebfhub.eltex-co.ru/iot/iot-core:1.21java -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_1
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_1
db768b63d849mongodocker-entrypoint.s…2 minutes agoUp 2 minutes0.0.0.0:27017->27017/tcp, :::27017->27017/tcpiot_db_1


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

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

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

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

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

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

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

В случае развертывания внешней БД mongo, т.е. при инсталляции с внешним процессом/службой 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.21.tar.gz

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

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

5) Далее отредактируйте файл /etc/ansible-iot-1.21/inventory.

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

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

При инсталляции необходимо указать валидный пароль!

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

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

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

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

Содержимое конфигурационного файла vars/default.yml
server_name: ip_адрес_сервера
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) Откройте файл default.yml в любом доступном текстовом редакторе, например, nano.  Для параметра export_mongo_port необходимо установить значение true.

Содержимое конфигурационного файла /vars/service_parameters.yml
---
iot_release: "1.21"
registry: hub.eltex-co.ru
services:
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


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

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

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

Данный адрес был ранее указан в переменной server_name файла конфигурации /etc/ansible-iot-1.21/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.21/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.21/vars/default.yml (например параметры flussonic-сервера). При запуске платформы параметры, заданные в файле конфигурации /etc/ansible-iot-1.21/vars/default.yml, имеют наивысший приоритет по отношению к другим файлам конфигурации, а также ведут к их перезаписи.


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

testData:
  environment: false

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

logger:
  mongodb: ERROR
  springdata: ERROR

controllerGateTCP:
  port: 8069

controllerGate:
  port: 8070

controllerGateSecurity:
  port: 8072

api:
  port: 8071
  sslPort: 8073

ui:
  port: {{ web_http_port }}

mqttBroker:
  enabled: true
  host: "broker"
  port: 8883
  apiPort: 8083
  remoteAccessURL: "{{ server_name }}:8883"
olapservice:
  host: "olapservice"
  port: 8023

hystrix:
  eventlog:
    timeoutInMilliseconds: 1000
    requestVolumeThreshold: 20
    errorThresholdPercentage: 50
    sleepWindowInMilliseconds: 5000

defaultUrl: "{{ web_sc_uri }}"

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

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

  push:
    serverKey: 

dictionary:
  path: "dict.json"

languageInterface:
  language: "ru"

hz:
  instance:
    name: "iot-core-hz-instance"
  group:
    name: "iot-core"
    password: "11111"
  network:
    port: "5705"

mjollnir:
  sync-period: "0 0 23 1/1 * ?"
  login: "platform"
  password: "platform"
  url: "http://92.125.152.58:8078/api/v1"

iot-core:
  host: "{{ mongodb_addr }}"
  port: {{ mongodb_port }}
  user: ""
  password: ""
  database: "iot-core"
file-storage:
  host: "{{ mongodb_addr }}"
  port: {{ mongodb_port }}
  user: ""
  password: ""
  database: "iot-fs"

license-storage:
  host: "{{ mongodb_addr }}"
  port: {{ mongodb_port }}
  user: ""
  password: ""
  database: "iot-licenses"

eventlog:
  host: "{{ mongodb_addr }}"
  port: {{ mongodb_port }}
  user: ""
  password: ""
  database: "iot-events"

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://34.227.104.115/vod/mp4:BigBuckBunny_115k.mov"

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:
  enable: false
  key: ""

controller:
  delay_answer_from_control_millisec: 12000


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

  • testData — порт сервера;
  • controllerGate port — порт сервера, к которому подключаются контроллеры, по умолчанию 8070;
  • controllerGateSecurity port — порт сервера, к которому подключаются контроллеры c использованием сертификата SSL, по умолчанию 8072;
  • api port — порт сервера для взаимодействия с API платформы через веб-интерфейс или мобильное приложение;
  • api sslPort — порт сервера для взаимодействия с API платформы через веб-интерфейс или мобильное приложение с использованием SSL-сертификата;
  • ui — порт, указываемый при формировании ссылок в письмах оповещений и т.д., например для функционала Восстановление пароля;
  • defaultUrl — адрес платформы при формировании ссылок в письмах оповещений и т.д., например для функционала Восстановление пароля;
  • services — настройки внешних сервисов для работы с платформой;
  • logger — уровень логирования сервера. Для включения режима debug выставить у mongodb: DEBUG;
  • electricMeterScheduler — параметр, отвечающий за автоматический опрос устройства платформой (опрос выполняется каждые 30 минут, начиная от начала часа по умолчанию). Пример: cron: 3 0/1 * * * ? — опрос каждые 3 минуты;
  • electricMeterArchiveScheduler — параметр, отвечающий за автоматический опрос архива устройства платформой;
  • mqttBroker — настройка сервиса MQTT;
  • video — настройка видеосервиса Flussonic;
  • proxy — настройка прокси-сервера;
  • billing — настройка сервиса биллинга;
  • guard — настройка задержки перед постановкой на охрану;
  • swagger — сервис для взаимодействия и просмотра API платформы Eltex SC. Для доступа необходимо обратиться к :8071/api/v1/swagger-ui.html#/admin-logger-api-controller.
  • controller: delay_answer_from_control_millisec — настройка задержки ожидания ответа от контроллера;
  • notifications — настройка защиты сервиса push-уведомлений.

Параметры:

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

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

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

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

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

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

Во всех случаях, чтобы войти в платформу, нужно указать ее адрес и номер порта. В общем случае в адресную строку браузера вводится следующее: <Адрес сервера 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.21-3116",
  "api" : "1.0",
  "currentTime" : "2021-12-29T17:54:16.278+07:00[Asia/Novosibirsk]"
}

Настройка почтовых e-mail и sms-оповещений eltex-notification-gw (eltex-ngw)

Описание

Сервис представляет собой интерфейс для взаимодействия компонентов платформы c внешними SMS-шлюзами, call-центрами и серверами электронной почты. Служит для отправки уведомлений пользователям платформы, а также пользователям Wi-Fi.

Конфигурация

/etc/ansible-iot-1.21/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.


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

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


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

# 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.
  • Нет меток