Предварительная установка дополнительного ПО на сервере

Для запуска Offline ELM на сервере требуется произвести установку дополнительного ПО:

1. Установить последнюю стабильную версию Docker. Рекомендуется использовать версию 27.5.x. Установка производится с помощью официальной документации, в зависимости от используемой операционной системы.

  • ALT Linux OS по инструкции для Ubuntu или Debian.
  • Red OS и Rosa Chrome по инструкции для Fedora.

2. Установить последнюю стабильную версию Docker Compose. Рекомендуется использовать версию v2.32.x. Установка производится с помощью официальной документации, в зависимости от используемой операционной системы.

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

Получение файлов для запуска Offline ELM 

Набор файлов, необходимых для запуска Offline ELM и сервисов мониторинга:

  • Актуальная версия (рекомендуется к установке): Offline ELM Last build.
  • Архивные версии Offline ELM (получение файлов для уже запущенных инсталляций): ELM Offline Archive.

Рисунок 1 — Скачивание файлов для запуска Offline ELM с ownCloud 

Структура архива:

Структура архива
.
├── elm-monitoring-data-1.5-1.tar.gz
├── elm-monitoring-images-1.5-1.tar.gz
├── elm-offline-data-1.5-1.tar.gz
├── elm-offline-images-1.5-1.tar.gz
├── dumper.sh
└── install-offline.sh

Архив должен быть загружен на целевой сервер и распакован в любой удобной для дальнейшей эксплуатации директории.

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

Первый запуск Offline ELM

Первоначальное конфигурирование с помощью скрипта инсталляции

1. Для упрощенного запуска Offline ELM поставляется скрипт инсталляции install-offline.sh.

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

Установка прав на исполнение скрипта
sudo chmod +x ./install-offline.sh

3. Посмотреть информацию о скрипте можно с помощью флага --help.

Информация о скрипте
$ ./install-offline.sh 
Script usage: ./install-offline.sh [OPTIONS]

Options:
  --elm-images <ARCHIVE>          path to archive with images
  --elm-data <ARCHIVE>            path to archive with config and compose files
  --monitoring-images <ARCHIVE>   path to archive with images for monitoring
  --monitoring-data <ARCHIVE>     path to archive with data for monitoring
  --env <FILE>                    path to .env file
                                  usage with option --elm-images
  --elm-dir <DIRECTORY>           path to directory where need to unpack archive with data files
                                  usage with option --elm-data
  --monitoring-dir <DIRECTORY>    path to directory where need to unpack archive with data files for monitoring
                                  usage with option --monitoring-data
  -h, --help                      output this help

Required options:
  One of the options --elm-images, --elm-data, --monitoring-images, --monitoring-data must be set

4. Пример запуска скрипта с распаковкой архива конфигурационных файлов и загрузкой образов из архивов.

Пример использования скрипта
$ ./install-offline.sh --elm-images elm-offline-images-1.5-1.tar.gz --elm-data elm-offline-data-1.5-1.tar.gz
INFO: Extract files:
elm-offline-data-1.5-1/
elm-offline-data-1.5-1/docker-compose.yml
elm-offline-data-1.5-1/docker-compose-cli.yml
elm-offline-data-1.5-1/docker-compose-remote.yml
elm-offline-data-1.5-1/docker-compose-db.yml
elm-offline-data-1.5-1/config/
elm-offline-data-1.5-1/config/promtail/
elm-offline-data-1.5-1/config/promtail/promtail.yaml
elm-offline-data-1.5-1/config/telegraf/
elm-offline-data-1.5-1/config/telegraf/telegraf.conf
elm-offline-data-1.5-1/.env
elm-offline-data-1.5-1/data/
elm-offline-data-1.5-1/data/elmi-offline-web-ui/
elm-offline-data-1.5-1/data/elmi-offline-web-ui/ssl/
elm-offline-data-1.5-1/data/elmi-offline-web-ui/ssl/autocreated-cert.crt
elm-offline-data-1.5-1/data/elmi-offline-web-ui/ssl/autocreated-cert.key
Loaded image: promtail:2.9.10
Loaded image: elmi-offline-server:1.5-1
Loaded image: elmi-offline-web-ui:1.5-1
Loaded image: pcscd:alpine
Loaded image: psql-elm:16.4
Loaded image: nginx-prometheus-exporter:1.3.0
Loaded image: elmi-offline-init:1.5-1
Loaded image: elmi-offline-cli:1.5-1
Loaded image: telegraf:1.30.0
Success!

5. В результате были загружены образы и распакованы конфигурационные файлы в папку elm-offline-data-1.5-1.

Папка с конфигурационными файлами
elm-offline-data-1.5-1
├── config
│   ├── promtail
│   │   └── promtail.yaml
│   └── telegraf
│       └── telegraf.conf
├── data
│   └── elmi-offline-web-ui
│       └── ssl
│           ├── autocreated-cert.crt
│           └── autocreated-cert.key
├── docker-compose-cli.yml
├── docker-compose-db.yml
├── docker-compose-remote.yml
├── docker-compose.yml
└── .env

6 directories, 9 files
Проверка загруженных образов
$ docker images
REPOSITORY                  TAG       IMAGE ID       CREATED         SIZE
elmi-offline-web-ui         1.5-1     6469058750f2   11 days ago     28.6MB
elmi-offline-cli            1.5-1     0d59359797aa   11 days ago     738MB
elmi-offline-init           1.5-1     f450caa74468   11 days ago     16.4MB
elmi-offline-server         1.5-1     def82681866d   11 days ago     758MB
psql-elm                    16.4      e9fe4c37cbbc   3 weeks ago     432MB
pcscd                       alpine    ec1a3fdbde2f   6 weeks ago     37MB
promtail                    2.9.10    c122c6874c01   6 months ago    200MB
nginx-prometheus-exporter   1.3.0     9f62ef61d1ab   7 months ago    12.6MB
telegraf                    1.30.0    7942930461a6   11 months ago   453MB

Первоначальное конфигурирование в ручном режиме

Для запуска Offline ELM требуется произвести следующие шаги:

1. Перейти в директорию с содержимым распакованного архива.

2. Распаковать архив elm-offline-data-1.5-1.tar.gz с файлами, необходимыми для работы Offline ELM.

3. Открыть файл .env любым удобным текстовым редактором.

4. Для переменной ELM_TAG указать версию Offline ELM 1.5-1:

Пример минимальной конфигурации env файла для запуска
ELM_TAG="1.5-1"

5. Установить в переменной ELM_INSTANCE_ID номер инстанса (ноды) текущей инсталляции Offline ELM. Если это единственная инсталляция, то "ELM_INSTANCE_ID=node1". Если используется резервирование Offline ELM, то на одной ноде "ELM_INSTANCE_ID=node1", а на второй — "ELM_INSTANCE_ID=node2".

ELM_INSTANCE_ID задается при первом запуске Offline ELM и не должен меняться в течение работы. При необходимости смены значения ELM_INSTANCE_ID требуется полная переустановка Offline ELM.

Установка номера ноды
ELM_INSTANCE_ID=node1

6. Для мониторинга состояния контейнеров Telegraf необходимо предоставить ему доступ к сокету Docker демона, для этого необходимо передать id группы пользователей docker. Установить в переменной DOCKER_GROUP_ID значение группы пользователя docker. Узнать id группы docker можно командой:

Группа docker пользователя
$ getent group docker| cut -d: -f3 
999
Установка переменной DOCKER_GROUP_ID
DOCKER_GROUP_ID="999"

7. Установить другие переменные окружения при необходимости. Полный список переменных окружения Offline ELM 1.5-1.

8. Загрузить образы Offline ELM из архива на хост:

Загрузка образов Offline ELM из архива
$ docker load < elm-offline-images-1.5-1.tar.gz

9. Проверить загруженные образы:  

Проверка загруженных образов
$ docker images
REPOSITORY                  TAG       IMAGE ID       CREATED         SIZE
elmi-offline-web-ui         1.5-1     6469058750f2   11 days ago     28.6MB
elmi-offline-cli            1.5-1     0d59359797aa   11 days ago     738MB
elmi-offline-init           1.5-1     f450caa74468   11 days ago     16.4MB
elmi-offline-server         1.5-1     def82681866d   11 days ago     758MB
psql-elm                    16.4      e9fe4c37cbbc   3 weeks ago     432MB
pcscd                       alpine    ec1a3fdbde2f   6 weeks ago     37MB
promtail                    2.9.10    c122c6874c01   6 months ago    200MB
nginx-prometheus-exporter   1.3.0     9f62ef61d1ab   7 months ago    12.6MB
telegraf                    1.30.0    7942930461a6   11 months ago   453MB

10. Убедиться, что токен вставлен и был обнаружен системой:

Проверка наличия токена в системе
$ lsusb | grep "Aktiv Rutoken ECP"
Bus 001 Device 008: ID 0a89:0030 Aktiv Rutoken ECP

11. Убедиться, что демон pcscd, если он установлен, остановлен:

Проверка статуса демона pcscd
# service pcscd status
● pcscd.service - PC/SC Smart Card Daemon
     Loaded: loaded (/lib/systemd/system/pcscd.service; indirect; vendor preset: enabled)
     Active: active (running) since Fri 2024-07-26 14:11:30 +07; 1s ago
TriggeredBy: ● pcscd.socket
       Docs: man:pcscd(8)
   Main PID: 1639189 (pcscd)
      Tasks: 5 (limit: 38220)
     Memory: 1.1M
        CPU: 12ms
     CGroup: /system.slice/pcscd.service
             └─1639189 /usr/sbin/pcscd --foreground --auto-exit

июл 26 14:11:30 user-pc systemd[1]: Started PC/SC Smart Card Daemon.

Остановка демона pcscd
# systemctl stop pcscd.socket

Запуск сервисов Offline ELM 

Запуск сервисов Offline ELM на одном хосте

1. Перейдите в папку с конфигурационными файлами Offline ELM, где расположены docker-compose.yml файлы.

2. Запустите Offline ELM командой:

Команда запуска Offline ELM
$ docker compose up -d

3. После запуска убедитесь, что все контейнеры Offline ELM запустились корректно (имеют статус "running (healthy)"):

Команда проверки статуса контейнеров Offline ELM
$ docker compose ps


Теперь с Offline ELM можно взаимодействовать через интерфейс командной строки, далее CLI или через web-интерфейс (при проблемах с подключением, можно ознакомиться со статьей Сбор диагностических данных и решение проблем, раздел "Не получается зайти в web-интерфейс").

После первого запуска Offline ELM в текущем каталоге появятся новые директории:

  • db — содержит файлы базы данных, используемой в Offline ELM;
  • log — содержит логи сервисов Offline ELM.

4. Запустите CLI Offline ELM. 

Для запуска CLI требуется произвести следующие действия:

4.1.  Перейти в директорию с файлом docker-compose-cli.yml.

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

Команда для запуска CLI Offline ELM
$ docker compose --file docker-compose-cli.yml run --rm elmi-offline-cli

Пример вывода команды при успешном запуске Offline ELM CLI
$ docker compose --file docker-compose-cli.yml run --rm elmi-offline-cli
WARN[0000] Found orphan containers ([elmi-offline-web-ui promtail elmi-offline-server telegraf elmi-offline-init elmi-offline-db nginx-exporter elm-token]) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up. 
2025-02-26T02:34:54.510Z  INFO 1 --- [           main] org.eltex.elm.cli.Launcher               : Starting Launcher using Java 21.0.2 with PID 1 (/classes started by root in /)
2025-02-26T02:34:54.516Z  INFO 1 --- [           main] org.eltex.elm.cli.Launcher               : No active profile set, falling back to 1 default profile: "default"
2025-02-26 02:34:55,303 INFO  c.z.h.HikariDataSource.getConnection (line:110) - HikariPool-1 - Starting...
2025-02-26 02:34:55,476 INFO  c.z.h.p.HikariPool.checkFailFast (line:565) - HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@36061cf3
2025-02-26 02:34:55,478 INFO  c.z.h.HikariDataSource.getConnection (line:123) - HikariPool-1 - Start completed.
2025-02-26 02:34:55,575 INFO  l.l.c.JavaLogger.log (line:37) - Set default schema name to public
2025-02-26 02:34:55,920 INFO  l.l.c.JavaLogger.log (line:37) - Reading from public.elm_database_changelog
2025-02-26 02:34:56,018 INFO  l.l.c.JavaLogger.log (line:37) - Database is up to date, no changesets to execute
2025-02-26 02:34:56,020 INFO  l.l.c.JavaLogger.log (line:37) - Reading from public.elm_database_changelog
2025-02-26 02:34:56,031 INFO  l.l.c.JavaLogger.log (line:37) - UPDATE SUMMARY
2025-02-26 02:34:56,032 INFO  l.l.c.JavaLogger.log (line:37) - Run:                          0
2025-02-26 02:34:56,033 INFO  l.l.c.JavaLogger.log (line:37) - Previously run:               4
2025-02-26 02:34:56,034 INFO  l.l.c.JavaLogger.log (line:37) - Filtered out:                 0
2025-02-26 02:34:56,034 INFO  l.l.c.JavaLogger.log (line:37) - -------------------------------
2025-02-26 02:34:56,034 INFO  l.l.c.JavaLogger.log (line:37) - Total change sets:            4
2025-02-26 02:34:56,037 INFO  l.l.c.JavaLogger.log (line:37) - Update summary generated
2025-02-26 02:34:56,057 INFO  l.l.c.JavaLogger.log (line:37) - Successfully released change log lock
2025-02-26 02:34:56,059 INFO  l.l.c.JavaLogger.log (line:37) - Command execution complete
2025-02-26 02:34:56,113 INFO  o.r.Reflections.scan (line:219) - Reflections took 25 ms to scan 1 urls, producing 5 keys and 5 values
2025-02-26 02:34:56,155 INFO  o.r.Reflections.scan (line:219) - Reflections took 35 ms to scan 2 urls, producing 8 keys and 143 values
*** Eltex License Manager CLI 1.5 ***
*** Input 'help' to view available commands ***
 > main
   settings
   license
   users
   iprules
elmi> 

В результате выполнения команды пользователь получит доступ к CLI Offline ELM. 

5. Выполните инсталляцию бандла Offline ELM.

Для установки бандла Offline ELM необходимо выполнить следующие действия:

5.1. Скопировать файл бандла в папку share/ в корне Offline ELM. Запустить CLI Offline ELM:

Запуск CLI Offline ELM
$ docker compose --file docker-compose-cli.yml run --rm elmi-offline-cli

5.2. В разделе "main" выполнить команду инсталляции бандла "install bundle --file"

Инсталляция бандла
elmi> install bundle --file /share/NICE000001.bundle
You will install offline licensing bundle from '/share/NICE000001.bundle'. Are you sure? (y/N) y
License data registration command 85b2d1e4-b8dd-3c54-bf62-cf37d46aff6f (node1) is created. Please wait...
elmi> License data registration command 85b2d1e4-b8dd-3c54-bf62-cf37d46aff6f (node1) is done!
elmi> 

Запуск сервисов Offline ELM с удаленной базой данных

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

2. Установите переменные  ELM_TAG , ELM_DB_HOST и ELM_DB_PORT  в .env файле. Иначе интерфейс из контейнера elmi-offline-db не будет проброшен на хост, и база данных не будет доступна.

Установка переменных окружения
ELM_TAG="1.5-1"
ELM_INSTANCE_ID=node1
ELM_DB_HOST=192.168.1.2
ELM_DB_PORT=5432

3. Запустите контейнеры БД командой. При этом, если это первый запуск, контейнер elmi-offline-db может иметь состояние unhealthy — это корректное поведение. Состояние healthy установится после подключения к базе данных сервера Offline ELM (контейнер elmi-offline-db).

Запуск базы данных
$ docker compose -f docker-compose-db.yml up -d

4. Перейдите в папку с конфигурационными файлами Offline ELM на другом сервере, где расположен docker-compose-remote.yml файл. 

5. Установите переменные окружения ELM_TAG, ELM_DB_CONNECT_HOST и ELM_DB_CONNECT_PORT в соответствии с необходимыми значениями:

Установка переменных окружения
ELM_TAG="1.5-1"
ELM_INSTANCE_ID=node1
ELM_DB_CONNECT_HOST=192.168.1.2
ELM_DB_CONNECT_PORT=5432

6. Запустите Offline ELM командой:

Команда запуска Offline ELM
$ docker compose -f docker-compose-remote.yml up -d

7. После запуска убедитесь, что все контейнеры Offline ELM запустились корректно (имеют статус "running (healthy)"):

Команда проверки статуса контейнеров Offline ELM
$ docker compose ps

Запуск второй ноды Offline ELM

Для обеспечения высокой доступности можно запустить два экземпляра Offline ELM.
В продукте ELM используются два понятия для обозначения экземпляров серверов: нода (node) и инсталляция (Instance ID). В контексте продукта данные понятия равнозначны, но чаще используется понятие "нода". По умолчанию при запуске сервера Offline ELM используется значение node1, а для подключения второй ноды необходимо в переменных окружения ELM_INSTANCE_ID в файле .env указать значение node2. 

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

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

2. Распакуйте архив elm-offline-data-1.5-1.tar.gz с файлами, необходимыми для работы Offline ELM.

3. Откройте файл .env любым удобным текстовым редактором.

4. Для переменной ELM_TAG укажите тег 1.5-1. 

Пример минимальной конфигурации env файла для запуска
ELM_TAG="1.5-1"

5. Установите в переменной ELM_INSTANCE_ID номер инстанса (ноды) текущей инсталляции Offline ELM. Для второй ноды необходимо установить "ELM_INSTANCE_ID=node2":

ELM_INSTANCE_ID задается при первом запуске Offline ELM и не должен меняться в течение работы. При необходимости смены значения ELM_INSTANCE_ID требуется полная переустановка Offline ELM.

Установка номера ноды
ELM_INSTANCE_ID=node2

6. Для мониторинга состояния контейнеров Telegraf необходимо предоставить ему доступ к сокету Docker демона, для этого необходимо передать id группы пользователей docker. Установить в переменной DOCKER_GROUP_ID значение группы пользователя docker. Узнать id группы docker можно командой:

Группа docker пользователя
$ getent group docker| cut -d: -f3 
999
Установка переменной DOCKER_GROUP_ID
DOCKER_GROUP_ID="999"

7. Установите другие переменные окружения при необходимости. Полный список переменных окружения Offline ELM 1.5-1.

8. Загрузите образы Offline ELM из архива на хост:

Загрузка образов Offline ELM из архива
$ docker load < elm-offline-images-1.5-1.tar.gz

9. Проверьте загруженные образы:  

Проверка загруженных образов
$ docker images
REPOSITORY                  TAG       IMAGE ID       CREATED         SIZE
elmi-offline-web-ui         1.5-1     6469058750f2   11 days ago     28.6MB
elmi-offline-cli            1.5-1     0d59359797aa   11 days ago     738MB
elmi-offline-init           1.5-1     f450caa74468   11 days ago     16.4MB
elmi-offline-server         1.5-1     def82681866d   11 days ago     758MB
psql-elm                    16.4      e9fe4c37cbbc   3 weeks ago     432MB
pcscd                       alpine    ec1a3fdbde2f   6 weeks ago     37MB
promtail                    2.9.10    c122c6874c01   6 months ago    200MB
nginx-prometheus-exporter   1.3.0     9f62ef61d1ab   7 months ago    12.6MB
telegraf                    1.30.0    7942930461a6   11 months ago   453MB

Для каждой ноды Offline ELM должен быть свой токен. Токены взаимозаменяемые между нодами. Запуск более чем одной ноды Offline ELM с одним токеном невозможен. 

10. Убедитесь, что токен вставлен и был обнаружен системой. 

Проверка наличия токена в системе
$ lsusb | grep "Aktiv Rutoken ECP"
Bus 001 Device 008: ID 0a89:0030 Aktiv Rutoken ECP

11. Убедитесь, что демон pcscd, если он установлен, остановлен:

Проверка статуса демона pcscd
# service pcscd status
● pcscd.service - PC/SC Smart Card Daemon
     Loaded: loaded (/lib/systemd/system/pcscd.service; indirect; vendor preset: enabled)
     Active: active (running) since Fri 2024-07-26 14:11:30 +07; 1s ago
TriggeredBy: ● pcscd.socket
       Docs: man:pcscd(8)
   Main PID: 1639189 (pcscd)
      Tasks: 5 (limit: 38220)
     Memory: 1.1M
        CPU: 12ms
     CGroup: /system.slice/pcscd.service
             └─1639189 /usr/sbin/pcscd --foreground --auto-exit

июл 26 14:11:30 user-pc systemd[1]: Started PC/SC Smart Card Daemon.

Остановка демона pcscd
# systemctl stop pcscd.socket

12. Перейдите в папку с конфигурационными файлами Offline ELM, где расположены docker-compose.yml файлы.

13. Запустите Offline ELM командой:

Команда запуска Offline ELM
$ docker compose up -d

14. После запуска убедитесь, что все контейнеры Offline ELM запустились корректно (имеют статус "running (healthy)"):

Команда проверки статуса контейнеров Offline ELM
$ docker compose ps

Теперь с Offline ELM можно взаимодействовать через интерфейс командной строки, далее CLI.

После первого запуска Offline ELM в текущем каталоге появятся новые директории:

  • db — содержит файлы базы данных, используемой в Offline ELM;
  • log — содержит логи сервисов Offline ELM.

15. Запустите CLI Offline ELM. 

Для запуска CLI требуется произвести следующие действия:

15.1.  Перейти в директорию с файлом docker-compose-cli.yml.

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

Команда для запуска CLI Offline ELM
$ docker compose --file docker-compose-cli.yml run --rm elmi-offline-cli

Пример вывода команды при успешном запуске Offline ELM CLI
$ docker compose --file docker-compose-cli.yml run --rm elmi-offline-cli
WARN[0000] Found orphan containers ([elmi-offline-web-ui promtail elmi-offline-server telegraf elmi-offline-init elmi-offline-db nginx-exporter elm-token]) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up. 
2025-02-26T02:34:54.510Z  INFO 1 --- [           main] org.eltex.elm.cli.Launcher               : Starting Launcher using Java 21.0.2 with PID 1 (/classes started by root in /)
2025-02-26T02:34:54.516Z  INFO 1 --- [           main] org.eltex.elm.cli.Launcher               : No active profile set, falling back to 1 default profile: "default"
2025-02-26 02:34:55,303 INFO  c.z.h.HikariDataSource.getConnection (line:110) - HikariPool-1 - Starting...
2025-02-26 02:34:55,476 INFO  c.z.h.p.HikariPool.checkFailFast (line:565) - HikariPool-1 - Added connection org.postgresql.jdbc.PgConnection@36061cf3
2025-02-26 02:34:55,478 INFO  c.z.h.HikariDataSource.getConnection (line:123) - HikariPool-1 - Start completed.
2025-02-26 02:34:55,575 INFO  l.l.c.JavaLogger.log (line:37) - Set default schema name to public
2025-02-26 02:34:55,920 INFO  l.l.c.JavaLogger.log (line:37) - Reading from public.elm_database_changelog
2025-02-26 02:34:56,018 INFO  l.l.c.JavaLogger.log (line:37) - Database is up to date, no changesets to execute
2025-02-26 02:34:56,020 INFO  l.l.c.JavaLogger.log (line:37) - Reading from public.elm_database_changelog
2025-02-26 02:34:56,031 INFO  l.l.c.JavaLogger.log (line:37) - UPDATE SUMMARY
2025-02-26 02:34:56,032 INFO  l.l.c.JavaLogger.log (line:37) - Run:                          0
2025-02-26 02:34:56,033 INFO  l.l.c.JavaLogger.log (line:37) - Previously run:               4
2025-02-26 02:34:56,034 INFO  l.l.c.JavaLogger.log (line:37) - Filtered out:                 0
2025-02-26 02:34:56,034 INFO  l.l.c.JavaLogger.log (line:37) - -------------------------------
2025-02-26 02:34:56,034 INFO  l.l.c.JavaLogger.log (line:37) - Total change sets:            4
2025-02-26 02:34:56,037 INFO  l.l.c.JavaLogger.log (line:37) - Update summary generated
2025-02-26 02:34:56,057 INFO  l.l.c.JavaLogger.log (line:37) - Successfully released change log lock
2025-02-26 02:34:56,059 INFO  l.l.c.JavaLogger.log (line:37) - Command execution complete
2025-02-26 02:34:56,113 INFO  o.r.Reflections.scan (line:219) - Reflections took 25 ms to scan 1 urls, producing 5 keys and 5 values
2025-02-26 02:34:56,155 INFO  o.r.Reflections.scan (line:219) - Reflections took 35 ms to scan 2 urls, producing 8 keys and 143 values
*** Eltex License Manager CLI 1.5 ***
*** Input 'help' to view available commands ***
 > main
   settings
   license
   users
   iprules
elmi> 

В результате выполнения команды пользователь получит доступ к CLI Offline ELM. 

16. Выполните инсталляцию бандла Offline ELM. 

Бандл Offline ELM является универсальным для каждой ноды, если запускается более одной инсталляции Offline ELM.

Для установки бандла Offline ELM необходимо выполнить следующие действия:

16.1. Скопировать файл бандла в папку share/ в корне Offline ELM. Запустить CLI Offline ELM:

Запуск CLI Offline ELM
$ docker compose --file docker-compose-cli.yml run --rm elmi-offline-cli

16.2. В разделе "main" выполнить команду инсталляции бандла "install bundle --file"

Инсталляция бандла
elmi> install bundle --file /share/NICE000001.bundle
You will install offline licensing bundle from '/share/NICE000001.bundle'. Are you sure? (y/N) y
License data registration command 85b2d1e4-b8dd-3c54-bf62-cf37d46aff6f (node1) is created. Please wait...
elmi> License data registration command 85b2d1e4-b8dd-3c54-bf62-cf37d46aff6f (node1) is done!
elmi> 

17. Убедитесь в корректности настройки второй ноды, выполнив команду "show elm", и увидев номер текущей ноды и версию.

Инсталляция бандла
elmi> show elm 
ELM host:
1. Instance: node2
Hostname: ELM standalone
Build version: Version 1.5, build 1, date 14-02-2025 03:40:45 +0000
Status: work
Last updated: 1740539202 (2025-02-26 03:06:42)
Next update: 1740539502 (2025-02-26 03:11:42)
Certificate info: 

	Valid from: 1740538865 (2025-02-26 03:01:05)
	Expiry: 1740563825 (2025-02-26 09:57:05)
	Token serial number: 429b3c49        


elmi> 

Остановка Offline ELM 

Для остановки Offline ELM требуется произвести следующие шаги:

 1. Перейти в директорию с файлами работающего Offline ELM.

 2. Выполнить команду:

Команда остановки всех контейнеров Offline ELM
$ docker compose down --remove-orphans

Обновление Offline ELM с версии 1.4-20 на 1.5-1

Для обновления Offline ELM с версии 1.4-20 на 1.5-1 требуется произвести следующие шаги:

1. Скачать конфигурационные файлы и образы новой версии по инструкции Получение файлов для запуска Offline ELM

2. Распаковать скачанный архив elm-offline-data-1.5-1.tar.gz.

3. Перейти в директорию с compose файлами работающего Offline ELM (по умолчанию наименование директории elm-offline-1.4-20).

4. Остановить Offline ELM командой:

Команда остановки Offline ELM
$ docker compose down --remove-orphans

5. Произвести резервное копирование всех рабочих файлов в текущей директории:

Пример формирования резервной копии служебных файлов Offline ELM
$ zip -q -r elm-offline-data-1.4-20_backup.zip elm-offline-data-1.4-20/

После формирования резервной копии всех служебных файлов её рекомендуется перенести в другую директорию на хосте или на удаленный сервер для сохранности сформированной резервной копии.

6. Скопировать в текущую директорию следующие файлы и директории с заменой из распакованного архива в пункте 2: 

  • docker-compose.yml
  • docker-compose-cli.yml
  • config/promtail/
Копирование конфигурационных файлов версии 1.5
cp elm-offline-data-1.5-1/docker-compose.yml elm-offline-1.4-20/docker-compose.yml
cp elm-offline-data-1.5-1/docker-compose-cli.yml elm-offline-1.4-20/docker-compose-cli.yml
cp -r elm-offline-data-1.5-1/config/promtail/ elm-offline-1.4-20/config/

7. В файле .env указать новое значение переменной ELM_TAG:

Изменить тег версии
ELM_TAG="1.5-1"

8. Для удобства можно изменить имя папки, в которой находятся конфигурационные файлы Offline ELM. Например следующим образом:

Переименование директории с указанием текущей версии
mv elm-offline-data-1.4-20 elm-offline-data-1.5-1

Или не указывать конкретную версию Offline ELM, чтобы в будущем обновлять сервис не изменяя имени директории.

Переименование директории без указания версии
mv elm-offline-data-1.4-20 elm-offline-data

9. Запустить Offline ELM командой:

Команда запуска Offline ELM
$ docker compose up -d

10. После запуска убедиться, что все Docker-контейнеры сервисов Offline ELM запустились корректно (имеют статус "running (healthy)"):

Команда проверки статуса контейнеров Offline ELM
$ docker compose ps


11. Запустить Offline ELM CLI и, введя команду "show elm" в разделе "main" CLI, убедиться, что версия Offline ELM сервисов стала 1.5-1:

Пример проверки версии сервисов Offline ELM с помощью команды "show elm"
elmi> show elm 
ELM host:
1. Instance: node1
Hostname: ELM standalone
Build version: Version 1.5, build 1, date 14-02-2025 03:40:45 +0000
Status: work
Last updated: 1740545279 (2025-02-26 04:47:59)
Next update: 1740545579 (2025-02-26 04:52:59)
Certificate info: 

	Valid from: 1740538865 (2025-02-26 03:01:05)
	Expiry: 1740563825 (2025-02-26 09:57:05)
	Token serial number: 429b3c49        


elmi> 

Обновление Offline ELM завершено.

Удаление Offline ELM

Для полного удаления Offline ELM с хоста требуется произвести следующие шаги:

 1. Перейти в директорию с файлами работающего Offline ELM.

 2. Выполнить команду:

Команда для удаления Offline ELM с хоста
$ docker compose down --remove-orphans --rmi all --volumes 

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

3. Удалить оставшиеся от Offline ELM каталоги и служебные файлы:

Удаление директории с конфигурационными файлами Offline ELM
# rm -rf elm-offline-data-1.5-1

Offline ELM полностью удален с хоста. 

Просмотр логов сервисов Offline ELM

Логи сервисов Offline ELM можно разбить на две группы:

  • логи, которые пишутся в отдельные файлы в файловой системе хоста (все логи системы Offline ELM);
  • логи, которые пишутся в систему логирования Docker (все логи системы Offline ELM + логи контейнера elm-token).

Данные логи расположены в директории log в рабочем каталоге Offline ELM в следующей иерархии: 

Структура файловых логов сервисов Offline ELM
log/
├── elmi-cli
│   ├── db.log
│   ├── debug.log
│   ├── kernel.log
│   └── networking.log
└── elmi-server
    ├── commerce.log
    ├── db.log
    ├── debug.log
    ├── engine.log
    ├── hosts.log
    ├── kernel.log
    ├── networking.log
    ├── resources.log
    ├── security.log
    └── users.log

2 directories, 14 files

Логи разбиты по файлам, в каждый файл пишутся логи соответствующего функционала Offline ELM: 

  • db.log — логи взаимодействия сервиса Offline ELM с БД Offline ELM;

  • debug.log — отладочные логи сервиса Offline ELM;

  • engine.log и kernel.log — логи операций сервиса Offline ELM;

  • hosts.log — логи доступа хостов к Offline ELM;

  • networking.log — логи сетевого взаимодействия сервиса Offline ELM с другими компонентами системы ELM;

  • security.log — логи событий безопасности Offline ELM.

Для каждого файла отрабатывает ротация, которая настраивается параметрами "ELM_LOG_FILE_MAX_SIZE" и "ELM_LOG_FILE_MAX_COUNT" в .env файле в рабочем каталоге Offline ELM. 

Для просмотра логов можно использовать инструменты Docker или плагина Docker Compose:

Пример вывода логов сервиса elmi-offline-init, записанных в систему логирования Docker
$ docker logs elmi-offline-init
Fri Jul 26 15:26:17 +07 2024: Setting elmi-offline config files
Fri Jul 26 15:26:17 +07 2024: Setting elmi-offline-cli config files
Fri Jul 26 15:26:17 +07 2024: ELM_DB_USER variable has changed
Fri Jul 26 15:26:17 +07 2024: ELM_DB_PASSWORD variable has changed
Fri Jul 26 15:26:27 +07 2024: Connecting to database ... 1
Fri Jul 26 15:26:27 +07 2024: Successfully connected to database
Fri Jul 26 15:26:27 +07 2024: Setting instanceID variable value
Fri Jul 26 15:26:27 +07 2024: Setting instanceID variable value
Fri Jul 26 15:26:27 +07 2024: Docker containers elmi-offline is ready to start

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

Список переменных окружения Offline ELM

Название параметраОписание параметраЗначение по умолчаниюОбязательность параметраВарианты значений/Примечания
ELM_TAG

Версия используемых ELM образов в формате "<версия ELM>-<номер сборки>"

-Да1.5-1/1.4-2 и т. д.
ELM_INSTANCE_IDОпределяет основной или резервный серверnode1Нетnode1/node2
ELM_SERVER_HOSTIP-адрес хоста, на котором будет работать серверная часть Offline ELM (контейнер elmi-offline-server)0.0.0.0Нет-
ELM_SERVER_PORTНомер порта для подключения к Offline ELM (контейнер elmi-offline-server)8099Нет-
ELM_DB_HOSTIP-адрес, на котором будет поднят порт для подключения к БД (контейнер elmi-offline-db)127.0.0.1Нет-
ELM_DB_PORTНомер порта, на котором развернута БД (контейнер elmi-offline-db)5432Нет-
ELM_DB_CONNECT_HOSTИмя хоста (или IP-адрес) для подключения соответствующего приложения к БД (к контейнеру elmi-offline-db)elmi-offline-dbНет-
ELM_DB_CONNECT_PORTНомер порта для подключения соответствующего приложения к БД (к контейнеру elmi-offline-db)5432Нет-
ELM_DB_USERИмя служебного пользователя БД сервера ELMelmНет-
ELM_DB_PASSWORDПароль служебного пользователя БД ELM-Нет-
ELM_THREAD_LIMITМаксимальное количество одновременно поддерживаемых сессий10Нет-
ELM_QUEUE_LIMITМаксимальный размер очереди клиентов, ожидающих подключения100Нет-
ELM_DOS_FILTER_MAX_REQUESTS_PER_SECONDМаксимальная частота запросов в секунду от одного хоста, превышение которой приведет к блокировке50Нет-
ELM_DOS_FILTER_DELAY_MSМаксимальное время отклика хоста, превышение которого приведет к блокировке200Нет-
ELM_LOG_FILE_MAX_SIZEМаксимальный размер одного log-файла в МБ10Нет-
ELM_LOG_FILE_MAX_COUNTМаксимальное количество log-файлов в ротации4Нет-
ELM_KERNEL_LOG_LEVELУровень логирования логов типа "kernel" для сервисов ELMinfoНетinfo/debug
ELM_NETWORKING_LOG_LEVELУровень логирования логов типа "networking" для сервисов ELMinfoНетinfo/debug
ELM_DEBUG_LOG_LEVELУровень логирования логов типа "debug" для сервисов ELMoffНетinfo/debug
ELM_ENGINE_LOG_LEVELУровень логирования логов типа "engine" для сервисов ELMinfoНетinfo/debug
ELM_DB_LOG_LEVELУровень логирования логов типа "db" для сервисов ELMinfoНетinfo/debug
ELM_USERS_LOG_LEVELУровень логирования логов типа "users" для сервисов ELMinfoНетinfo/debug
ELM_SECURITY_LOG_LEVELУровень логирования логов типа "security" для сервисов ELMinfoНетinfo/debug
ELM_HOSTS_LOG_LEVELУровень логирования логов типа "hosts" для сервисов ELMinfoНетinfo/debug
ELM_COMMERCE_LOG_LEVELУровень логирования логов типа "commerce" для сервисов ELMinfoНетinfo/debug
ELM_CLI_KERNEL_LOG_LEVELУровень логирования логов типа "kernel" для CLI ELMerrorНетerror/debug
ELM_CLI_DEBUG_LOG_LEVELУровень логирования логов типа "debug" для CLI ELMoffНетoff/debug
ELM_CLI_DB_LOG_LEVELУровень логирования логов типа "db" для CLI ELMerrorНетerror/debug
ELM_CLI_NETWORKING_LOG_LEVELУровень логирования логов типа "networking" для CLI ELMerrorНетerror/debug

ELM_PCSCD_LOG_LEVEL

Уровень логирования логов для демона pcscdoffНетoff/debug
COMMON_TZЧасовой пояс, используемый для работы всех сервисовUTCНет-
ELM_WEB_UI_PORTПорт web-интерфейса на Docker-хосте 8092Нет-
DOCKER_GROUP_IDДобавление пользователя Docker в контейнер-НетDocker Daemon Permissions
LOKI_ADDRESSАдрес, используемый для подключения promtail к loki    lokiНет-
LOKI_PORTПорт, используемый для подключения promtail к loki    3100Нет-

  • Нет меток