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

Версия ПО 1.9

Требования к серверу

Для стабильной работы сервер должен отвечать следующим требованиям:

  • операционная система Linux с поддержкой Docker: Ubuntu Server 20.04 (рекомендуется), Astra Linux 1.7.1, RedOS 7.3.1;

  • объем оперативной памяти от 12 ГБ;

  • процессор, поддерживающий виртуализацию и имеющий от четырех ядер;

  • от 100 ГБ свободного места на жестком диске;

  • наличие сетевого интерфейса 1 Гбит/с.

Получение привилегий sudo без дополнительного ввода пароля (опционально)

От имени непривилегированного пользователя выполните команду:

echo "$(whoami)    ALL=(ALL) NOPASSWD: ALL" | sudo EDITOR='tee -a' visudo

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


Установка ECCM

Установочный архив

Файлы, необходимые для запуска проекта, распространяются в виде tar-архива. Их можно получить с общедоступного FTP-сервера. Загрузите архив на сервер и распакуйте его. Рекомендуется распаковывать архив в заранее созданную отдельную директорию.

Пример команд:

wget "https://cloud.eltex-co.ru/index.php/s/QWdrv71vNVWNCbh/download?path=%2F&files=eccm-1.9.tar.gz" -O eccm-1.9.tar.gz
mkdir eccm
sudo tar -zxvf eccm-1.9.tar.gz -C eccm/

Установка docker и docker-compose 

С версии 1.9 ЕССМ поддерживает отечественные операционные системы Astra Linux (рекомендуемая версия 1.7.1) и RedOS (рекомендуемая версия 7.3.1).

Наиболее простой и быстрый способ установки — перейти в директорию, в которую был распакован установочный архив, и воспользоваться скриптом compose-tools.sh, используя флаг --install:

cd eccm
sudo ./compose-tools.sh --install

Для проверки установленного docker можно выполнить команду:

docker --version

Для проверки установленного docker-compose в Ubuntu можно выполнить команды:

docker compose version

При установке на операционные системы Astra Linux и RedOS команда проверки версии установленного docker-compose имеет вид:

docker-compose version

Запуск ECCM

Проект ECCM распространяется в виде набора файлов, позволяющих запустить все необходимые сервисы с помощью docker-compose. Проект разделен на три docker-стека:

  • база данных (PostgreSQL 14.5);
  • провайдер авторизации (OSS на основе ORY Hydra и Oathkeeper);
  • стек сервисов ECCM. 

Такое разделение обусловлено необходимостью обеспечения горизонтального масштабирования проекта и возможности интеграции с другими проектами компании, например Eltex.EDM.

Подробнее в разделе "v1.9 Векторы сетевого взаимодействия".

Скрипт для запуска ECCM

Ввиду большого количества параметров запуска системы, был подготовлен скрипт, выполняющий запуск проекта на одном или нескольких хостах с параметрами производительности, позволяющими обслуживать около 100 устройств. Фактическая производительность зависит от многих факторов, включающих производительность аппаратной части и сложность обслуживаемых сетевых устройств. Для вызова справочной информации перейдите в каталог со скриптом и введите команду:

sudo ./compose-tools.sh -h

Список всех используемых ключей и их описание можно найти в разделе "Используемые опции compose-tools.sh".

Запуск ECCM на одном хосте

Для запуска проекта перейдите в директорию с файлами установочного архива и выполните команду:

sudo ./compose-tools.sh --start <ECCM ADDRESS>

, где **ECCM ADDRESS**  это IP-адрес, по которому будет выполняться подключение к серверу. Например, если адрес сервера 100.110.2.2, команда будет выглядеть:

sudo ./compose-tools.sh --start 100.110.2.2

Скрипт применяет указанный в ECCM ADDRESS адрес к запускаемым контейнерам, но при этом не перезаписывает его в файлах с переменными. Чтобы при запуске использовать адрес, указанный в файлах с переменными, пропишите ключ --start без указания адреса ECCM ADDRESS.


Для остановки проекта выполните команду:

sudo ./compose-tools.sh --stop

Запуск ЕССМ с базой данных на отдельном сервере

ECCM Application Server  — сервер, на котором развернуто приложение, обеспечивающее работу системы и взаимодействие с устройствами, а также web-интерфейс пользователя.

Database Server  — сервер с базами данных Postgres14. Возможно использование уже существующего в инфраструктуре кластера.

Device Management Network  — IP-сеть управления оборудованием, через которые ECCM имеет доступ по L3.

Operator/Administrator  — оператор системы, занимающийся мониторингом и настройкой подконтрольного оборудования/системный администратор компании или сотрудники техподдержки ELTEX, если есть договоренность об удаленном доступе.

Для случая, когда необходимо запустить ЕССМ на нескольких серверах (один сервер — для базы данных Postgres, второй сервер — для остального стека сервисов ЕССМ), возможно использовать опцию многохостовой установки.

Для этого:

1. Установите docker и docker-compose на обоих серверах согласно разделу Установка ЕССМ.

2. Настройка сервера с базами данных.

2.1. Для переопределения логина/пароля/временной зоны/ограничения ОЗУ для работы с БД отредактируйте файл "postgres/.env". Для изменения параметров, влияющих на производительность базы данных, отредактируйте файл "postgres/data/postgresql.conf" (настройки по умолчанию достаточны для тестового запуска и поддержки около 100 устройств.).

2.2. Запустите базу данных PostgreSQL на сервере с БД.

Для запуска БД перейдите в директорию eccm/postgres и выполните команду для запуска контейнера:

cd eccm/postgers
docker compose up -d


3. Настройка сервера с приложениями

3.1. Для переопределения переменных, определяющих поведение группы контейнеров, отвечающих за авторизацию пользователя в системе ECCM (адрес сервиса identity-provider; внешний адрес БД; логин и пароль для доступа БД), отредактируйте файл "identity-provider/.env".  Для переопределения переменных, отвечающих за поведение проекта (адрес web-интерфейса; временной зоны; адрес БД; логин/пароль для доступа к БД и проч.) отредактируйте файл "eccm/.env".

3.2. Выполните запуск ЕССМ на сервере с ЕССМ с помощью следующей команды:

sudo ./compose-tools.sh --start <ECCM ADDRESS> --external-database <DB ADDRESS>:<PORT>

, где <DB ADDRESS> и <PORT> это IP-адрес и порт, по которым будет выполняться подключение к серверу БД. Например, если адрес сервера ЕССМ 100.110.2.2, адрес сервера БД 100.110.2.4, порт сервера БД 5432, то команда будет выглядеть:

sudo ./compose-tools.sh --start 100.110.2.2 --external-database 100.110.2.4:5432

Переменные окружения

Файлы, необходимые для запуска ECCM и содержащие переменные окружения и конфигурации, находятся в директории, в которую был распакован установочный архив:

postgres/.env
postgres/data/postgresql.conf​
identity-provider/.env
​eccm/.env

postgres/.env

В postgres/.env содержатся переменные, определяющие поведение БД Postgres при ее запуске в контейнере. В таблице ниже представлено описание данных переменных:

ПеременнаяЗначение по умолчаниюОписание
COMPOSE_PROJECT_NAMEpostgresНазвание проекта в docker-compose (используется для идентификации, в случае если на сервере запущено несколько проектов)
POSTGRES_USER
Параметр, позволяющий переопределить логин по умолчанию для доступа к базе данных
POSTGRES_PASSWORD
Параметр, позволяющий переопределить пароль по умолчанию для доступа к базе данных
POSTGRES_TIMEZONEAsia/NovosibirskВременной пояс, в котором работает система (указывается в соответствии с tz database, например «Asia/Novosibirsk»)
POSTGRES_SHM_SIZE2gbОграничение выделенной оперативной памяти для работы с БД Postgres

postgres/data/postgresql.conf

Файл содержит параметры, влияющие на производительность базы данных. Настройки по умолчанию достаточны для тестового запуска и поддержки около 100 устройств. Для изменения конфигурации ECCM ознакомьтесь с полным Руководством пользователя или обратитесь в Службу технической поддержки ELTEX.

identity-provider/.env

В файле identity-provider/.env находятся переменные, определяющие поведение группы контейнеров, отвечающих за авторизацию пользователя в системе ECCM.

# Внешний адрес nginx proxy, необходимо задать корректный внешний адрес при инсталляции
IDENTITY_PROVIDER_WEB_ADDRESS=<IP сервера>
IDENTITY_PROVIDER_WEB_PORT=9090
​
## Postgres
# Внешний адрес контейнера Postgres, необходимо задать корректный внешний адрес при инсталляции
POSTGRES_HOST=<IP сервера>
POSTGRES_PORT=5432
POSTGRES_USER=tester
POSTGRES_PASSWORD=tester

В таблице ниже представлено описание данных переменных:

ПеременнаяЗначение по умолчаниюОписание
COMPOSE_PROJECT_NAMEeccmНазвание проекта в docker-compose (используется для идентификации, в случае если на сервере запущено несколько проектов)
ECCM_PROFILEproduction
IDENTITY_PROVIDER_TAG1.9
IDENTITY_PROVIDER_REGISTRYhub.eltex-co.ruАдрес docker-registry, с которого будет выполняться получение образов системы. Если используется локальное зеркало, то можно указать его адрес
IDENTITY_PROVIDER_WEB_ADDRESS192.168.0.1Адрес, на котором будет работать сервис identity-provider
IDENTITY_PROVIDER_WEB_PORT9090Порт для доступа к сервису identity-provider
POSTGRES_HOST192.168.0.1Адрес, на котором работает БД Postgres
POSTGRES_PORT5432Порт для доступа к БД Postgres
POSTGRES_USER
Параметр, позволяющий переопределить логин по умолчанию для доступа к базе данных
POSTGRES_PASSWORD
Параметр, позволяющий переопределить пароль по умолчанию для доступа к базе данных

CERT_PATH

./cert/server.crt
Путь к файлу с сертификатом для HTTPS

KEY_PATH

./cert/server.key
Путь к файлу с ключом для HTTPS

eccm/.env

В файле eccm/.env находятся переменные, определяющие поведение проекта.

COMPOSE_PROJECT_NAME=eccm  
                                                              
ECCM_PROFILE=production                               
ECCM_TAG=1.9                                                                                                             
ECCM_REGISTRY=hub.eltex-co.ru                                                                                               
                                                              
# Необходимо поменять на реальные адреса при инсталляции
ECCM_BACKBONE_ADDRESS=192.168.0.1
ECCM_WEB_ADDRESS=192.168.0.1
​
# Identity provider (external)                                                                                              
                                                                                                                            
# Необходимо указать реальный внешний адрес identity-provider
IDENTITY_PROVIDER_HOST=192.168.0.1
IDENTITY_PROVIDER_PORT=9090                     
IDENTITY_PROVIDER_PATH=/identity-provider
IDENTITY_PROVIDER_HYDRA_PUBLIC_PATH=/hydra/public                                                                                                                                                                                                        
IDENTITY_PROVIDER_HYDRA_ADMIN_PATH=/hydra/admin
​
ECCM_WEB_PORT=80
​
ECCM_TIMEZONE=Asia/Novosibirsk
ECCM_LOGLEVEL=INFO
​
# Количество одновременно выполняемых операций с устройствами
# Не может превышать количество ядер процессора
MAX_PARALLEL_TASKS=4
​
# HTTPS
CERT_PATH=./cert/server.crt
KEY_PATH=./cert/server.key
JAVA_CERT_PATH=/app/resources/cert/server.crt
ECCM_WEB_HTTPS_PORT=443


В таблице ниже представлено описание данных переменных:

ПеременнаяЗначение по умолчаниюОписание
COMPOSE_PROJECT_NAMEeccmНазвание проекта в docker-compose (используется для идентификации, в случае если на сервере запущено несколько проектов)
ECCM_PROFILEproduction
ECCM_TAG1.9
ECCM_REGISTRYhub.eltex-co.ruАдрес docker-registry, с которого будет выполняться получение образов системы. Если используется локальное зеркало, то можно указать его адрес
ECCM_BACKBONE_ADDRESS192.168.0.1Внутренний адрес, на котором будет работать система ECCM с устройствами в сети
ECCM_WEB_ADDRESS192.168.0.1Адрес, на котором будет работать web-интерфейс системы ECCM
IDENTITY_PROVIDER_HOST192.168.0.1Внешний адрес сервиса identity-provider
IDENTITY_PROVIDER_PORT9090Порт для доступа к сервису identity-provider
ECCM_WEB_PORT80Порт для доступа к web-интерфейсу
ECCM_TIMEZONEAsia/NovosibirskВременной пояс, в котором работает система (указывается в соответствии с tz database, например «Asia/Novosibirsk»)
ECCM_LOGLEVEL'INFO'Уровень логирования в проекте
MAX_PARALLEL_TASKS4Количество одновременно выполняемых операций с устройствами
ECCM_MONITORING_SERVER_MEM_HARD_LIMIT512MОграничение физической памяти для docker-контейнера
ECCM_MONITORING_WEB_MEM_HARD_LIMIT256MОграничение физической памяти для docker-контейнера
POSTGRES_HOST192.168.0.1Адрес, на котором работает БД Postgres
POSTGRES_PORT5432Порт для доступа к БД Postgres
POSTGRES_USER
Параметр, позволяющий переопределить логин по умолчанию для доступа к базе данных
POSTGRES_PASSWORD
Параметр, позволяющий переопределить пароль по умолчанию для доступа к базе данных
TFTP_POOL_SIZE100Параметр, определяющий количество потоков/подключений к TFTP-серверу

CERT_PATH

./cert/server.crt
Путь к файлу с сертификатом для HTTPS

KEY_PATH

./cert/server.key
Путь к файлу с ключом для HTTPS

JAVA_CERT_PATH

/app/resources/cert/server.crt
Путь к файлу с сертификатом для HTTPS внутри Java-сервисов

ECCM_WEB_HTTPS_PORT

443
Порт, на котором ECCM будет доступен по HTTPS

Доступ к web-интерфейсу

Для подключения к web-интерфейсу ECCM откройте браузер и в адресной строке введите следующее:

http://<IP-адрес вашего сервера (ECCM_WEB_ADDRESS)>/
По умолчанию используется логин 'eccm', пароль 'eccm'.

Известные проблемы и методы решения

Возможные ошибки при запуске проекта

Ошибка:

ERROR: Couldn't connect to Docker daemon at http+[docker://localhost](docker://localhost) - is it running?

Возможная причина: docker-демон не запущен. Для проверки выполните команду:

sudo systemctl status docker

Если в строке Active статус отличается от Active (running), причина определена верно.

Решение: запустить docker командой:

sudo systemctl start docker


Ошибка:

Got permission denied while trying to connect to the Docker daemon socket at [unix:///var/run/docker.sock]
(unix://intdocs.eltex.loc/var/run/docker.sock): Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/json:
dial unix /var/run/docker.sock: connect: permission denied

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

Решение 1 (рекомендуется): добавить пользователя в группу docker с помощью команды:

sudo usermod -aG docker $(whoami)

Решение 2: выполнять все операции с привилегиями root.

Ошибка:

Services starting...
Creating network "eccm_eltex-internal" with the default driver
ERROR: Pool overlaps with other one on this address space

Возможная причина: подсеть, указанная в ECCM_INTERNAL_SUBNETWORK, уже используется docker.

Решение: выбрать другую подсеть в файле .env. Просмотреть уже созданные docker-ом подсети можно с помощью команды:

sudo docker network inspect $(docker network ls --filter "DRIVER=bridge" --format '{{ .Name }}')  -f '{{ .Name  }} {{ (index .IPAM.Config 0).Subnet }}'

Возможные ошибки при остановке проекта

Ошибка:

ERROR: error while removing network: network eccm_eltex-internal id 324bd72dd9c107cf2ea48effb75d9e7ad2dfbc8f5f7317b89cd7f318d61d5c4b has active endpoints

Возможная причина: docker не полностью очистил кэш.

Решение: перезапуск docker с помощью команды:

sudo systemctl restart docker 

Рекомендации к оформлению заявок в техническую поддержку ECCM

Для получения консультации по работе системы обратитесь в Сервисный центр компании. Способы обращения указаны на последней странице данного руководства.

Для более быстрого и удобного взаимодействия с сотрудниками технической поддержки ECCM укажите при обращении следующую информацию:

1. Есть ли доступ в сеть Интернет с сервера, на котором разворачивается ПО (без доступа, прямой доступ, через NAT, через Proxy и т. п. ).
2. Когда возникла проблема (желательно указать как можно более точное время).
3. Скриншот или видеофайл, если проблема проявилась в GUI браузера.

Также настоятельно рекомендуется воспользоваться скриптом для сбора информации.

Скрипт сбора информации

Скрипт автоматизирует сбор метрик c системы ECCM, а затем упаковывает их в сжатый архив для более удобной транспортировки. Предназначен для выполнения на ОС Linux/Ubuntu.

Запуск скрипта:

1. Перейдите в директорию ~/eccm:

cd ~/eccm


2. Выполните следующую команду:

sudo ./technical_support.sh

Скрипт необходимо запускать в привилегированном режиме, иначе будут собраны не все данные.

3. Дождитесь, пока скрипт осуществит сбор информации.
4. В директорию будет загружен архив technical_support.tar.gz

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

Используемые опции compose-tools.sh

ОпцияОписание
--clean, -cОчистка всех контейнеров, томов и сетей.
--dhcpАктивация DHCP-сервера с поддержкой функциональности Zero Touch Provisioning (ZTP), автоматически добавляющей устройства в систему.
--external-database <ADDRESS>:<PORT>Подключение к внешней базе данных PostgreSQL, установленной на другом хосте. <ADDRESS> и <PORT>  IP-адрес и порт (по умолчанию: 5432) сервера БД соответственно. Не использовать, если на хосте с ЕССМ запущена БД PostgreSQL.
--help, -hВызов справочной информации.
--httpsАктивация режима поддержки https. Требует наличия сертификата.
--installУстановка Docker и Docker-compose на хост.
--interactive, -iЗапуск системы в интерактивном режиме. Использовать с ключом --start.
--loadЗагрузить все доступные архивы .tar.gz из директории с образами в docker.
--logging, -l <LEVEL>Задание уровня логирования для проекта ЕССМ. Доступные значения: DEBUG, INFO.
--metrics, -mЗапуск системы в режиме сбора метрик. В этом режиме запускается сервисы Grafana и Prometheus. Веб-интерфейс Grafana доступен по адресу http://<IP_ECCM>:3000
--pull, -pСкачивание/обновление образов перед запуском системы.
--rootlog <LEVEL>Задание уровня логгирования для всех проектов. Доступные значения: DEBUG, INFO.
--saveСохранение всех docker-образов в архивы .tar.gz
--start, -s <ADDRESS>Запуск системы с IP-адресом, по которому будет выполняться подключение к серверу.
--stopОстановка системы.
--storage <ADDRESS>Адрес ECCM в сети управления устройствами (backbone). Используется для хранения прошивок устройств.
--tracing, -t <ADDRESS>Активация сервиса трассировок Jaeger OpenTracing. Необходимо указать IP-адрес Jaeger-сервера.

Примеры использования


Для установки Docker и Docker-compose на хост выполните команду:

sudo ./compose-tools.sh --install


Для обновления образов всех контейнеров ECCM выполните команду:

sudo ./compose-tools.sh --pull



Для запуска проекта перейдите в директорию с файлами установочного архива и выполните команду:

sudo ./compose-tools.sh --start <ECCM ADDRESS>


Для запуска и подключения проекта к базе данных, установленной на другом хосте, выполните команду:

sudo ./compose-tools.sh --start <ECCM ADDRESS> --external-database <DB ADDRESS>:<PORT>


Для остановки проекта выполните команду:

sudo ./compose-tools.sh --stop


Для очистки всех контейнеров, томов и сетей ECCM выполните команду:

sudo ./compose-tools.sh --clean
При запуске скрипта с флагом --clean данные с БД Postgres также будут удалены. Данный флаг рекомендуется использовать только при полной деинсталляции ECCM с сервера.

Для запуска проекта с нужным уровнем логирования добавьте ключ --logging в строку запуска:

sudo ./compose-tools.sh --start <ECCM ADDRESS> --logging DEBUG

С версии 1.5 в проекте присутствует DHCP-сервер с поддержкой функциональности Zero Touch Provisioning (ZTP), автоматически добавляющей устройства в систему. По умолчанию сервер отключен. Для активации добавьте ключ --dhcp в строку запуска:

sudo ./compose-tools.sh --start <ECCM ADDRESS> --dhcp


Для сохранения всех образов контейнеров в архивы .tar.gz выполните команду:

sudo ./compose-tools.sh --save


Для преобразования архивов с образами (.tar.gz) в docker-образы выполните команду:

sudo ./compose-tools.sh --load

Настройка ротации логов docker

Настройки ротации логов контейнеров осуществляется с помощью конфигурационного файла /etc/docker/daemon.json. Ниже представлен пример конфигурационного файла daemon.json:

{
  "log-driver": "local",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3",
  }
}
  • "log-driver" — параметр, определяющий драйвер логирования;
  • "log-opts" — секция, определяющая параметры ротации логов;
    • "max-size" — максимальный размер лога перед сжатием. Положительное число с модификатором размера ("k", "m" или "g").
    • "max-file" — максимальное количество хранящихся лог-файлов.

Для применения изменений необходимо перезапустить демон dockerd:

sudo service docker restart
  • Нет меток