Обновление Alertix

При обновлении Платформы с версии 3.4 и более ранних необходимо предварительно обновить Платформу до версии 3.5, потом до 3.8.0.
При обновлении Платформы до версии 3.7.0 перед обновлением управляемых хостов необходимо предварительно обновить core-кластер.
При обновлении Платформы до версии 3.8.0 удалите WEC ресивер и установите заново.

Перед обновлением Alertix на версию 3.8 необходимо:

1. Удалить дубликаты ресурсов по домену (поле "domain") и имени пользователя (поле "username") из инвентаризационной информации:

sudo docker exec -u postgres postgres psql -d alertix -c "DELETE FROM resources r1 USING resources r2 WHERE r1.id < r2.id AND (lower(r1.domain) = lower(r2.domain) or lower(r1.username) = lower(r2.username))"

2. Обновить пакеты и ядро ОС, после чего перезагрузиться:

sudo apt update -y && sudo apt upgrade -y
sudo reboot

3. Установить дополнительный системный пакет postgresql-client:

sudo apt install postgresql-client

4. Настроить хосты для работы с Java

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

Используйте команду:

jlink --verbose --add-modules ALL-MODULE-PATH --compress 2 --strip-debug --no-header-files --no-man-pages --output /usr/lib/jvm/java-jlink

В результате по пути /usr/lib/jvm/java-jlink будет сформирован набор компонентов для работы Java.

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

ln -nfs /usr/lib/jvm/java-jlink /usr/lib/jvm/jdk

Эта ссылка будет использоваться контейнерами, обеспечивающими работу Платформы. Передача ссылки в контейнер осуществляется с помощью томов. Том в Docker представляет собой файловую систему, существующую вне контейнера, и может быть подключен к одному или нескольким контейнерам. По умолчанию приложения в Docker-контейнерах являются stateless. Это означает, что приложение не оставляет данных после своей работы. Поэтому в Docker предусмотрены различные методы для хранения данных. Bind mount реализует следующий принцип работы: файл с данными хранится на хосте и открывается внутри контейнера.

Подробнее ознакомиться с работой Jlink можно по ссылке. Пример работы с Jlink.

Устранение ошибок

При выполнении команд может возникнуть ошибка:

Error: java.io.IOException: Cannot run program "objcopy": error=2, No such file or directory

Данная ошибка указывает на отсутствие утилиты objcopy. Установите ее с помощью следующих команд:

Для DEB подобных систем:

apt -y install binutils

Для RPM подобных систем:

yum install binutils

Подробнее о программе objcopy

5. Установить Java на хост

Для установки Java используются два типа пакетов: DEB и RPM.

Проверка версии Java

Перед установкой необходимо проверить, наличие Java версии 21. Для этого выполните следующую команду:

which java
echo $?

Если команда echo $? возвращает 0, значит Java уже установлена. Узнать текущую версию можно с помощью команды:

java --version

Пример вывода:

openjdk 11.0.24 2024-07-16
OpenJDK Runtime Environment (build 11.0.24+8-post-Ubuntu-1ubuntu322.04)
OpenJDK 64-Bit Server VM (build 11.0.24+8-post-Ubuntu-1ubuntu322.04, mixed mode, sharing)

Если версия Java не соответствует требуемой (например, установлена Java 11 вместо Java 21), необходимо удалить существующую версию и установить нужную.

Установка для DEB подобных систем

Выполните команду:

apt update
apt -y install openjdk-21-jdk-headless

Создаем ссылку с помощью Jlink:

jlink --verbose --add-modules ALL-MODULE-PATH --compress 2 --strip-debug --no-header-files --no-man-pages --output /usr/lib/jvm/java-jlink
ln -nfs /usr/lib/jvm/java-jlink /usr/lib/jvm/jdk

Установка для RPM подобных систем

Выполните команду:

dnf check-update
dnf install -y java-21-openjdk-headless java-21-openjdk-devel java-21-openjdk-jmods

Создаем ссылку с помощью Jlink:

jlink --verbose --add-modules ALL-MODULE-PATH --compress 2 --strip-debug --no-header-files --no-man-pages --output /usr/lib/jvm/java-jlink
ln -nfs /usr/lib/jvm/java-jlink /usr/lib/jvm/jdk

Для обновления платформы Alertix необходимо выполнить следующие действия:

1. Выполнить команду и дождаться завершения процесса обновления:

sudo dpkg -i alertix_<version>.deb
sudo apt -f install

Ход выполнения скриптов обновления сохраняется в операционной системе по стандартному пути /var/log/apt/term.log. При необходимости, можно дополнительно сохранить вывод в отдельный локальный файл, например

sudo dpkg -i alertix_<version>.deb | tee -a alertix.log

2. Перейти в веб-интерфейс Платформы.

3. На вкладке "Обслуживание" перейти в раздел "Кластеры". Выбрать core-кластер и нажать кнопку "Обновить кластер" для обновления подключенного к Платформе core-кластера.

Если при обновлении была допущена ошибка, перейдите на страницу Обслуживание > Мониторинг, выберите core-кластер и нажмите кнопку "Devtools". На открывшейся странице выполните команду:

DELETE *-stream

4. На вкладке "Обслуживание" перейти в раздел "Управление хостами". Нажать кнопку refresh grey для обновления подключенного к Платформе хоста.

5. На вкладке "Обслуживание" перейти в раздел "Обновление ПО". На странице отображается список установленных компонентов, адрес узла кластера, установленная версия и перечень доступных версий для обновления. Автоматически будут обновлены компоненты agents, backend, frontend, database. Для отдельных компонентов (сервисов, ресиверов), которые требуется обновить, необходимо нажать кнопку update blue "Обновление до выбранной версии", выбрать версию и нажать "Установить".

image
Рисунок 1.
image
Рисунок 2.
После того, как основные компоненты backend, frontend будут обновлены до версии 3.7.0 Платформа позволяет продолжить использование предыдущих версий отдельных компонентов.

Для настройки подключения к репозиторию нажмите кнопку "Репозиторий". Заполните поля URL, логин, пароль и нажмите "Сохранить". Если синхронизация уже была настроена ранее, поля будут предзаполнены.