Предварительная установка дополнительного ПО на сервере
Для запуска Offline ELM на сервере требуется произвести установку дополнительного ПО:
1. Установить последнюю стабильную версию Docker. Рекомендуется использовать версию 27.5.x. Установка производится с помощью официальной документации, в зависимости от используемой операционной системы.
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
Структура архива:
Архив должен быть загружен на целевой сервер и распакован в любой удобной для дальнейшей эксплуатации директории.
У администраторов 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
Первоначальное конфигурирование в ручном режиме
Для запуска Offline ELM требуется произвести следующие шаги:
1. Перейти в директорию с содержимым распакованного архива.
2. Распаковать архив elm-offline-data-1.5-1.tar.gz с файлами, необходимыми для работы Offline ELM.
3. Открыть файл .env любым удобным текстовым редактором.
4. Для переменной ELM_TAG указать версию Offline ELM 1.5-1:
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 можно командой:
$ getent group docker| cut -d: -f3 999
DOCKER_GROUP_ID="999"
7. Установить другие переменные окружения при необходимости. Полный список переменных окружения Offline ELM 1.5-1.
8. Загрузить образы 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, если он установлен, остановлен:
# 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.
# systemctl stop pcscd.socket
Запуск сервисов Offline ELM
Запуск сервисов Offline ELM на одном хосте
1. Перейдите в папку с конфигурационными файлами Offline ELM, где расположены docker-compose.yml файлы.
2. Запустите Offline ELM командой:
$ docker compose up -d
3. После запуска убедитесь, что все контейнеры Offline ELM запустились корректно (имеют статус "running (healthy)"):
$ 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. Выполнить следующую команду:
$ docker compose --file docker-compose-cli.yml run --rm elmi-offline-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:
$ 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 командой:
$ docker compose -f docker-compose-remote.yml up -d
7. После запуска убедитесь, что все контейнеры Offline ELM запустились корректно (имеют статус "running (healthy)"):
$ 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.
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 можно командой:
$ getent group docker| cut -d: -f3 999
DOCKER_GROUP_ID="999"
7. Установите другие переменные окружения при необходимости. Полный список переменных окружения Offline ELM 1.5-1.
8. Загрузите образы 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, если он установлен, остановлен:
# 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.
# systemctl stop pcscd.socket
12. Перейдите в папку с конфигурационными файлами Offline ELM, где расположены docker-compose.yml файлы.
13. Запустите Offline ELM командой:
$ docker compose up -d
14. После запуска убедитесь, что все контейнеры Offline ELM запустились корректно (имеют статус "running (healthy)"):
$ 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. Выполнить следующую команду:
$ docker compose --file docker-compose-cli.yml run --rm elmi-offline-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:
$ 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. Выполнить команду:
$ 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 командой:
$ docker compose down --remove-orphans
5. Произвести резервное копирование всех рабочих файлов в текущей директории:
$ 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/
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 командой:
$ docker compose up -d
10. После запуска убедиться, что все Docker-контейнеры сервисов Offline ELM запустились корректно (имеют статус "running (healthy)"):
$ docker compose ps
11. Запустить Offline ELM CLI и, введя команду "show elm" в разделе "main" CLI, убедиться, что версия Offline ELM сервисов стала 1.5-1:
Обновление Offline ELM завершено.
Удаление Offline ELM
Для полного удаления Offline ELM с хоста требуется произвести следующие шаги:
1. Перейти в директорию с файлами работающего Offline ELM.
2. Выполнить команду:
$ docker compose down --remove-orphans --rmi all --volumes
В результате выполнения команды Offline ELM будет остановлен. В случае, если на момент выполнения команды он еще функционировал, будут удалены служебные сети, хранилища и образы в Offline.
3. Удалить оставшиеся от 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 в следующей иерархии:
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:
$ 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_HOST | IP-адрес хоста, на котором будет работать серверная часть Offline ELM (контейнер elmi-offline-server) | 0.0.0.0 | Нет | - |
ELM_SERVER_PORT | Номер порта для подключения к Offline ELM (контейнер elmi-offline-server) | 8099 | Нет | - |
ELM_DB_HOST | IP-адрес, на котором будет поднят порт для подключения к БД (контейнер 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 | Имя служебного пользователя БД сервера ELM | elm | Нет | - |
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" для сервисов ELM | info | Нет | info/debug |
ELM_NETWORKING_LOG_LEVEL | Уровень логирования логов типа "networking" для сервисов ELM | info | Нет | info/debug |
ELM_DEBUG_LOG_LEVEL | Уровень логирования логов типа "debug" для сервисов ELM | off | Нет | info/debug |
ELM_ENGINE_LOG_LEVEL | Уровень логирования логов типа "engine" для сервисов ELM | info | Нет | info/debug |
ELM_DB_LOG_LEVEL | Уровень логирования логов типа "db" для сервисов ELM | info | Нет | info/debug |
ELM_USERS_LOG_LEVEL | Уровень логирования логов типа "users" для сервисов ELM | info | Нет | info/debug |
ELM_SECURITY_LOG_LEVEL | Уровень логирования логов типа "security" для сервисов ELM | info | Нет | info/debug |
ELM_HOSTS_LOG_LEVEL | Уровень логирования логов типа "hosts" для сервисов ELM | info | Нет | info/debug |
ELM_COMMERCE_LOG_LEVEL | Уровень логирования логов типа "commerce" для сервисов ELM | info | Нет | info/debug |
ELM_CLI_KERNEL_LOG_LEVEL | Уровень логирования логов типа "kernel" для CLI ELM | error | Нет | error/debug |
ELM_CLI_DEBUG_LOG_LEVEL | Уровень логирования логов типа "debug" для CLI ELM | off | Нет | off/debug |
ELM_CLI_DB_LOG_LEVEL | Уровень логирования логов типа "db" для CLI ELM | error | Нет | error/debug |
ELM_CLI_NETWORKING_LOG_LEVEL | Уровень логирования логов типа "networking" для CLI ELM | error | Нет | error/debug |
ELM_PCSCD_LOG_LEVEL | Уровень логирования логов для демона pcscd | off | Нет | 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 | Нет | - |