1. УСТАНОВКА И ОБНОВЛЕНИЕ WISLA

Программные требования

Перед началом установки убедитесь, что сервер соответствует следующим программным требованиям.

Предварительные условия
Аппаратные требования (минимальные/рекомендуемые)

Минимальные:

Рекомендуемые:

Поддерживаемые операционные системы

Система wiSLA поддерживает развертывание на серверах со следующими 64-битными (x86_64) операционными системами:

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

Зависимости
Требования к браузерам для работы с веб-порталом

Для корректной работы с веб-интерфейсом (порталом) wiSLA используйте актуальные версии браузеров:

Сетевые доступы

Используемые сетевые доступы представлены в таблице. 

Описание Адреса источников Адрес назначения Протокол Порт назначения
web portal access clients (lan) wisla-01 TCP 8080,8443,80,443
Utest agent agent UDP 8787
TWAMP agent agent UDP 10862
telnet wisla-01 agent TCP 5555
UDP agent-server agent-client UDP 5001
MTU agent-server agent-client UDP 5002
SNMP wisla-01 snmp UDP 161
agent-to-wisla agent wisla-01 TCP 8080,8443,80,443

Инструкция по ручному развертыванию Kafka для Wisla

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

Этап 1. Переход под пользователя wisla:

На первом этапе  необходимо перейти под пользователя Wisla используя команду:

sudo su - wisla
Если пользователь wisla еще не существует в системе его необходимо создать используя следующие команды пошагово.

1.Команда создания пользователя:

sudo useradd -d /home/wisla -m -s /bin/bash wisla

2.Команда установки пароля:

sudo passwd wisla

3.Добавление пользователя в файлы sudoers:

echo "wisla    ALL=(ALL:ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/wisla

4.Настройка системных лимитов для пользователя wisla:

# Создаем файл лимитов
cat > /etc/security/limits.d/wisla << 'EOF'
wisla   soft      nofile  32768
wisla   hard     nofile  32768
wisla   soft      nproc   32768
wisla   hard     nproc   32768
EOF

5. Добавляем в PAM (если нет):

echo "session required pam_limits.so" >> /etc/pam.d/common-session

 

Этап 2. Подготовка каталога kafka.

После перехода под пользователя wisla вам необходимо создать каталог где будет располагаться портативная Java и  бинарный дистрибутив Kafka использую следующие команды:


1.Создание директории в /opt/:

sudo mkdir -p /opt/kafka

 2.Проверить кому принадлежит каталог kafka:

ls -l /opt/

3.Сменить пользователя для каталога kafka если принадлежит не wisla используя следующую команду:

sudo chown wisla:wisla /opt/kafka

Этап 3. Копирование архива Java:

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

1.Скопируем его в домашнюю директорию wisla используя следующую команду:

cp OpenJDK17U-jdk_x64_linux_hotspot_17.0.17_10.tar.gz /home/wisla/

2.Переходим в каталог kafka используя следующую команду:

cd /opt/kafka

3.Распаковка Java:

tar -xzf ~/OpenJDK17U-jdk_x64_linux_hotspot_17.0.17_10.tar.gz

4.Проверяем результат распаковки Java:

ls -la /opt/kafka/

5.Устанавливаем переменную окружения:

export JAVA_HOME="/opt/kafka/jdk-17.0.17+10"
export PATH="$JAVA_HOME/bin:$PATH"

6.Проверяем версию Java:

java -version

Этап 4. Копирование архива Kafka:

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

1.Копируем архив Kafka в домашнюю директорию:

cp kafka_2.13-4.1.1.tgz /opt/kafka/

2.Переходим в каталог kafka используя следующую команду:

cd /opt/kafka

3.Распаковываем Kafka в /opt/kafka:

tar -xzf ~/kafka_2.13-4.1.1.tgz --strip-components=1 -C /opt/kafka

4.Проверяем результат распаковки Kafka:

ls -la /opt/kafka/bin/kafka-server-start.sh

5.Создаем дополнительные рабочие директории для Kafka:

mkdir -p /opt/kafka/logs
mkdir -p /opt/kafka/config
mkdir -p /opt/kafka/config/kraft

sudo mkdir -p /var/lib/kafka
sudo chown wisla:wisla /var/lib/kafka

Этап 5. Конфигурация Kafka:
Теперь нам необходимо сконфигурировать Kafka.

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

IP_ADDRESS=$(ip route get 1 2>/dev/null | awk '{print $7; exit}')

2.Генерируем Cluster ID:

CLUSTER_ID=$(/opt/kafka/bin/kafka-storage.sh random-uuid)
echo "Сгенерированный Cluster ID: $CLUSTER_ID"

ЗАПИШИТЕ ЭТОТ ID - он понадобится позже! (Пример моего ID : IdLVHil7RvCVrR9U2DEvKQ)

3.Создание конфигурационного файла: 

sudo cat > /opt/kafka/config/kraft/server.properties << EOF
process.roles=broker,controller
node.id=1
controller.quorum.voters=1@${IP_ADDRESS}:9093
listeners=PLAINTEXT://${IP_ADDRESS}:9092,CONTROLLER://${IP_ADDRESS}:9093
advertised.listeners=PLAINTEXT://${IP_ADDRESS}:9092
log.dirs=/var/lib/kafka
num.partitions=1
num.recovery.threads.per.data.dir=1
offsets.topic.replication.factor=1
transaction.state.log.replication.factor=1
transaction.state.log.min.isr=1
log.retention.hours=168
log.segment.bytes=1073741824
log.retention.check.interval.ms=300000
controller.listener.names=CONTROLLER
sasl.mechanism.controller.protocol=PLAINTEXT
auto.create.topics.enable=true
EOF

4.Проверяем созданный файл:

cat /opt/kafka/config/kraft/server.properties

5.Форматирование хранилища

if [ ! -f /var/lib/kafka/meta.properties ]; then
    echo "Инициализируем хранилище Kafka..."
    /opt/kafka/bin/kafka-storage.sh format \
        -t $CLUSTER_ID \
        -c /opt/kafka/config/kraft/server.properties
    
    echo "Хранилище инициализировано с Cluster ID: $CLUSTER_ID"
else
    echo "Хранилище уже инициализировано"
    cat /var/lib/kafka/meta.properties
fi

6.Создание файла службы:

Создаем файл службы

sudo cat > /etc/systemd/system/kafka.service << EOF
[Unit]
Description=Apache Kafka Service (KRaft mode)
After=network.target

[Service]
Type=simple
User=wisla
Group=wisla
WorkingDirectory=/opt/kafka
Environment="JAVA_HOME=/opt/kafka/jdk-17.0.17+10"
Environment="PATH=/opt/kafka/jdk-17.0.17+10/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
ExecStartPre=/bin/bash -c "if [ ! -f /var/lib/kafka/meta.properties ]; then /opt/kafka/bin/kafka-storage.sh format -t $CLUSTER_ID -c /opt/kafka/config/kraft/server.properties; fi"
ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties
SuccessExitStatus=143
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target
EOF

Создание скрипта запуска:

sudo cat > /usr/local/bin/kafka-start << 'EOF'
#!/bin/bash
KAFKA_DIR="/opt/kafka"
KAFKA_LOG_DIR="/var/lib/kafka"
CLUSTER_ID="$CLUSTER_ID"  # ВСТАВЬТЕ ВАШ Cluster ID!

if [ ! -f $KAFKA_LOG_DIR/meta.properties ]; then
    $KAFKA_DIR/bin/kafka-storage.sh format -t $CLUSTER_ID -c $KAFKA_DIR/config/kraft/server.properties
fi
systemctl start kafka
echo "Kafka запущен в режиме KRaft"
EOF

Создаем скрипт остановки:

sudo cat > /usr/local/bin/kafka-stop << 'EOF'
#!/bin/bash
systemctl stop kafka
echo "Kafka остановлен"
EOF

Создаем скрипт статуса:

sudo cat > /usr/local/bin/kafka-status << 'EOF'
#!/bin/bash
echo "Kafka статус:"
systemctl status kafka --no-pager
EOF

Создаем скрипт сброса:

sudo cat > /usr/local/bin/kafka-reset << 'EOF'
#!/bin/bash
echo "Сброс Kafka хранилища..."
systemctl stop kafka
KAFKA_DIR="/opt/kafka"
KAFKA_LOG_DIR="/var/lib/kafka"
CLUSTER_ID="$CLUSTER_ID"  # ВСТАВЬТЕ ВАШ Cluster ID!

rm -rf $KAFKA_LOG_DIR/*
$KAFKA_DIR/bin/kafka-storage.sh format -t $CLUSTER_ID -c $KAFKA_DIR/config/kraft/server.properties
echo "Хранилище сброшено. Запустите: systemctl start kafka"
EOF

Выдача прав на исполнение:

chmod +x /usr/local/bin/kafka-*

Этап 6. Запуск и проверка Kafka:

Обновляем systemd:

sudo systemctl daemon-reload

Включаем автозагрузку:

sudo systemctl enable kafka

Запускаем Kafka

sudo systemctl start kafka

Проверяем статус

sudo systemctl status kafka

Смотрим логи:

sudo journalctl -u kafka -f

Проверяем, что порты открыты

netstat -tlnp | grep -E "9092|9093"

Проверяем метаданные

ls -la /var/lib/kafka/

Установка завершена! Kafka готова к использованию.

Подготовка операционной системы к запуску программы установки

Программа установки представляет собой консольное псевдографическое приложение с набором скриптов и настроек, работающее в Linux-окружении (bash). Дистрибутив и программа установки, как правило, поставляются как единый самораспаковывающийся run-файл. Шаблоны отчётов и плагины могут поставляться в виде отдельных файлов.

Если система wiSLA устанавливается на несколько серверов, один экземпляр программы установки, запущенный на одном сервере, может управлять процессом установки, настройки и резервного копирования данных на всех серверах. Для этого создаётся пользователь wisla, которому обеспечивается посредством SSH доступ по ключу ко всем серверам контура.

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

  1. На непосредственном рабочем месте администратора подготовить к работе приложение – SSH-клиент, с помощью которого будет производиться взаимодействие с консолями серверов. Для Windows рекомендуется PuTTY. Для операционных систем семейства Linux можно воспользоваться стандартным эмулятором терминала и утилитой ssh.
  2. Назначить уникальные сетевые имена (hostname) серверам (например, добавить запись в /etc/hosts). Этот шаг можно пропустить, если серверы централизовано получают hostname в автоматическом режиме или действие было выполнено ранее (например, в процессе установки операционной системы).

Подготовка системы, установка и обновление wisla (ручная)

Установка системы

Программно-аппаратные требования

Платформа: аппаратный сервер или виртуальная машина (с учетом будущей инфраструктуры рекомендуется не менее 30 Гбайт свободного пространства на диске, минимум 8 Гбайт оперативной памяти без GUI и 10 Гбайт оперативной памяти с GUI).

Операционная система: CentOS 7, Debian 11, Ubuntu 20.04 LTS, Astra Linux Special Edition 1.6 Smolensk, RedOS 7.3, Astra Linux Special Edition 1.7(Орел и Воронеж).

Архитектура: x86_64.

Пакеты: deb.zipastra.zip | centos.zip | redos.zip

Настройка ОС

Ниже описаны шаги по подготовке окружения операционной системы к выполнению программы установки.

1. Установка и запуск клиента SSH 

Для Linux-совместимых операционных систем можно воспользоваться стандартной консолью и утилитой ssh, авторизоваться можно как Administrator.

2. Настройка hostname

Задайте имя сервера в файлах /etc/hostname и /etc/hosts как указано на примерах ниже.

Пример структуры файла /etc/hostname:

wisla

Пример структуры файла /etc/hosts:

127.0.0.1       localhost
192.168.159.136 wisla

# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters

Обратите внимание!
В некоторых Linux-дистрибутивах в файле /etc/hosts указанный во время установки системы hostname может ссылаться на 127.0.1.1, для корректной работы сервисов WiSLA эту запись нужно изменить в соответствии с примером выше. 

Если сетевые настройки получены по DHCP, в будущем могут возникнуть проблемы при изменении IP-адреса сервера, так как сервисы будут ссылаться на записи в файле /etc/hosts, который останется без изменений. Рекомендуется использовать статический IP-адрес на сетевом интерфейсе сервера.

В файле /etc/hosts имя хоста должно соответствовать IP-адресу, отличному от 127.0.0.1 и 127.0.1.1.

3. Создание пользователя “wisla”

Если на вашем сервере присутствует только учётная запись суперпользователя Admin, тогда вам необходимо создать сервисную учётную запись для работы с системой. В данном примере будет создана учётная запись wisla:

sudo useradd -d /home/wisla -m wisla && sudo passwd wisla

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

4. Изменение привилегий для пользователя “wisla”

Чтобы все сервисы WiSLA работали корректно необходимо предоставить сервисной учётной записи привилегированный доступ без запроса пароля: 

cat << EOF > /etc/sudoers.d/wisla
## Allow wisla to run any commands anywhere
wisla    ALL=(ALL:ALL) NOPASSWD:ALL

EOF

Данное действие обязательно, иначе могут возникнуть проблемы из-за того, что группа, в которой состоит пользователь, не имеет NOPASSWD и будут унаследованы её права.

5. Создайте подкаталог /opt/wisla5

Для хранения файлов системы WiSLA необходимо создать подкаталог /opt/wisla5:

# Если вы работаете из под учётной записи Administrator переключитесь на ранее созданного пользователя wisla
su -l wisla
# Если вы уже переключились на сервисную учётную запись используйте sudo 
sudo mkdir -p /opt/wisla5 && sudo chown wisla:wisla /opt/wisla5

Скопируйте файлы дистрибутива wisla*.run с помощью программы winSCP или другим доступным способом в подкаталог /home/wisla/:

mv wisla*.run /home/wisla
sudo chown -R wisla:wisla /home/wisla/
chmod +x /home/wisla/wisla*

6. Установка зависимостей

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

RedOS
С доступом к сети или внутреннему репозиторию:
sudo yum install ntp lzo dialog rsync uuid zip unzip wget tar python3 fontconfig curl pv uuid python3-paramiko

Без доступа к сети:

#Копируем архив на хост удобным способом

# Разархивируем 
unzip redos.zip
cd redos

# Устанавливаем
#Все по очереди:
for i in $(ls *.rpm) 
do
  rpm -i $i || exit
done
#Вручную:
rpm -i libtomcrypt-1.18.2-1.el7.x86_64.rpm libtommath-1.2.0-3.el7.x86_64.rpm dialog-1.3-14.20171209.el7.x86_64.rpm pv-1.6.6-1.x86_64.rpm uuid-1.6.2-26.el7.x86_64.rpm
rpm -i python3-pynacl-1.5.0-1.el7.x86_64.rpm python3-bcrypt-3.2.2-1.el7.x86_64.rpm python3-paramiko-3.2.0-1.el7.noarch.rpm

 

    CentOS
    С доступом к сети:
    sudo yum install ntp lzo dialog rsync uuid zip unzip wget tar python3 fontconfig curl
    wget https://bootstrap.pypa.io/get-pip.py
    python3 get-pip.py
    python3 -m pip install --upgrade pip
    pip install paramiko
    sudo rpm -i http://www.ivarch.com/programs/rpms/pv-1.6.6-1.x86_64.rpm
    Без доступа к сети:
    #Копируем архив на хост удобным способом
    
    # Разархивируем 
    unzip centos.zip
    cd centos-pgks
    
    # Устанавливаем
    #Все по очереди:
    for i in $(ls *.rpm) 
    do
      rpm -i $i || exit
    done
    #Вручную:
    rpm -i wget-1.14-18.el7_6.1.x86_64.rpm
    rpm -i uuid-1.6.2-26.el7.x86_64.rpm
    rpm -i rsync-3.1.2-10.el7.x86_64.rpm
    rpm -i python-crypto-2.6.1-1.el7.centos.x86_64.rpm
    rpm -i python-paramiko-2.1.1-9.el7.noarch.rpm
    rpm -i pv-1.6.6-1.x86_64.rpm
    rpm -i dialog-1.2-5.20130523.el7.x86_64.rpm
    
    # Возможно потребуется установить дополнительные пакеты из этого архива

     

    Debian и Ubuntu
    sudo apt install -y ntp pv liblzo2-2 dialog rsync uuid zip unzip wget tar python3 python3-paramiko fontconfig curl language-pack-ru

     

    Astra Linux 1.6 и 1.7
    С доступом к сети:
    sudo apt install -y ntp liblzo2-2 dialog rsync zip unzip wget tar python3 python3-paramiko fontconfig curl

    Обратите внимание!
    В репозиториях Astra Linux нет пакетов pv, paramiko и uuid, поэтому их необходимо установить из исходников используя .deb-пакеты.
    Следуйте приведённой ниже инструкции в секции "Без доступа к сети".

    Без доступа к сети:
    unzip astra.zip
    cd astra-pkgs
    #Все по очереди:
    ls *.deb > /tmp/packages.list && sudo dpkg -i $(cat /tmp/packages.list) && rm -rf /tmp/packages.list
    #Вручную:
    sudo dpkg -i pv_1.6.6-1_amd64.deb
    sudo dpkg -i rsync_3.1.3-6+ci202302061937+astra1_amd64.deb
    sudo dpkg -i libossp-uuid16_1.6.2-1.5+b4_amd64.deb
    sudo dpkg -i uuid_1.6.2-1.5+b4_amd64.deb
    sudo dpkg -i wget_1.20.1-1.1_amd64.deb
    sudo dpkg -i python3-paramiko_2.6.0-1~bpo10+1_all.deb
    sudo dpkg -i python3-*
    sudo dpkg -i dialog_1.3-20190211-1_amd64.deb
    Установка и настройка pip для Python

    Обязательно для работы Paramiko на Astra Linux 1.7

    Скачайте установочный скрипт get-pip.py(Версии могут отличатся от обновления Astra Linux, сравнивать с версией Python в системе ):

    wget https://bootstrap.pypa.io/pip/3.7/get-pip.py

    Запустите скрипт для установки pip:

    python3 get-pip.py

    Установите необходимые зависимости:

    sudo apt install python3-distutils

    Добавьте путь к локальным бинарным файлам в переменную PATH:

    echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
    source ~/.bashrc

    Обновите pip до последней версии:

    python -m pip install --upgrade pip

    Обновите библиотеку Paramiko:

    pip install --upgrade paramiko

     

     

    Astra Linux 1.8
    С доступом к сети:
    sudo apt install -y rsync libossp-uuid16 uuid wget python3 python3-paramiko dialog dialog fontconfig liblzo2-2 python3-asn1crypto python3-bcrypt python3-cffi-backend python3-cryptography python3-nacl rsync unzip zip

    Обратите внимание!
    В репозиториях Astra Linux нет пакета pv, поэтому его необходимо установить из исходников используя .deb-пакет.
    Следуйте приведённой ниже инструкции в секции "Без доступа к сети".

    Без доступа к сети:
    unzip astra.zip
    cd astra-pkgs
    #Все по очереди:
    ls *.deb > /tmp/packages.list && sudo dpkg -i $(cat /tmp/packages.list) && rm -rf /tmp/packages.list
    #Вручную:
    sudo dpkg -i pv_1.6.6-1_amd64.deb
    sudo dpkg -i rsync_3.1.3-6+ci202302061937+astra1_amd64.deb
    sudo dpkg -i libossp-uuid16_1.6.2-1.5+b4_amd64.deb
    sudo dpkg -i uuid_1.6.2-1.5+b4_amd64.deb
    sudo dpkg -i wget_1.20.1-1.1_amd64.deb
    sudo dpkg -i python3-paramiko_2.6.0-1~bpo10+1_all.deb
    sudo dpkg -i python3-*
    sudo dpkg -i dialog_1.3-20190211-1_amd64.deb

    Ручная установка пакета pv:

    sudo dpkg -i pv_1.6.6-1_amd64.deb
    Alt Linux (Simply Linux)
    С доступом к сети:
    sudo apt-get install -y ntp pv dialog rsync zip unzip wget tar python3 fontconfig curl python3-module-paramiko ossp-uuid

    В ходе тестирования было замечено, что для установки WiSLA в altLinux необходимо подключаться по ssh, либо используйте sudo su $(whoami)), иначе будет возникать окно с авторизацией. Также необходимо увеличить размер /tmp в /etc/fstab, добавьте через запятую size=4G (4G указаны в качестве примера) и mount -o remountrw /tmp.

     

    7. Установить python3 по умолчанию

    Укажите системе использовать python3 в качестве основной версии:

    sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1

    8. Настройка правил firewall

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

    CentOS
    Правила для firewalld:
    sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
    sudo firewall-cmd --reload
    Наcтройка SELinux:

    Настройки SELinux по умолчанию могут блокировать доступ к серверу с системой WiSLA, рекомендуется настроить режим Permissive.

    # Открываем файл
    sudo nano /etc/selinux/config
    # Утсанавливаем значение и сохраняем
    SELINUX=permissive
    # Выключаем на текущий момент чтобы не перезагружаться
    setenforce 0


    Debian, Ubuntu и Astra Linux
    Правила для UFW:
    sudo ufw allow 8080/tcp

    9. Настройка limits.conf:

    Выполните команду ниже или создайте файл вручную как указано на примере ниже:

    cat << EOF > /etc/security/limits.d/wisla
    wisla   soft      nofile  32768
    wisla   hard     nofile  32768
    wisla   soft      nproc   32768
    wisla   hard     nproc   32768
    
    EOF

    10. Настройка locale

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

    CentOS
    Выполните команды приведённые ниже:
    sudo dnf install glibc-locale-source glibc-langpack-ru 
    sudo localectl set-locale LANG=ru_RU.UTF-8
    Затем заново авторизуйтесь на сервере. 
    Ubuntu
    Выполните команды приведённые ниже:
    sudo apt install -y locales
    sudo sed -i 's|# ru_RU.UTF-8 UTF-8|ru_RU.UTF-8 UTF-8|g' /etc/locale.gen
    sudo locale-gen ru_RU
    sudo locale-gen ru_RU.UTF-8
    sudo update-locale
    localectl set-locale LANG=ru_RU.UTF-8
    Затем заново авторизуйтесь на сервере. 

    Debian
    Выполните команды приведённые ниже:
    sudo locale-gen ru_RU.UTF-8
    sudo dpkg-reconfigure locales
    Затем заново авторизуйтесь на сервере. 

    Обратите внимание!
    Перед запуском программы установки следует выполнить команду locale и убедиться, что активна ru_RU.UTF-8. При возникновении проблем необходимо обратиться к документации по дистрибутиву для установки нужной локали. Также следует проверить вывод timedatectl, часовой пояс должен иметь буквенное обозначение вместо n/a.

    11. Подготовка системы к установке

    Сгенерируйте SSH-ключ для беспарольного доступа по SSH для пользователя wisla:

    # Переключитесь на пользователя wisla, если вы не сделали этого ранее
    su -l wisla
    # Сгенерируйте SSH-ключ
    ssh-keygen -P ""
    # В случае если установка в кластере нужно выполнить следующую команду для каждого сервера, 
    # где вместо $(hostname) dns имя или ip адрес в зависимости от того как будут указаны сервера в конфигурации при установки
    username=$(whoami)
    ssh-copy-id $username@$(hostname)
    ssh-copy-id $username@localhost
    # Проверьте работу аутентификации по ключам
    ssh $username@$(hostname) exit
    ssh $username@localhost exit

    Обратите внимание!
    Запроса пароля быть не должно! Если пароль запрашивается, тогда требуется найти причину и добиться входа без пароля, иначе в процессе установки будут происходить многократные запросы пароля. Причиной может быть неразрешённый тип ключа или несоответствие сетевого (доменного) имени.

    Отключите опцию KillUserProcesses:

    sudo sed -i 's/#KillUserProcesses=yes/KillUserProcesses=no/g' /etc/systemd/logind.conf

    Перезагрузите сервер, чтобы применить изменения:

    sudo reboot

    Проделав указанные выше действия ваша операционная система подготовлена к запуску программы установки.

    12. Запуск программы установки

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

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

    Обратите внимание!
    Программа установки должна запускаться под сервисной учётной записью в её окружении, в данном примере это пользователь wisla.

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

    Если установка системы будет аварийно прервана или завершена с ошибкой, журналы установки можно найти в каталоге с программой (install*.log, runtime.log). Информация о ходе установки также доступна в буфере эмулятора терминала.

    Переключитесь на каталог, в который была скопирована программа установки:

    cd /home/wisla

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

    ./wisla*.run

    Если программа установки не стартует попробуйте выполнить export TERM=xterm перед её запуском.

    Если приложение не запускается, следует проанализировать сообщения об ошибках и созданные в текущем каталоге log-файлы.

    Навигация в программе установки осуществляется с помощью стрелок управления курсором, клавиш Home, End, Tab, Esc и Enter.
    Если требуется аварийно прервать работу программы, можно использовать комбинацию клавиш CTRL+C, для штатного завершения программы установки следует использовать кнопку Exit.

    В процессе установки вам также необходимо проверить следующие конфигурации:

    Окно 'Installer startup configuration'

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

    Окно 'Select action'

    Нажмите 'Install'.

    Окно 'JRE* configuration'

    Нажмите 'OK'.

    Окно 'Postgresql* configuration'

    Проверить параметр 'Trust host or network'.

    Нужно проверить и заполнить Trusted network/host, иначе будут проблемы с подключением Postgres и патчами.

    Окно 'Wildfly* configuration'

    Проверить значение memory size.

    Окно 'Hadoop* configuration'

    Проверить имя hostname в 'HDFS master' и 'Tracker host' fields'.

    Окно 'HBase* configuration'

    Проверить имя hostname в 'Zookeeper quorum'.

    Окно 'wiSLA* data collection configuration'

    Если планируется использование зондов wiProbe, нужно прокрутить список и изменить настройку «wiProbe destination». В ней задаётся адрес, который будет использоваться зондом для отправки данных в систему wiSLA, в форме URL. Остальные параметры менять без необходимости не рекомендуется.

    Окно 'wiSLA* LDAP configuration'

    Если не планируется интегрировать систему с MS Active Directory или OpenLDAP Server, рекомендуется оставить значения по умолчанию.

    Окно 'wiSLA* resources configuration'

    Убедиться, что имя hostname указано в URL.

    Окно 'wiSLA* notification and ASI configuration'

    Требуется указать параметры подключения к почтовому серверу. Если этого не сделать, новые пользователи не смогут получать письма о добавлении учётной записи и другие уведомления, отсылаемые на email. Также здесь можно включить отправку SNMP-уведомлений по определённым событиям. 
    Настройка email-уведомлений:
    1.Необходимо выбрать почту с которой буду отправляться уведомления и выполнить настройку по инструкции.
    2.Устанавливаем конфиги:

    Окно 'wiSLA* operator portal configuration'

    Обращаем ваше внимание, если вы получаете доступ к порталу с помощью проброса портов или через прокси сервер, то вам необходимо отредактировать пункт HOST и в Whitelisted domains установить необходимые IP-адреса.

    1. Подтверждение настроек

    На этом этапе можно вернуться назад и внести исправления в настройки. После подтверждения начинается процесс установки.

    Процесс установки

    Во время установки в каталог /opt/wisla5 будут добавлены следующие компоненты:

    Процесс можно прервать, нажав CTRL+C, все настройки будут сброшены.

    После завершения установки будет предложено добавить систему в список автозагрузки – нажмите кнопку Нет.

    Обратите внимание!
    В ходе тестирования выявлено, что на Astra Linux в некоторых сценариях не создается systemd unit, при возникновении данной проблемы нужно создать его руками.

    Выполните команду ниже или создайте файл вручную с содержанием как на примере ниже:

    cat << EOF > /etc/systemd/system/wisla.service
    [Unit]
    Description=Starts JBoss process with wiSLA 5 system
    After=network-online.target
    Requires=network-online.target
    
    [Service]
    Type=forking
    RemainAfterExit=true
    WorkingDirectory=/opt/wisla5
    ExecStart=/opt/wisla5/scripts/wisla5.sh start
    ExecStop=/opt/wisla5/scripts/wisla5.sh stop
    
    [Install]
    WantedBy=multi-user.target
    
    EOF
    
    sudo systemctl daemon-reload
    sudo systemctl enable wisla.service

    13. Запуск WiSLA

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

    less -f /opt/wisla5/wildfly/current/standalone/log/server.log
    less -f /opt/wisla5/wildfly/current/standalone/log/communicator.log

    Маркером успешного запуска является следующее сообщение в журнале (server.log):

    INFO  [com.wellink.wisla.communicator.impl.state.AvailabilitySystemStateSingletonImpl] (http-0.0.0.0-0.0.0.0-8080-1) !***   THE ALL wiSLA
    COMPONENTS ARE FULLY DEPLOYED, INTERCONNECTED AND READY TO WORK!   ***!
    13:48:30,028 INFO  [com.wellink.wisla.communicator.impl.state.AvailabilitySystemStateSingletonImpl] (http-0.0.0.0-0.0.0.0-8080-1) !********************
    **********************************************************************!

    Теперь можно запустить веб-браузер и открыть страницу системы указав IP-адрес сервера и порт.

    image.png

     
    В данном примере система будет доступна по адресу http://192.168.159.136:8080.

    Обновление wiSLA

    Важно: После обновления на версию wiSLA 5.2.13 необходимо пересохранить пароль для доступа к серверу LDAP и пароль приложений для почтовых уведомлений. Необходимо зайти под учетной записью "Admin" и в настройках системы поменять пароль Email & Ldap на тот же, что и был и сохранить. Это необходимо, т.к. начиная с версии 5.2.13 был изменен алгоритм шифрования паролей.

    image.png

    image.png

    Рекомендуется обновляться с предыдущей минорной версии wiSLA (5.1->5.2->5.2.1->5.2.2->5.2.3).\

    1) Запустить программу установки wiSLA 5.2.3;

    2) В основном меню выбрать пункт Update;

    2.1) Подтвердить или отклонить создание резервной копии (рекомендуется сделать);

    2.2) Подтвердить остановку компонентов wiSLA;

    2.3) После загрузки настроек системы, в каждом окне проверить настройки (по необходимости внести правки) и подтвердить для продолжение установки;

    2.4) После обновления и запуска всех компонентов системы подтвердить или отклонить добавление wiSLA в автозагрузку;

    3) После успешного запуска сервера приложений, выполнить индексацию (Maintenance > wiSLA > Reindex (Не путать со Standalone Reindex!);

    4) Открыть портал, проверить работу системы;

    5) Очистить кэш браузера на всех рабочих местах.

    Возможные ошибки в процессе обновления:

    Иногда при обновлении до новой версии может зависнуть сервис wildfly, на это будут указывать следующие записи в журнале server.log:

    13:24:21,676 ERROR [org.jboss.as.controller.management-operation] (DeploymentScanner-threads - 2) 
     WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "wisla-engine-5.2.4-SNAPSHOT.war")]) - failure description: {"WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"wisla-engine-5.2.4-SNAPSHOT.war\".undertow-deployment" => "java.lang.RuntimeException: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'expireSessionSchedulerSingleton': Unsatisfied dependency expressed through field 'eventLoggerService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'eventLoggerService' defined in class path resource [audit/conf/spring/services.xml]: Cannot resolve reference to bean 'hibernateAuditLogAppender' while setting bean property 'appenders' with key [0]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateAuditLogAppender' defined in class path resource [audit/conf/spring/services.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [engine/conf/spring/datasource.xml]: Invocation of init method failed; nested exception is org.hibernate.search.exception.SearchException: HSEARCH000103: Unable to initialize IndexManager named 'sap' 
        Caused by: java.lang.RuntimeException: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'expireSessionSchedulerSingleton': Unsatisfied dependency expressed through field 'eventLoggerService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'eventLoggerService' defined in class path resource [audit/conf/spring/services.xml]: Cannot resolve reference to bean 'hibernateAuditLogAppender' while setting bean property 'appenders' with key [0]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateAuditLogAppender' defined in class path resource [audit/conf/spring/services.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [engine/conf/spring/datasource.xml]: Invocation of init method failed; nested exception is org.hibernate.search.exception.SearchException: HSEARCH000103: Unable to initialize IndexManager named 'sap' 
        Caused by: org.springframework.beans.factory.UnsatisfiedDependencyException: Error creating bean with name 'expireSessionSchedulerSingleton': Unsatisfied dependency expressed through field 'eventLoggerService'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'eventLoggerService' defined in class path resource [audit/conf/spring/services.xml]: Cannot resolve reference to bean 'hibernateAuditLogAppender' while setting bean property 'appenders' with key [0]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateAuditLogAppender' defined in class path resource [audit/conf/spring/services.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [engine/conf/spring/datasource.xml]: Invocation of init method failed; nested exception is org.hibernate.search.exception.SearchException: HSEARCH000103: Unable to initialize IndexManager named 'sap' 
        Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'eventLoggerService' defined in class path resource[audit/conf/spring/services.xml]: Cannot resolve reference to bean 'hibernateAuditLogAppender' while setting bean property 'appenders' with key [0]; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateAuditLogAppender' defined in class path resource [audit/conf/spring/services.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [engine/conf/spring/datasource.xml]: Invocation of init method failed; nested exception is org.hibernate.search.exception.SearchException: HSEARCH000103: Unable to initialize IndexManager named 'sap' Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'hibernateAuditLogAppender' defined in class path resource [audit/conf/spring/services.xml]: Cannot resolve reference to bean 'sessionFactory' while setting bean property 'sessionFactory'; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [engine/conf/spring/datasource.xml]: Invocation of init method failed; nested exception is org.hibernate.search.exception.SearchException: HSEARCH000103: Unable to initialize IndexManager named 'sap' 
        Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'sessionFactory' defined in class path resource [engine/conf/spring/datasource.xml]: Invocation of init method failed; nested exception is org.hibernate.search.exception.SearchException: HSEARCH000103: Unable to initialize IndexManager named 'sap' 
        Caused by: org.hibernate.search.exception.SearchException: HSEARCH000103: Unable to initialize IndexManager named 'sap' 
        Caused by: org.hibernate.search.exception.SearchException: Unable to open Lucene IndexReader for IndexManager sap 
        Caused by: org.apache.lucene.index.CorruptIndexException: file mismatch, expected id=42hlomvwa71vvwwn7vem94t0p, got=7mz5ojw75crmjs1kxhmc322p2 (resource=BufferedChecksumIndexInput(MMapIndexInput(path=\"/opt/wisla5/wildfly/wildfly-14.0.1.Final/bin/searchindexes/engine/sap/_q.si\")))"}}

    Чтобы решить эту проблему удалите содержимое каталога /opt/wisla5/wildfly/wildfly-14.0.1.Final/bin/searchindexes/engine/sap/:

    sudo rm -rf /opt/wisla5/wildfly/wildfly-14.0.1.Final/bin/searchindexes/engine/sap/*

    Затем повторно запустите процесс обновления с помощью инсталлятора wisla, после обновления системы не забудьте запустить индексацию.

    Если перед началом обновления требуется удалить данные из базы данных:

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

    В данной ситуации нужно проделать следующие действия:

    1. Сделать резервную копию БД для возможности восстановления данных на другой машине со старой версией приложения;
    2. Остановите приложения wiSLA;
    3. Подключиться к БД используя клиент, например DBviewer;
    4. Переключиться на БД wisla и выполнить скрипт wisla_init_schema.sql;
    5. Затем выполнить скрипт wisla_init_schema.sql;
    6. После выполнения скриптов отключитесь от БД и вернитесь к терминалу сервера с инсталлером;
    7. Загрузите на сервер пустую БД wiSLA clear1.backup;
    8. Перейдите в раздел backup и загрузите пустую БД в базу в режиме восстановления;
    9. Загрузив БД перейдите к настройке PostgreSQL (Maintenance > PostrgeSQL) и запустите патч для создания необходимых таблиц;
    10. После того как таблицы будут сформированы запустите приложения wiSLA и проверьте работу веб-портала.

    Установка wiSLA 5

    Оглавление

    Системные требования

    Платформа:

    Список поддерживаемых операционных систем:


    Подготовка операционной системы 

    1. Загрузка файлов на сервер

    Подключитесь к серверу через протокол SSH используя учётную запись пользователя с привилегированным доступом. Затем с помощью SFTP или scp скопируйте файлы программы wisla-pre-installation-program и инсталлятор wiSLA 5 на сервер, например в домашний каталог текущего пользователя.

    2. Подготовка к запуску. 

    1. Перенесите архив в домашний каталог пользователя на целевом компьютере или сервере.
    Пример архива расположенного в каталоге пользователя:

    image.png

    2. Распакуйте архив:

    unzip wisla-pre-installation-program-2.1.zip -d wisla-pre-installation-program-2.1

    3. Перейди в каталог программы:

    cd wisla-pre-installation-program-2.1

    4. Предоставьте программе права на выполнение:

    sudo chmod +x preparing-os.start
    3. Запуск программы.

    Запустите программу с правами суперпользователя:

    sudo ./preparing-os.start

    После запуска откроется меню:

    image.png

    4. Подготовка операционной системы

    1. В главном меню выберите пункт 1 и нажмите ENTER.
    2. Программа запросит пароль для учётной записи Wisla. Введите новый пароль дважды.

    image.png

    3. При появлении запроса на изменение Hostname:
    Если имя устраивает, введите Н
    Если хотите изменить, введите Д , затем введите wisla.

    image.png

    4. Выберите тип обновления:
    1 - с доступом в Интернет
    2 - без доступа в Интернет

    image.png

    5. После завершения настройки введите пароль для генерации SSH-ключа.

    image.png

    6. Согласитесь на перезагрузку системы.

    image.png

    5. Установка Kafka

    1. После перезагрузки снова перейдите в каталог с программой:

    cd wish-pre-installation-program-2.1

    2. Запустите программу

    sudo ./preparing-os.start

    3. В главном меню выберите пункт 2.

    image.png

    4. Выберите операционную систему (например, 1 для Astra Linux 1.7).

    image.png

    5. Дождитесь завершения установки.

    image.png

    После успешной установки вы увидите информацию о каталогах, портах и командах для управления Kafka.

    6. Установка Wisla WIProbe Aggregator

    1. В главном меню выберите пункт 3.

    2. Введите адрес сервера Kafka в формате:
    IP:PORT, например: 10.0.2.15:9092

    3. Введите адрес Wisla в формате:
    http://IP:PORT, например: http://10.0.2.15:8080/

    image.png

    4. Нажмите ENTER для начала установки
    После завершения установки вы увидите информацию о каталогах и командах для управления службой.

    image.png

    7. Завершение работы

    После успешной установки всех компонентов вы можете закрыть программу, нажав CTRL+C.

    Ваша система полностью готова к работе с WISLA.

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

    Установка системы мониторинга wiSLA 5

    1. Запуск программы установки

    1. Завершив предварительную подготовку системы переключитесь на сервисную учётную запись wisla:

    sudo su - wisla

    2. Загрузите на сервер программу установки wiSLA 5 нужной версии с помощью утилиты scp или любым другим удобным для вас способом.

    3. Затем добавьте права на выполнение:

    sudo chmod +x ./wisla-5.2.*.run

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

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

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

    Обратите внимание!

    Программа установки должна запускаться под сервисной учётной записью и в её окружении, в данном примере это пользователь wisla.

    Информация

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

    Если установка системы будет аварийно прервана или завершена с ошибкой, журналы установки можно найти в каталоге с программой (install*.log, runtime.log). Информация о ходе установки также доступна в буфере эмулятора терминала.

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

    ./wisla-5.2.*.run

    Если программа установки не стартует попробуйте выполнить export TERM=xterm перед её запуском.

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

    Информация

    Навигация в программе установки осуществляется с помощью стрелок управления курсором, клавиш Home, End, Tab, Esc и Enter.
    Если требуется аварийно прервать работу программы, можно использовать комбинацию клавиш CTRL+C, для штатного завершения программы установки следует использовать кнопку Exit.

    2. Работа с программой установки wiSLA 5

    Во время установки в каталог /opt/wisla5 будут добавлены следующие компоненты:

    Процесс можно прервать, нажав CTRL+C, все настройки будут сброшены.

    1. Окно "Installer startup configuration"

    image.png

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

    2. Окно "Old installation was not found. Select an action"

    image.png

    Выберете вариант "Install" чтобы перейти к дальнейшей настройке. 

    3. Окно "Topology configuration"

    image.png

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

    Задав топологию запустится процесс инициализации модулей.

    4. Окно "Versions select"

    image.png

    Выберете нужную версию чтобы продолжить.

    5. Окно "Zookeeper Configuration"

    image.png

    6. Окно "Hadoop configuration"

    image.png

    Проверьте имя hostname в "Hadoop cluster name" и порт, при развёртывании одного экземпляра укажите localhost.

    7. Окно "HBase configuration"

    image.png

    Проверьте имя hostname в "Zookeeper quorum".

    8. Окно "Postgresql configuration"

    image.png

    Нужно проверить и заполнить "Trusted network/host", иначе будут проблемы с подключением Postgresql и патчами.

    * Чтобы принимать все подключения укажите значение all или 0.0.0.0/0.

    9. Окно "Wildfly configuration"

    image.png

    Проверьте значение "Heap size", для локальной установки хватит стандартного значения 2048, при мониторинге инфраструктуры с большим числом устройств рекомендуется увеличить данное значение. При работе в кластере минимальное значение должно быть 8192.

    10. Окно "wiSLA Topology Configuration"

    image.png

    11. Окно "wiSLA Data Collection Configuration"

    image.png

    Нужно проверить и заполнить wiProbe destination, указать адрес агрегатора

    wiProbe destination = http://IP_СЕРВЕРА:18080/aggregator

    12. Окно "wiSLA Resources Configuration"

    Укажите адрес и порт службы Kafka

    image.png

    Убедитесь, что имя hostname указано в URL.

    13. Окно "wiSLA Notification and ASI Configuration"

    Если по умолчанию параметр "wiSLA notification enabled" принимает значение "false" измените на "true"

    image.png

    На данном этапе необходимо указать параметры почтового клиента, если этого не сделать, тогда новые пользователи не смогут получать письма о добавлении учётной записи и другие уведомления, отсылаемые на email.

    Также здесь можно включить отправку SNMP-уведомлений по определённым событиям. 

    14. Окно "wiSLA Cloud System"

    image.png

    15. Окно "Operator Portal Configuration"

    image.png

    Обратите внимание!

    Если вы получаете доступ к порталу с помощью проброса портов или через прокси сервер, тогда вам необходимо отредактировать пункт HOST и в Whitelisted domains установить необходимые IP-адреса.

    16. Окно "Confirm the installation"

    image.png

    На этом этапе вы ещё можете вернуться назад и внести исправления в настройки, после подтверждения начинается процесс установки.

    17. Окно "Add wiSLA to the autorun list"

    image.png

    После установки системы будет предложено добавить службу в список автозагрузки, нажмите кнопку Yes, если вы установили её на Debian или Ubuntu.

    Astra Linux

    Если вы используете Astra Linux нажмите кнопку No, т.к. systemd unit для wiSLA 5 был создан ранее программой предварительной настройки узла.

    После установки wiSLA 5 вам необходимо вручную добавить службу в автозагрузку, для этого выполните приведённую ниже команду:

    sudo systemctl enable wisla.service

    Система мониторинга wiSLA 5 установлена на ваш сервер.

    3. Запуск wiSLA

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

    less -f /opt/wisla5/wildfly/current/standalone/log/server.log
    less -f /opt/wisla5/wildfly/current/standalone/log/communicator.log

    Маркером успешного запуска является следующее сообщение в журнале (server.log):

    INFO  [com.wellink.wisla.communicator.impl.state.AvailabilitySystemStateSingletonImpl] (http-0.0.0.0-0.0.0.0-8080-1) !***   THE ALL wiSLA
    COMPONENTS ARE FULLY DEPLOYED, INTERCONNECTED AND READY TO WORK!   ***!
    13:48:30,028 INFO  [com.wellink.wisla.communicator.impl.state.AvailabilitySystemStateSingletonImpl] (http-0.0.0.0-0.0.0.0-8080-1) !********************
    **********************************************************************!

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

    image.png

     
    В данном примере система будет доступна по адресу https://wisla.it-superman.keenetic.pro.

    Инструкция по ручному развертыванию Kafka в кластерном режиме для Wisla

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

    Предварительные условия:

    1.Архив OpenJDK 17 ()
    2.Архив Kafka 2.13-4.1.1

    3.Как минимум 3 сервера для развертывания

    4.Пользователь wisla

    Если пользователь wisla еще не существует в системе его необходимо создать используя следующие команды пошагово.

    1.Команда создания пользователя:

    sudo useradd -d /home/wisla -m -s /bin/bash wisla

    2.Команда установки пароля:

    sudo passwd wisla

    3.Добавление пользователя в файлы sudoers:

    echo "wisla    ALL=(ALL:ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/wisla

    4.Настройка системных лимитов для пользователя wisla:

    # Создаем файл лимитов
    cat > /etc/security/limits.d/wisla << 'EOF'
    wisla   soft      nofile  32768
    wisla   hard     nofile  32768
    wisla   soft      nproc   32768
    wisla   hard     nproc   32768
    EOF

    5. Добавляем в PAM (если нет):

    echo "session required pam_limits.so" >> /etc/pam.d/common-session

     

    Этап 1. Подготовка  каталогов на всех узлах

    1.Создание каталогов:

    sudo mkdir -p /opt/kafka
    sudo mkdir -p /var/lib/kafka
    sudo mkdir -p /var/log/kafka

    2.Выдача прав:

    sudo chown -R wisla:wisla /opt/kafka
    sudo chown -R wisla:wisla /var/lib/kafka
    sudo chown -R wisla:wisla /var/log/kafka

    3.Проверка прав:

    ls -ld /opt/kafka /var/lib/kafka /var/log/kafka
    Этап 2. Копирование и распаковка Java на всех узлах

    1.Скопируем архив Java в домашнюю директорию wisla используя следующую команду:

    cp OpenJDK17U-jdk_x64_linux_hotspot_17.0.17_10.tar.gz /home/wisla/

    2.Смена пользователя у архива:

    sudo chown wisla:wisla /home/wisla/OpenJDK17U-jdk_x64_linux_hotspot_17.0.17_10.tar.gz

    3.Распаковка архива в /opt/kafka:

    4.Настройка переменных окружения:

    export JAVA_HOME="/opt/kafka/jdk-17.0.17+10"
    export PATH="$JAVA_HOME/bin:$PATH"
    export KAFKA_HOME="/opt/kafka"

    5.Применение изменений:

    source ~/.bashrc

    6.Проверка:

    java -version

    Этап 3. Копирование и распаковка Kafka на всех узлах

    1.Скопируем архив Kafka в домашнюю директорию wisla используя следующую команду:

    cp kafka_2.13-4.1.1.tgz /opt/kafka/

    2.Смена пользователя у архива:

    sudo chown wisla:wisla /opt/kafka/kafka_2.13-4.1.1.tgz

    3.Распаковка архива в /opt/kafka:

    Этап 4. Генерация уникального ID кластера (только на 1 сервере)

    1.Переходим в каталог kafka используя следующую команду:

    cd /opt/kafka

    2.Запускаем скрипт генерации ID:

    ./bin/kafka-storage.sh random-uuid

    Записать полученный ID, например: 

    Этап 5. Конфигурация кластера на всех узлах

    1.Настройка конфигурации на сервере 1:

    cat > /opt/kafka/config/kraft/server.properties << 'EOF'
    # Базовые настройки
    process.roles=broker,controller
    node.id=1
    
    # Кворум контроллеров (3 узла для отказоустойчивости)
    controller.quorum.voters=1@wisla01:9093,2@wisla02:9093,3@wisla03:9093
    
    # Сетевые настройки wisla01
    listeners=PLAINTEXT://:9092,CONTROLLER://:9093
    advertised.listeners=PLAINTEXT://wisla01:9092
    advertised.controller.listener.name=CONTROLLER
    
    # Директории данных
    log.dirs=/var/lib/kafka
    
    # Настройки репликации для 3 узлов
    num.partitions=3
    default.replication.factor=3
    min.insync.replicas=2
    
    # Системные топики (репликация на все узлы)
    offsets.topic.replication.factor=3
    transaction.state.log.replication.factor=3
    transaction.state.log.min.isr=2
    
    # Настройки отказоустойчивости контроллеров
    controller.listener.names=CONTROLLER
    controller.quorum.election.timeout.ms=1000
    controller.quorum.fetch.timeout.ms=2000
    controller.quorum.request.timeout.ms=2000
    
    # Настройки брокера
    num.io.threads=8
    num.network.threads=3
    num.replica.fetchers=2
    
    # Настройки логов
    log.retention.hours=168
    log.segment.bytes=1073741824
    log.retention.check.interval.ms=300000
    log.flush.interval.messages=10000
    log.flush.interval.ms=1000
    
    # Настройки безопасности (опционально)
    # ssl.client.auth=required
    # ssl.keystore.location=/path/to/keystore.jks
    # ssl.keystore.password=password
    # ssl.truststore.location=/path/to/truststore.jks
    # ssl.truststore.password=password
    EOF

    2.Настройка конфигурации на сервере 2:

    cat > /opt/kafka/config/kraft/server.properties << 'EOF'
    # Базовые настройки
    process.roles=broker,controller
    node.id=2
    
    # Кворум контроллеров
    controller.quorum.voters=1@node1:9093,2@node2:9093,3@node3:9093
    
    # Сетевые настройки node2
    listeners=PLAINTEXT://:9092,CONTROLLER://:9093
    advertised.listeners=PLAINTEXT://node2:9092
    advertised.controller.listener.name=CONTROLLER
    
    # Директории данных
    log.dirs=/var/lib/kafka
    
    # Настройки репликации
    num.partitions=3
    default.replication.factor=3
    min.insync.replicas=2
    
    # Системные топики
    offsets.topic.replication.factor=3
    transaction.state.log.replication.factor=3
    transaction.state.log.min.isr=2
    
    # Настройки контроллеров
    controller.listener.names=CONTROLLER
    controller.quorum.election.timeout.ms=1000
    controller.quorum.fetch.timeout.ms=2000
    controller.quorum.request.timeout.ms=2000
    
    # Настройки брокера
    num.io.threads=8
    num.network.threads=3
    num.replica.fetchers=2
    
    # Настройки логов
    log.retention.hours=168
    log.segment.bytes=1073741824
    log.retention.check.interval.ms=300000
    log.flush.interval.messages=10000
    log.flush.interval.ms=1000
    EOF

    3.Настройка конфигурации на сервере 3:

    cat > /opt/kafka/config/kraft/server.properties << 'EOF'
    # Базовые настройки
    process.roles=broker,controller
    node.id=3
    
    # Кворум контроллеров
    controller.quorum.voters=1@wisla01:9093,2@wisla02:9093,3@wisla03:9093
    
    # Сетевые настройки wisla03
    listeners=PLAINTEXT://:9092,CONTROLLER://:9093
    advertised.listeners=PLAINTEXT://wisla03:9092
    advertised.controller.listener.name=CONTROLLER
    
    # Директории данных
    log.dirs=/var/lib/kafka
    
    # Настройки репликации
    num.partitions=3
    default.replication.factor=3
    min.insync.replicas=2
    
    # Системные топики
    offsets.topic.replication.factor=3
    transaction.state.log.replication.factor=3
    transaction.state.log.min.isr=2
    
    # Настройки контроллеров
    controller.listener.names=CONTROLLER
    controller.quorum.election.timeout.ms=1000
    controller.quorum.fetch.timeout.ms=2000
    controller.quorum.request.timeout.ms=2000
    
    # Настройки брокера
    num.io.threads=8
    num.network.threads=3
    num.replica.fetchers=2
    
    # Настройки логов
    log.retention.hours=168
    log.segment.bytes=1073741824
    log.retention.check.interval.ms=300000
    log.flush.interval.messages=10000
    log.flush.interval.ms=1000
    EOF

    4.Проверка конфигураций:

    cat /opt/kafka/config/kraft/server.properties
    Этап 6. Инициализация хранилищ на всех узлах

    1.На каждом сервере по очереди

    Этап 7. Создаем сервис службы Kafka на всех узлах

    1.Создаем Unit:

    sudo cat > /etc/systemd/system/kafka.service << 'EOF'
    [Unit]
    Description=Apache Kafka Service (Kraft mode) - Wisla 3-Node Cluster
    After=network.target
    Wants=network.target
    
    [Service]
    Type=simple
    User=wisla
    Group=wisla
    WorkingDirectory=/opt/kafka
    Environment="JAVA_HOME=/opt/kafka/jdk-17.0.17+10"
    Environment="PATH=/opt/kafka/jdk-17.0.17+10/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
    Environment="CLUSTER_ID=wisla-3node-cluster-12345"
    Environment="KAFKA_HEAP_OPTS=-Xmx4G -Xms4G"
    Environment="KAFKA_JVM_PERFORMANCE_OPTS=-server -XX:+UseG1GC -XX:MaxGCPauseMillis=20 -XX:InitiatingHeapOccupancyPercent=35 -XX:+ExplicitGCInvokesConcurrent -Djava.awt.headless=true"
    Environment="KAFKA_OPTS=-Dlog4j.configuration=file:/opt/kafka/config/log4j.properties"
    
    # Инициализация хранилища при первом запуске
    ExecStartPre=/bin/bash -c "if [ ! -f /var/lib/kafka/meta.properties ]; then echo 'Инициализация хранилища для кластера...' && /opt/kafka/bin/kafka-storage.sh format -t $CLUSTER_ID -c /opt/kafka/config/kraft/server.properties; fi"
    
    # Запуск Kafka
    ExecStart=/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/kraft/server.properties
    
    # Остановка
    ExecStop=/opt/kafka/bin/kafka-server-stop.sh
    
    # Логи
    StandardOutput=journal
    StandardError=journal
    SuccessExitStatus=0 143
    
    # Перезапуск при сбоях
    Restart=on-failure
    RestartSec=10
    
    # Ограничения
    LimitNOFILE=65536
    LimitNPROC=65536
    
    [Install]
    WantedBy=multi-user.target
    EOF

    2.Создание конфигурации log4j:

    cat > /opt/kafka/config/log4j.properties << 'EOF'
    log4j.rootLogger=INFO, stdout, kafkaAppender
    
    log4j.appender.stdout=org.apache.log4j.ConsoleAppender
    log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
    log4j.appender.stdout.layout.ConversionPattern=[%d] %p %m (%c)%n
    
    log4j.appender.kafkaAppender=org.apache.log4j.DailyRollingFileAppender
    log4j.appender.kafkaAppender.DatePattern='.'yyyy-MM-dd-HH
    log4j.appender.kafkaAppender.File=/var/log/kafka/kafka.log
    log4j.appender.kafkaAppender.layout=org.apache.log4j.PatternLayout
    log4j.appender.kafkaAppender.layout.ConversionPattern=[%d] %p %m (%c)%n
    
    log4j.logger.kafka=INFO
    log4j.logger.kafka.network.RequestChannel$=WARN
    log4j.logger.kafka.server.KafkaApis=WARN
    log4j.logger.org.apache.zookeeper=WARN
    log4j.logger.org.I0Itec.zkclient=WARN
    EOF
    Этап 8. Создание скриптов управления кластером

    1. Создаем скрипт запуска кластера на первом сервере:

    sudo cat > /usr/local/bin/kafka-cluster-start << 'EOF'
    #!/bin/bash
    echo "Запуск кластера Kafka на всех узлах..."
    
    # Запуск на локальном узле
    systemctl start kafka
    echo "Node $(hostname): Kafka запущен"
    
    # Если настроен SSH-доступ к другим узлам, можно добавить:
    # ssh wisla@wisla02 "systemctl start kafka"
    # ssh wisla@wisla03 "systemctl start kafka"
    # echo "wisla02: Kafka запущен"
    # echo "wisla03: Kafka запущен"
    
    echo "Кластер Kafka (3 узла) запущен"
    echo "Для проверки выполните: kafka-cluster-status"
    EOF

    2.Создаем скрипт остановки кластера на первом сервере:

    sudo cat > /usr/local/bin/kafka-cluster-stop << 'EOF'
    #!/bin/bash
    echo "Остановка кластера Kafka..."
    
    # Остановка в правильном порядке (сначала реплики, потом лидеры)
    systemctl stop kafka
    echo "Node $(hostname): Kafka остановлен"
    
    echo "Кластер Kafka остановлен"
    EOF

    3.Создание скрипта проверки статуса на первом сервере:

    sudo cat > /usr/local/bin/kafka-cluster-status << 'EOF'
    #!/bin/bash
    echo "=== Статус кластера Kafka (3 узла) ==="
    echo ""
    echo "Локальный узел ($(hostname)):"
    systemctl status kafka --no-pager | grep -A 3 "Active:"
    
    echo ""
    echo "Для проверки репликации выполните на любом узле:"
    echo "  cd /opt/kafka && ./bin/kafka-topics.sh --describe --bootstrap-server wisla01:9092"
    echo ""
    echo "Для просмотра логов: sudo journalctl -u kafka -f"
    EOF

    4.Создание скрипта управления топиками:

    sudo cat > /usr/local/bin/kafka-topic-manage << 'EOF'
    #!/bin/bash
    KAFKA_HOME="/opt/kafka"
    BOOTSTRAP_SERVER="wisla01:9092,wisla02:9092,wisla03:9092"
    
    case $1 in
        create)
            echo "Создание топика: $2"
            $KAFKA_HOME/bin/kafka-topics.sh --create \
                --bootstrap-server $BOOTSTRAP_SERVER \
                --replication-factor 3 \
                --partitions 3 \
                --topic $2
            ;;
        list)
            echo "Список топиков:"
            $KAFKA_HOME/bin/kafka-topics.sh --list \
                --bootstrap-server $BOOTSTRAP_SERVER
            ;;
        describe)
            echo "Описание топика: $2"
            $KAFKA_HOME/bin/kafka-topics.sh --describe \
                --bootstrap-server $BOOTSTRAP_SERVER \
                --topic $2
            ;;
        delete)
            echo "Удаление топика: $2"
            $KAFKA_HOME/bin/kafka-topics.sh --delete \
                --bootstrap-server $BOOTSTRAP_SERVER \
                --topic $2
            ;;
        *)
            echo "Использование: $0 {create|list|describe|delete} [topic-name]"
            echo "Пример:"
            echo "  $0 create wisla-topic"
            echo "  $0 list"
            echo "  $0 describe wisla-topic"
            echo "  $0 delete wisla-topic"
            ;;
    esac
    EOF

    5.Предоставление прав на исполнение:

    sudo chmod +x /usr/local/bin/kafka-*

    6. Настройка /etc/hosts

    sudo cat >> /etc/hosts << 'EOF'
    # Kafka Cluster Nodes
    192.168.1.101 Wisla01
    192.168.1.102 Wisla02
    192.168.1.103 Wisla03
    EOF

    7.Настройка брандмауэра (Опционально):

    sudo ufw allow 9092/tcp  # Client connections
    sudo ufw allow 9093/tcp  # Controller connections
    sudo ufw allow 9094/tcp  # Inter-broker connections (если настроены)
    Этап 9. Запуск кластера

    1.Перезагрузка systemd на всех узлах:

    sudo systemctl daemon-reload

    2.Добавление в автозапуск на всех узлах:

    sudo systemctl enable kafka

    3.Запуск кластера (ВАЖНО: запускать на всех узлах в течение 30 секунд):

    # На wisla01:
    sudo systemctl start kafka
    
    # На wisla02 (в течение 30 секунд после wisla01):
    sudo systemctl start kafka
    
    # На wisla03 (в течение 30 секунд после wisla02):
    sudo systemctl start kafka

    4.Проверка статуса службы:

    sudo systemctl status kafka

     

    Дополнительная проверка:
    Так же после установки и запуска службы Kafka можно создать скрипт проверки статусов работы кластера Kafka.
    1.Создать файл скрипта командой:

    sudo nano /usr/local/bin/kafka-cluster-monitor

    2.Предоставить права на исполнение:

    sudo chmod +x /usr/local/bin/kafka-cluster-monitor

    3.Добавить скрипт в файл

    #!/bin/bash
    echo "========================================="
    echo "   Мониторинг кластера Kafka (3 узла)   "
    echo "========================================="
    echo ""
    
    echo "1. СТАТУС СЛУЖБ:"
    for node in cluster01 cluster02 cluster03; do
        if [ "$node" = "cluster01" ]; then
            status=$(sudo systemctl is-active kafka 2>/dev/null || echo "unknown")
        else
            status=$(ssh wisla@$node "sudo systemctl is-active kafka 2>/dev/null" 2>/dev/null || echo "unknown")
        fi
        
        case $status in
            active) color="\e[32m" ;;  
            inactive|failed) color="\e[31m" ;; 
            unknown) color="\e[33m" ;; 
            *) color="\e[33m" ;;      
        esac
        echo -e "   $node: ${color}${status}\e[0m"
    done
    
    echo -e "\n2. СПИСОК БРОКЕРОВ:"
    cd /opt/kafka 2>/dev/null 
    if [ -f /opt/kafka/bin/kafka-broker-api-versions.sh ]; then
        /opt/kafka/bin/kafka-broker-api-versions.sh \
          --bootstrap-server cluster01:9092 2>/dev/null | grep -E "^cluster" | head -3
    else
        echo "   Kafka не установлен локально"
    fi
    
    echo -e "\n3. СПИСОК ТОПИКОВ:"
    cd /opt/kafka 2>/dev/null 
    if [ -f /opt/kafka/bin/kafka-topics.sh ]; then
        /opt/kafka/bin/kafka-topics.sh \
          --list --bootstrap-server cluster01:9092 2>/dev/null | head -10
    else
        echo "   Kafka не установлен локально"
    fi
    
    echo -e "\n4. ПРОВЕРКА РЕПЛИКАЦИИ:"
    cd /opt/kafka 2>/dev/null 
    if [ -f /opt/kafka/bin/kafka-topics.sh ]; then
        result=$(/opt/kafka/bin/kafka-topics.sh \
          --describe --bootstrap-server cluster01:9092 \
          --under-replicated-partitions 2>/dev/null)
        if echo "$result" | grep -q "Topic"; then
            echo "     Есть недореплицированные партиции"
        else
            echo "    Все партиции реплицированы"
        fi
    else
        echo "   Kafka не установлен локально"
    fi
    
    echo -e "\n5. ПОСЛЕДНИЕ СОБЫТИЯ:"
    for node in cluster01 cluster02 cluster03; do
        if [ "$node" = "cluster01" ]; then
            errors=$(sudo journalctl -u kafka --since '5 minutes ago' 2>/dev/null | grep -E 'ERROR|WARN' | tail -2)
        else
            errors=$(ssh wisla@$node "sudo journalctl -u kafka --since '5 minutes ago' 2>/dev/null | grep -E 'ERROR|WARN' | tail -2" 2>/dev/null)
        fi
        
        if [ -n "$errors" ]; then
            echo "   $node:"
            echo "$errors" | sed 's/^/     /'
        fi
    done
    
    echo -e "\n========================================="
    echo "   Кластер готов к работе!"
    echo "========================================="
    

    4.Запустить скрипт для проверки

    ./kafka-cluster-monitor



    Настройка Kafka для работы с wiSLA (и с wiProbe Aggregator)

    1. Установка Docker

    Перед началом работы необходимо убедиться, что Docker установлен и работает.

    Для систем без выхода в интернет
    Скачайте архив Docker.zip и распакуйте из него нужные версии deb-пакетов.

    Далее вам необходимо загрузить на сервер следующие пакеты:

    Загрузив файлы на сервер установите Docker-engine из бинарных файлов выполнив следующую команду:

    sudo dpkg -i ./containerd.io_1.6.9-1_amd64.deb  ./docker-ce_23.0.6-1~debian.10~buster_amd64.deb \
    ./docker-ce-cli_24.0.2-1~debian.10~buster_amd64.deb ./docker-buildx-plugin_0.10.5-1~debian.10~buster_amd64.deb

    Проверка наличия Docker:

    docker --version

    Установка Docker (для Ubuntu/Debian):

    Если Docker не установлен, выполните следующие команды:

    sudo apt-get update
    sudo apt-get install docker.io docker-compose
    sudo systemctl enable docker
    sudo systemctl start docker

    Добавление пользователя в группу docker:

    Чтобы избежать необходимости использовать sudo при каждом вызове Docker:

    sudo usermod -aG docker $USER
    newgrp docker

    Примечание для Astra Linux:
    В Astra Linux установка Docker имеет специфические особенности, особенно в изолированных средах без доступа к интернету. Рекомендуется ознакомиться с инструкцией: Установка wiCore без доступа к сети интернет

    2. Развертывание Kafka через Docker Compose

    2.1 Создайте файл docker-compose.yml  со следующим содержимым и замените в KAFKA_CFG_ADVERTISED_LISTENERS адрес 127.0.0.1 на актуальный IP-адрес сервера wiSLA:

    Пути к докер манифестам bitnami обновлены в связи с недоступностью новых, Bitnami объявила о переходе многих своих Docker-образов в статус "legacy".

    Актуальные данные файла docker-compose.yml на 01.10.2025:

    version: '3.8'
    
    services:
      zookeeper:
        image: docker.io/bitnamilegacy/zookeeper:3.9
        container_name: zookeeper
        ports:
          - "2187:2181"
        environment:
          - ALLOW_ANONYMOUS_LOGIN=yes
        volumes:
          - "zookeeper_data:/bitnami/zookeeper"
        restart: unless-stopped
    
      kafka:
        image: docker.io/bitnamilegacy/kafka:3.7
        container_name: kafka
        ports:
          - "9092:9092"
          - "29092:29092"
        environment:
          - KAFKA_CFG_ZOOKEEPER_CONNECT=zookeeper:2181
          - ALLOW_PLAINTEXT_LISTENER=yes
          - KAFKA_CFG_LISTENERS=PLAINTEXT://:9092,INTERNAL://:29092
          - KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://192.168.110.128:9092,INTERNAL://kafka:29092
          - KAFKA_CFG_LISTENER_SECURITY_PROTOCOL_MAP=PLAINTEXT:PLAINTEXT,INTERNAL:PLAINTEXT
          - KAFKA_CFG_INTER_BROKER_LISTENER_NAME=INTERNAL
          - KAFKA_CFG_AUTO_CREATE_TOPICS_ENABLE=true
          - KAFKA_CFG_NUM_PARTITIONS=1
          - KAFKA_CFG_DELETE_TOPIC_ENABLE=true
          - KAFKA_CFG_LOG_RETENTION_HOURS=24
          - KAFKA_CFG_LOG_SEGMENT_BYTES=5242880
          - KAFKA_CFG_MESSAGE_MAX_BYTES=1048576
          - KAFKA_CFG_SOCKET_REQUEST_MAX_BYTES=10485760
          - KAFKA_CFG_LOG_RETENTION_BYTES=53687091
        volumes:
          - "kafka_data:/bitnami/kafka"
        depends_on:
          - zookeeper
        restart: unless-stopped
    
      kafka-console:
        image: docker.redpanda.com/redpandadata/console:latest
        container_name: kafka-console
        ports:
          - "8085:8080"
        environment:
          KAFKA_BROKERS: kafka:29092
          SERVER_PORT: 8080
          CONSOLE_LOG_LEVEL: info
          CONSOLE_FEATURES_TOPIC_INSPECTOR: "true"
        depends_on:
          - kafka
        restart: unless-stopped
    
    volumes:
      zookeeper_data:
        driver: local
      kafka_data:
        driver: local
    

    Необходимо прописать конфиг:

    KAFKA_CFG_ADVERTISED_LISTENERS=PLAINTEXT://{hostname}:9092

     Данный параметр определяет адрес (listeners), по которым клиенты могут подключаться к брокеру Kafka. 

    Примечание: В этом же файле можно дополнительно настроить параметры работы системы, такие как срок хранения данных (по умолчанию - 24 часа), который может очищаться основываясь на указанный временной период, либо при максимальном объеме хранимой информации.

    2.2 Запустите Kafka:

    sudo docker-compose up -d

    2.3 Проверьте работоспособности 

    Убедитесь, что запущены три контейнера: zookeeper, kafka, kafka-console:

    sudo docker ps

    image.png

     Проверьте логи Kafka-контейнера (замените CONTAINER_ID_KAFKA на реальный ID):

    sudo docker logs CONTAINER_ID_KAFKA

    3. Установка и настройка wiProbe Aggregator (не обязательно)

    3.1.Скачивание архива

    Скачайте файл wisla-wiprobe-aggregator.jar с GitLab.
    Подробная инструкция: Установка wiProbe Aggregator .

    Примечание: Установка Nginx (который упоминался в статье) не обязательна, если не требуется балансировка нагрузки между несколькими агрегаторами.

    3.2. Создайте каталог для логов (желательно рядом с агрегатором), иначе при запуске агрегатора будут ошибки, что нет прав для записи логов):

    mkdir -p /home/wisla/aggrlog
    chown wisla:wisla /home/wisla/aggrlog

    3.3. Настройка конфигурации JAR-файла

    Откройте JAR-архив с помощью архиватора (например, 7-Zip, WinRAR) и отредактируйте:

    server.servlet.context-path=/aggregator
    server.port=18080
    aggregator.kafka-enabled=true
    aggregator.wisla-kafka.bootstrap.servers=ВАШ_IP:9092  # Например: 10.11.11.52:9092
    aggregator.wisla-kafka.consumer-threads-count=4
    aggregator.wisla.dc-nodes=http://ВАШ_DC_УЗЕЛ:8080  # Например: http://10.11.11.51:8080
    <property name="LOG_FILE" value="/home/wisla/aggrlog/aggregator.log" />
    .....
      <fileNamePattern>/home/wisla/aggrlog/aggregator.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>

    image.png

    3.4. Настройка автозапуска через systemd

    sudo nano /etc/systemd/system/aggr-jar.service
    [Unit]
    Description=WiProbeAggregator
    
    [Service]
    ExecStart=/usr/bin/java -jar /home/smpsadmin/wisla-wiprobe-aggregator.jar
    Restart=always
    User=wisla
    
    [Install]
    WantedBy=multi-user.target

    3.5. Запуск и проверка:

    # Обновить конфигурацию
    sudo systemctl daemon-reload
    
    # Включить автозагрузку
    sudo systemctl enable aggr-jar.service
    
    # Запустить службу
    sudo systemctl start aggr-jar.service
    
    # Проверить статус
    sudo systemctl status aggr-jar.service
    
    # Просмотр логов (реальный режим)
    journalctl -u aggr-jar.service -f

    4. Настройка wiSLA для работы с Kafka и Aggregator

    4.1. В wiSLA Data Collection Configuration укажите адрес агрегатора:

    wtProbe destination = http://ВАШ_IP_АГРЕГАТОРА:18080/aggregator

    image.png

    4.2. В wiSLA Resources Configuration укажите адрес Kafka:

    Kafka bootstrap servers = ВАШ_IP_КАФКА:9092

    image.png

    5. Особенности работы с Kafka и агрегатором

    5.1. Варианты конфигурации системы

    Standalone-режим (один сервер wiSLA):

    Рекомендуется для новых установок

    Кластерный режим:

    5.2. Важные замечания

    Примечание: Даже для standalone необходимо развернуть Kafka и агрегатор – это обеспечит единый подход к логированию и упростит переход на кластерную архитектуру в будущем.

    image.png

    Изменение одного или нескольких параметров wiSLA

    Если требуется внести изменения в настройки уже установленной системы wiSLA, следует:

    1. Запустить программу установки. Перейти в основное меню. Внешний вид основного меню показан на рисунке 27. 

      Рис. 27 Главное меню программы установки в случае обнаружения установленной wiSLA                                                                                                                                                

    2. Выбрать пункт меню «Config update». Если этого пункта меню нет в списке, установка была
      выполнена некорректно или на первом экране при запуске программы установки были
      указаны ошибочные данные.
    3. Найти, изменить требуемый параметр.
    4. Выполнить перезапуск wiSLA.

    Экранные формы хода установки (Работа с программой установки)

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

    Внесение изменений в настройки работающей системы должно производиться через интерфейс программы установки. В этом случае они будут корректно внесены в соответствующие конфигурационные файлы системы и сохранены при обновлении системы. Программа установки должна выполняться от имени пользователя wisla и в его окружении. Для корректной работы программы не рекомендуется разворачивать окно на весь экран. Если установка wiSLA будет аварийно прервана или завершена с ошибкой, журналы установки можно найти в рабочем каталоге (install*.log, runtime.log). Информация о ходе установки также доступна в буфере эмулятора терминала.

    Запуск программы установки


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

    su -l wisla

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

    ./wisla*.run

    Должно открыться окно, показанное на рисунке 9

    Рис. 9 Интерфейс программы установки: окно предварительных настроек

    Если показанное на рисунке 9 окно не открылось, следует проанализировать сообщения об ошибках и созданные в текущем каталоге log-файлы.

    Навигация в программе установки осуществляется с помощью стрелок управления курсором, клавиш Home, End, Tab, Esc и Enter. Если требуется аварийно прервать работу программы, можно использовать комбинацию клавиш CTRL+C. Для штатного завершения программы установки следует использовать кнопку Exit. После выхода из программы установки экраны с историей выполнения доступны в буфере терминала.

    Перечень действий для установки wiSLA

    Ниже будут описаны действия для установки wiSLA на один сервер. В примере сервер будет назван VM1.

    1. Запустить программу установки.

    2. На первом экране принять предложенные настройки, нажав Enter. Программа установки проанализирует окружение. Если это первый запуск, откроется меню, показанное на рисунке 10.

    Рис. 10 Интерфейс программы установки: меню при первом запуске

    Из заголовка окна видно, что система не обнаружила установленной wiSLA на данном сервере. В описании к действию Install отображается версия, которая будет установлена, и номер сборки. Номер сборки на рисунке (цифры после «build») приведён на момент написания документа и может отличаться, так как любое изменение программного кода сопровождается пересборкой дистрибутива. Для перехода к следующему шагу нужно нажать Enter (выполнив тем самым действие «Next»), на выделенной строке «Install».

    3. На следующем экране задаётся топология будущего контура wiSLA. В примере, показанном на рисунке 11, установка всех компонентов проводится на один сервер VM1. В зависимости от размера окна некоторые настройки могут оказаться вне области видимости. Для доступа к ним нужно последовательно нажимать кнопку «вниз». По достижении самой нижней строки настройки на уровне границы окна под настройкой появляется отметка «100%».

    Настройка топологии выполняется один раз при первой установке системы. Впоследствии смена топологии через настройки программы установки не приведёт к желаемому результату (потребуется скорректировать ряд настроек вручную или выполнить установку «с нуля» с восстановлением данных из резервной копии), поэтому рекомендуется внимательно проверять введённые данные на данном этапе установки. После выполнения настроек переход к следующему экрану осуществляется кнопкой Next.

    Если требуется распределить компоненты по разным серверам, нужно указать соответствующие доменные или сетевые имена серверов. В этом случае нужно, чтобы между серверами был организован беспарольный доступ по ключу (SSH) для пользователя wisla.

     ноды для апп серверов(сбор данных c slamon агентов)  можно сделать 6 штук + op,cont по 2 штуки 

    Рис. 11 Интерфейс программы установки: топология

    4. После задания топологии система может запросить пароль пользователя wisla. Это нужно для выполнения команды создания рабочего каталога в /opt, что требует привилегий sudo.
    5. После создания рабочего каталога будет выполнена инициализация необходимых модулей и распаковка дистрибутива во временный каталог. Время ожидания зависит от производительности дисковой подсистемы сервера.
    6. На следующем экране (рисунок 12) требуется выбрать версию и архитектуру Java Runtime Environment (как правило, используется архитектура x86_64, а версия представлена одна).

    Рис.12 Интерфейс программы установки: выбор версии JRE

    7. После распаковки и выбора версии JRE программа установки оценит параметры сервера и автоматически рассчитает значения по распределению оперативной памяти для различных компонентов системы. Впоследствии их можно будет изменить, однако это стоит делать только в том случае, когда администратору точно известно, что предложенные значения неоптимальны или ошибочны.
    8. Настройка компонента Zookeper (рисунок 13). Рекомендуется оставить настройки, предложенные по умолчанию.

    Рис.13 Интерфейс программы установки: настройки компонента Zookeeper

    9. Настройка компонента Hadoop (рисунок 14). Рекомендуется оставить настройки, предложенные по умолчанию

    Рис.14 Интерфейс программы установки: настройки компонента Hadoop

    10. Настройка компонента HBase (рисунок 15). Рекомендуется оставить настройки, предложенные по умолчанию.

    Рис.15 Интерфейс программы установки: настройки компонента HBase

    11. Настройка компонента PostgreSQL (рисунок 16). Требуется прокрутить список настроек и изменить параметр «Trusted network/host». В примере сервер БД будет принимать все подключения от адресов 10.0.2.x. В случае неудачной настройки параметра установка wiSLA завершится ошибкой, так как сервер БД не сможет инициализировать БД.

    Рис. 16 Интерфейс программы установки: настройки компонента PostgreSQL

    12. Настройка компонента Wildfly (рисунок 17). Рекомендуется оставить настройки, предложенные по умолчанию.

    Рис.17 Интерфейс программы установки: настройки сервера приложений Wildfly

    13. Настройка топологии wiSLA. В примере все компоненты устанавливаются на сервер с именем VM1 (рисунок 18).

    Рис. 18 Интерфейс программы установки: настройки топологии wiSLA

    14. Настройки модуля сбора данных. Если планируется использование зондов wiProbe, нужно прокрутить список и изменить настройку «wiProbe destination». В ней задаётся адрес, который будет использоваться зондом для отправки данных в систему wiSLA, в форме URL (рисунок 19). Остальные параметры менять без необходимости не рекомендуется.

    Рис. 19 Интерфейс программы установки: настройки модуля сбора данных

    15. Настройки интеграции LDAP (в том числе, Active Directory), рисунок 20. Если LDAP не планируется использовать, рекомендуется оставить значения по умолчанию.

    Рис. 20 Интерфейс программы установки: настройки интеграции LDAP

    16. Настройки дополнительных ресурсов wiSLA. Рекомендуется оставить значения по умолчанию (рисунок 21).

    При необходимости ограничения исторических данных рекомендуется изучить рисунок 21.1

    Рис. 21 Интерфейс программы установки: настройки дополнительных ресурсов

    a. "Store metrics data only for this period" - Данный параметр отвечает за период в течении которого будет осуществляться хранение данных. Указывается в днях. Стандартное значение не указано. Минимально возможное значение 0 дней. Дробные значения и значения <0 недопустимы.

    Не рекомендуется устанавливать параметр "Store metrics data only for this period" = 0, в таком случае будут удалены все исторические данные показателей.

    b. "Metrics eraser schedule period" - Данный параметр отвечает за периодичность запуска механизма удаления данных из нереляционной базы Hbase. Указывается в днях. Стандартное значение - 7 дней. Минимально возможное значение 1 день. Дробные значения и значения <0 недопустимы.

    Не рекомендуется устанавливать параметр "Metrics eraser schedule period" = 0, в таком случае механизм удаления данных не будет запускаться.

    *Реализована возможность гибкой настройки параметров удаления данных. Например, можно удалять данные раз в год, оставляя при этом данные за последний месяц (Значение для первого параметра = 30, для второго параметра = 365)  

    11.png
    Рис. 21.1. Экран инсталлятора wiSLA (Вкладка wiSLA Resources Configuration)

    17. Настройка рассылки уведомлений (рисунок 22). На этом экране, как минимум, требуется указать параметры подключения к почтовому серверу. Если этого не сделать, новые пользователи не смогут получать письма о добавлении учётной записи и другие уведомления, отсылаемые на адрес электронной почты. Также здесь можно включить отправку SNMP-уведомлений по определённым событиям. Обязательные для настройки параметры перечислены в таблице 3.

    Рис.22 Интерфейс программы установки: настройка рассылки уведомлений

    Таблица 3 – Параметры подключения к почтовому серверу.

    Параметр

    Назначение

    Пример значения

    Notification enabled

    Включает рассылку по электронной почте

    true

    Mail host

    IP или DNS-адрес почтового сервера

    smtp.gmail.com

    Mail port

    Порт, прослушиваемый почтовым сервером

    587

    Mail protocol

    Протокол, используемый почтовым сервером

    smtps

    Mail SMTP auth

    Включается, если почтовый сервер поддерживает smtp-авторизацию

    true

    Mail SMTP STARTTLS

    Включается, если почтовый сервер поддерживает SMTP STARTTLS

    true

    Mail user

    Имя пользователя, от имени которого выполняется рассылка

    wisla.vm1

    Mail password

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

    пароль

    Tickets per notification

    Используется для группировки писем по инцидентам в блоки по N штук. Если установлена единица, на каждый инцидент отправляется по одному письму

    1

    18. Настройки wiSLA.Cloud (рисунок 23) позволяют включить или выключить облачный режим системы wiSLA и выполнить его настройку. Подробно данный режим работы рассмотрен в разделе «Облачный режим wiSLA».

    Рис. 23 Интерфейс программы установки: настройки wiSLA.Cloud

    19. Настройки портала оператора (Рис. 24) позволяют настроить URL для работы системы и задать, сколько дней актуален сохранённый профиль пользователя (имеется в виду сохранение, которое проводится флажком «Запомнить меня» на портале).

    Обращаем ваше внимание, если вы получаете доступ к порталу с помощью проброса портов или через прокси сервер, то вам необходимо отредактировать пункт HOST и в Whitelisted domains установить необходимые IP-адреса.

    Рис. 24 Настройки портала оператора

    20. Подтверждение настроек (рисунок 25). Программа установки отображает топологию. На этом этапе можно вернуться назад и внести забытые настройки. После подтверждения начинается процесс установки.

    Рис.25 Интерфейс программы установки: просмотр топологии и подтверждение настроек

    21. Если установка прошла удачно, программа выведет запрос на добавление сервиса wisla в автозагрузку. Данное действие возможно только в том случае, если пользователь wisla был добавлен в sudoers. В противном случае требуется отказаться от действия.

    22. После установки система автоматически запускается. Ход запуска можно отслеживать в журналах работы (Logs viewer – wiSLA logs) и статусах (Status). Признаком успешного запуска является сообщение в журнале server.log, выделенное на рисунке 26. Для полного запуска новой системе без инфраструктуры обычно требуется до 5 минут.

    Рис.26 Сообщение об успешном запуске системы wiSLA в communicator.log

    23. После запуска сервера приложений можно начинать работу с порталом. По умолчанию в системе присутствует пользователь Admin с паролем Admin@123. Зайдя с этими учётными данными, можно создать пользователя с ролью «Системный администратор», который сможет далее создавать инфраструктуру. Необходимо сменить пароль Admin при первом входе в целях безопасности.
    24. Если система в ходе установки добавлялась в список автозагрузки, рекомендуется выполнить пробный перезапуск сервера с целью проверки механизма автоматического запуска wiSLA.

    Инструкция по ручному развертыванию Wisla-wiprobe-agregator для Wisla

    В данной инструкции описано как установить Wisla WiProbe Aggregator в ручном режиме без использования скрипта предварительной настройки системы.

    Этап 1. Переход под пользователя wisla:

    На первом этапе  необходимо перейти под пользователя Wisla используя команду:

    sudo su - wisla
    Если пользователь wisla еще не существует в системе его необходимо создать используя следующие команды пошагово.

    1.Команда создания пользователя:

    sudo useradd -d /home/wisla -m -s /bin/bash wisla

    2.Команда установки пароля:

    sudo passwd wisla

    3.Добавление пользователя в файлы sudoers:

    echo "wisla    ALL=(ALL:ALL) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/wisla

    4.Настройка системных лимитов для пользователя wisla:

    # Создаем файл лимитов
    cat > /etc/security/limits.d/wisla << 'EOF'
    wisla   soft      nofile  32768
    wisla   hard     nofile  32768
    wisla   soft      nproc   32768
    wisla   hard     nproc   32768
    EOF

    5. Добавляем в PAM (если нет):

    echo "session required pam_limits.so" >> /etc/pam.d/common-session

     

    Этап 2. Подготовка каталога Wisla-wiprobe-agregator.

    После перехода под пользователя wisla вам необходимо создать каталог где будет располагаться Wisla-wiprobe-agregator, использую следующие команды:

    1.Создание директории в /opt/:

    sudo mkdir -p /opt/aggr-wisla
    sudo mkdir -p /opt/aggr-wisla/config
    sudo mkdir -p /opt/aggr-wisla/logs

     2.Проверить кому принадлежит каталог kafka:

    ls -l /opt/

    3.Сменить пользователя для каталога agg-wisla если принадлежит не wisla используя следующую команду:

    sudo chown -R wisla:wisla /opt/aggr-wisla

    4.Переходим в каталог:

    cd /opt/aggr-wisla

    Этап 3. Копирование архива Java:
    Предполагается, что архив OpenJDK11U-jdk_x64_linux_hotspot_11.0.28_6.tar.gz уже передан или скачан с корпоративного файла обменника.  

    1.Скопируем его из домашней директории wisla используя следующую команду:

    sudo cp ~/OpenJDK11U-jdk_x64_linux_hotspot_11.0.28_6.tar.gz /opt/aggr-wisla/

    2.Распаковка архива Java:

    sudo tar -xzf OpenJDK11U-jdk_x64_linux_hotspot_11.0.28_6.tar.gz

    3.Добавление в переменные среды:

    JAVA_HOME="/opt/aggr-wisla/$(ls -d jdk-11* 2>/dev/null | head -1)"
    echo "Java Home: $JAVA_HOME"

    4.Проверка java:

    $JAVA_HOME/bin/java -version

    Этап 4. Настройка переменного окружения:

    Выполнить следующие команды для добавления переменных окружений для пользователя wisla:

    sudo -u wisla bash -c "echo 'export JAVA_HOME=\"$JAVA_HOME\"' >> /home/wisla/.bashrc"
    sudo -u wisla bash -c "echo 'export PATH=\"\$JAVA_HOME/bin:\$PATH\"' >> /home/wisla/.bashrc"

    Этап 5. Копирование JAR файла:

    Предполагается, что архив wisla-wiprobe-aggregator.jar уже передан или скачан с корпоративного файла обменника.

    1.Скопируем его из домашней директории wisla используя следующую команду:  

    sudo cp ~/wisla-wiprobe-aggregator.jar /opt/aggr-wisla/

    2.Выдача прав на исполнение и изменение владельца:

    sudo chmod +x /opt/aggr-wisla/wisla-wiprobe-aggregator.jar
    sudo chown wisla:wisla /opt/aggr-wisla/wisla-wiprobe-aggregator.jar

    3.Создаем конфигурационный файл

    sudo cat > /opt/aggr-wisla/config/application.properties << EOF
    server.servlet.context-path=/aggregator
    server.port=18080
    aggregator.kafka-enabled=true
    aggregator.wisla-kafka.bootstrap.servers="Указать Ip Адресс сервера кафка :9092"
    aggregator.wisla-kafka.consumer-threads-count=4
    aggregator.id=1
    aggregator.buffered-data-processing.interval=5000
    aggregator.refresh-data-senders.interval=30000
    aggregator.data-batch-length.limit=1000000
    aggregator.buffer-size.limit=1500
    aggregator.wisla.dc-nodes="Указать Ip Адресс сервера кафка :8080"
    aggregator.round.robbin.algorithm=true
    spring.servlet.multipart.enabled=true
    spring.application.name=wisla-wiprobe-aggregator
    logging.level.root=WARN
    logging.level.com.wisla=INFO
    logging.file.name=/opt/aggr-wisla/logs/aggregator.log
    logging.pattern.console=
    logging.pattern.file=%d{yyyy-MM-dd HH:mm:ss} - %msg%n
    management.endpoints.web.exposure.include=health,info,metrics
    management.endpoint.health.show-details=always
    EOF

    4.Изменение пользователя:

    sudo chown wisla:wisla /opt/aggr-wisla/config/application.properties

    5.Создать юнит для wisla-wiprobe-aggregator:

    sudo cat > /etc/systemd/system/wisla-wiprobe-aggregator.service << EOF
    [Unit]
    Description=Wisla WiProbe Aggregator Service
    After=network.target kafka.service
    
    [Service]
    Type=simple
    User=wisla
    Group=wisla
    WorkingDirectory=/opt/aggr-wisla
    Environment="JAVA_HOME=$JAVA_HOME"
    Environment="PATH=$JAVA_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
    ExecStart=$JAVA_HOME/bin/java -jar /opt/aggr-wisla/wisla-wiprobe-aggregator.jar
    SuccessExitStatus=143
    Restart=always
    RestartSec=10
    
    [Install]
    WantedBy=multi-user.target
    EOF

    Этап 6. Запуск и проверка:

    Обновляем systemd:

    sudo systemctl daemon-reload

    Включаем автозагрузку:

    sudo systemctl enable wisla-wiprobe-aggregator

    Запускаем Kafka:

    sudo systemctl start wisla-wiprobe-aggregator

    Проверяем статус:

    sudo systemctl status wisla-wiprobe-aggregator

    Активация модуля автокорреляции

    Для активации модуля автокорреляции необходимо:

    Автокоррелятор wiCore должен быть установлен и запущен (см. Руководство администратора wiCore).

    1. Запустить программу установки. Перейти в основное меню. Внешний вид основного меню показан на рисунке 1.

    Рис. 1 Главное меню программы установки в случае обнаружения установленной wiSLA

    2. Выбрать пункт меню «Config update». Если этого пункта меню нет в списке, установка была
    выполнена некорректно или на первом экране при запуске программы установки были
    указаны ошибочные данные.
    3. Перейти на экран wiSLA Resources Configuration. 

    За активацию автокоррелятора отвечают два параметра:

    image-1680716978406.png

    Для активации:

    image-1680717866828.png


    4. Подтвердить настройки.

    5. Выполнить перезапуск wiSLA.

    Действия при неудачной попытке установки и восстановление работоспособности в случае сбоя

    Действия при неудачной попытке установки wiSLA

    В случае если установка wiSLA завершилась c ошибкой, требуется:

    1. Проанализировать причину сбоя установки. Для этого можно использовать log-файлы программы установки в текущем каталоге, а также прокрутку в окне для просмотра хода установки.
    2. Завершить все процессы, связанные с java.
    3. Выйти из программы установки и удалить новые каталоги в /home/wisla (hadoop, hbase, postgresql, zookeeper).

    Повторить попытку установки с исправленными настройками.

    Регламент по восстановлению работоспособности системы wiSLA в случае сбоя

    Как правило, внешние проявления не дают информации об основной причине сбоя. Ими могут быть: 

    При возникновении одного или нескольких проявлений требуется провести первичную диагностику для установления причины сбоя (таблица 5).

    Таблица 5 – Первичная диагностика и устранение проблемы.

    Возможная причина сбоя

    Действия по выявлению

    Устранение проблемы

    1. Отказ одного из компонентов wiSLA (не является самостоятельной причиной, требует продолжения диагностики)

    Просмотр статусов компонентов wiSLA в программе установки

    Поиск основной причины сбоя, перезапуск всех компонентов wiSLA

    2. Резкий скачок времени на сервере

    Проверка времени на каждом из узлов, где установлена wiSLA.

    Проверка работоспособности службы NTP

    Установка корректных даты и времени, запуск NTP, перезапуск всех компонентов wiSLA. Если база данных испорчена некорректными данными, потребуется выполнить восстановление из резервной копии (обратитесь в службу технической поддержки)

    3. Продолжительный разрыв связи между узлами wiSLA

    Определение доступности серверов, изучение журналов работы системы, опрос системных администраторов

    Перезапуск всех компонентов wiSLA

    4. Аварийная перезагрузка одного или нескольких узлов

    Сравнение времени непрерывной работы серверов wiSLA, изучение журналов работы операционной системы сервера с наименьшим временем непрерывной работы

    Перезапуск всех компонентов wiSLA

    5. Исчерпано свободное место на одном из дисков

    Получение информации об использовании дискового пространства на всех серверах wiSLA

    Очистка дисков, добавление дисков, перезапуск всех компонентов wiSLA. Если перезапуск не решает проблему, возможно, повреждена база данных или программные файлы. В этом случае потребуется восстановить систему из резервной копии или выполнить полную переустановку системы (обратитесь в службу технической поддержки)

    6. Вмешательство в работу сервера (изменение настроек сети, файловой системы и т.п. при работающей wiSLA)

    Опрос системных администраторов

    Перезапуск всех компонентов wiSLA

    7. Неудачное обновление wiSLA

    Чтение журнальных файлов после обновления

    Обратитесь в службу технической поддержки

    8. Аппаратные проблемы на сервере

    Определение проблемного сервера, перезагрузка, просмотр данных POST, изучение журналов операционной системы, проверка диска, тестирование ОЗУ, замена компонентов на заведомо исправные и т.д. Выходит за рамки настоящего Руководства

    Действия зависят от характера сбоя. Если потери данных не было, будет достаточно перезапустить все компоненты wiSLA.

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

    Действия по обслуживанию wiSLA

    Основные действия по обслуживанию wiSLA перечислены в таблице 4.

    Таблица 4 – Действия по обслуживанию системы wiSLA.

    Что требуется сделать?

    Последовательность действий

    1. Просмотреть информацию о статусах всех компонентов wiSLA

    1. Запустить программу установки wiSLA.

    2. Выбрать и открыть "Status".

    3. Выбрать "All ".

    Незапущенные компоненты можно определить по наличию "[FAIL]" и "NOT STARTED" в строке.

    2. Остановить все компоненты wiSLA с помощью программы установки

    1. Запустить программу установки wiSLA.

    2. В программе установки wiSLA выбрать "Maintenance" - "Stop All". 

    3. Проверить результат. Посмотреть информацию по статусам всех компонентов wiSLA.

    3. Управление запуском wiSLA с помощью скрипта запуска (для варианта установки всех компонентов на 1 сервер)

    Для управления запуском следует получить доступ к консоли сервера wiSLA, пользователь “wisla".

    Запуск всех компонентов:

    $    sudo systemctl start wisla5

    или

    $    sudo /opt/wisla5/scripts/wisla5.sh start

    Остановка всех компонентов:

    $    sudo systemctl stop wisla5

    или

    $    sudo /opt/wisla5/scripts/wisla5.sh stop

    Проверка статусов всех компонентов:

    $    sudo systemctl status wisla5

    или

    $    sudo /opt/wisla5/scripts/wisla5.sh status

    Запуск только сервера приложений:

    $    sudo /opt/wisla5/scripts/wisla5.sh start-wildfly

    Остановка только сервера приложений:

    $    sudo /opt/wisla5/scripts/wisla5.sh stop-wildfly

    Перезапуск только сервера приложений:

    $    sudo /opt/wisla5/scripts/wisla5.sh restart-wildfly

    Проверка состояния сервера приложений:

    $    sudo /opt/wisla5/scripts/wisla5.sh status-wildfly

    4. Перезапустить все компоненты wiSLA

    1. Запустить программу установки wiSLA.

    2. В программе установки wiSLA выбрать "Maintenance" - "Stop All", дождаться завершения выполнения команды.

    3. Выбрать в меню "Start All".

    4. Дождаться полного запуска системы.

    5. Проверить статусы компонентов.

    5. Узнать, что система полностью запущена

    1. Запустить программу установки.

    2. Выбрать в меню программы установки раздел "Log viewer" - "wiSLA” – “Server.log at..."

    3. Нажать SHIFT+F для автоматического обновления файла.

    Запись об удачном запуске:

    wiSLA COMPONENTS ARE FULLY DEPLOYED, INTERCONNECTED AND READY TO WORK.

    4. Завершить просмотр файла: CTRL+C, затем q.

    5. Проверить статусы всех компонентов.

    6. Перезапустить сервер приложений

    1. Запустить программу установки wiSLA.

    2. В программе установки wiSLA выбрать "Maintenance" – “wiSLA” – "Stop All", дождаться завершения выполнения команды.

    3. Выбрать в меню "Start All", выполнить команду.

    4. Дождаться полного запуска системы.

    5. Проверить статус wiSLA.

    7. Получить информацию о свободном месте на диске

    В ssh-сессии выполнить команду:

    $    df -h

    8. Получить информацию о времени непрерывной работы сервера

    В ssh-сессии выполнить команду:

    $    uptime

    9. Просмотреть журналы работы операционной системы

    В SSH-сессии выполнить команду:

    $    less /var/log/messages

    10. Просмотреть журналы работы системы wiSLA

    1. Запустить программу установки.

    2. Открыть "Logs viewer".

    3. Выбрать компонент системы.

    4. Выбрать журнал для просмотра.

    11. Проверить время и дату в операционной системе

    В ssh-сессии выполнить команду:

    $    date

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

    12. Проверить работу службы NTP

    В SSH-сессии выполнить команду:

    $    sudo systemctl status ntpd

    Если служба запущена, проверить доступность NTP-серверов для синхронизации и статус синхронизации:

    $    ntpq –npcrv

    13. Добавить новый плагин

    Для добавления нового плагина требуется:

    1. Скопировать файл плагина в каталог /opt/wisla5/wildfly/current/wisla_plugins/.

    2. Выдать пользователю wisla права на файл:

    $    chown wisla.wisla *.jar

    3. Запустить программу установки wiSLA.

    4. Перейти в меню «Maintenance» - «wiSLA» и выполнить «Reload_plugins».

    14. Загрузить модуль коллектора Netflow

    Для загрузки коллектора Netflow требуется:

    1. Получить в службе поддержки или найти в комплекте поставки файл модуля коллектора wisla-netflow-collector-web-5.1-SNAPSHOT.war.

    2. Скопировать файл в каталог

    /opt/wisla5/wildfly/current/standalone/deployments

    3. Перезапустить сервер приложений.

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

    $    touch /opt/wisla5/wildfly/current/standalone/deployments/wisla-netflow-collector-web-5.1-SNAPSHOT.war.dodeploy

    После получения доступа на портал оператора потребуется добавить коллектор в качестве зонда «Netflow collector» с IP-адресом 127.0.0.1 (раздел «Зонды», кнопка «+ Создать», тип «Netflow collector»).

    Установка wiSLA в контейнер podman

    Установка wiSLA может быть произведена с помощью самораспаковывающегося архива.

    Необходимо создать не root пользователя и настроить использование sudo без пароля 

    Необходимые действия:

    1)Установить podman и zstd

    image.png

    image.png

    2)Скачать executable tarball

    image.png

    3)Задать  права для исполняемого файла 

    image.png

    chmod +x podmanizedWisla.sh

    4)Запустить 

    image.png

    image.png

    image.png

    ./podmanizedWisla.sh

    5)Будет создан и запущен podman контейнер wisla-app

    Имеется возможность управлять wiSLA с помощью systemd сервиса:

    Проверить статус сервиса

    systemctl --user status wisla-podman

    Запустить сервис

    systemctl --user start wisla-podman

    Остановить сервис

    systemctl --user stop wisla-podman

    Дополнительно имеется возможность управлять wiSLA с помощью скрипта tool.sh (устанавливается в домашнюю папку пользователя)

    изменить внешний хост с портом

    ./tool.sh change-external-host 10.9.0.1 80 443

    изменить адрес для подключения зонда к wisla

    ./tool.sh change-wiprobe-dst 10.9.0.1 80

    запустить скрипт wisla5.sh для остановки и запуска wisla (необходимо остановить перед остановкой контейнера)

    ./tool.sh wisla-script start

    открыть логи application server и дождаться следующего сообщения

    image.png

    ./tool.sh wisla-wildfly-log

    запустить скрипт wisla5.sh для остановки и запуска wisla (необходимо остановить перед остановкой контейнера)

    ./tool.sh wisla-script stop

    остановить контейнер

    ./tool.sh stop-container

    запустить контейнер

    ./tool.sh start-container

    Скрипты для взаимодействия с wiSLA

    Поддерживаемые параметры установщика Wisla

    Чтобы узнать доступные параметры установщика Wisla, выполнить команду:

    ./wisla-5.2.9-2502251017.run --help

    Будет следующий вывод:

    wiSLA 5.2.9 build 2502251017 installer
    usage: ./wisla-5.2.9-2502251017.run <options>
    This script installs the wiSLA system cluster.
    OPTIONS:
        Installer options
        -h      Show this message
        -t      Text mode only
        --hadoop-install                        Install hadoop system only
        --silent-install                        Silent install
        --silent-update                         Silent update
        --silent-fast-update                    Silent update without backup stage
        --silent-fast-update-with-new-db <Postrgres DB dump path>  Silent update without backup stage with new database restoring
        --silent-fast-update-replace-db-n-hbase <Postgres DB dump path> <HBase data dump path>  Silent update without backup stage with complete data overwrite
        
        Package options
        -x      Unpack distribution from self
        -v      Display version information
    
    ENVIRONMENT:
        INSTALL_TEMP - directory used to store temporary files. Default: /tmp/
        INSTALL_LOG  - installation log name. Default: install.YYYY-MM-dd_HH:mm:ss.log
        EXTERNAL_DISTRIBUTION_FILE - used to specify external distribution file
        SCENARIO - used to switch default scenario
    

    Варианты обновления системы

    1. Установка wisla с нуля

    Убедиться что в системе отсутствуют установленные ранее папки : hadoop, postgresql, zookeeper, hbase. Иначе будет полуавтоматический режим установки, где необходимо будет подтверждать очистку каталогов, а при попытке нажать No процесс установки будет прерван.

    ./wisla-5.2.9-xxxxxxxx.run --silent-install

    2. Стандартное обновление (с резервным копированием)

    ./wisla-5.2.9-xxxxxxxx.run --silent-update

    Этот режим выполняет обновление системы с сохранением резервных копий данных.

     

    3. Быстрое обновление без резервного копирования

    ./wisla-5.2.9-xxxxxxxx.run --silent-fast-update

    Этот режим пропускает этап создания резервных копий, ускоряя процесс обновления.

     

    4. Быстрое обновление с восстановлением новой базы данных PostgreSQL

    ./wisla-5.2.9-xxxxxxxx.run --silent-fast-update-with-new-db /path/to/postgres_dump.sql

    Здесь /path/to/postgres_dump.sql — путь к файлу дампа PostgreSQL, который будет использован для восстановления данных.

     

    5. Полная замена базы данных и HBase

    ./wisla-5.2.9-xxxxxxxx.run --silent-fast-update-replace-db-n-hbase /path/to/postgres_dump.sql /path/to/hbase_data

    Где:

     

    6. Установка только Hadoop

    ./wisla-5.2.9-xxxxxxxx.run --hadoop-install

     

    Дополнительно:

    По умолчанию логи установки сохраняются в файл install.YYYY-MM-dd_HH:mm:ss.log. Изменить имя лога можно так:

    export INSTALL_LOG=my_install_log.txt
    export INSTALL_TEMP=/custom/temp/dir
    ./wisla-5.2.9-xxxxxxxx.run -t

     

    Управление всеми сервисами Wisla

    /opt/wisla5/scripts/wisla5.sh status
    /opt/wisla5/scripts/wisla5.sh stop
    /opt/wisla5/scripts/wisla5.sh start
    /opt/wisla5/scripts/wisla5.sh restart

     

    Управление только сервисом Wisla

    /opt/wisla5/scripts/wisla.sh status
    /opt/wisla5/scripts/wisla.sh stop
    /opt/wisla5/scripts/wisla.sh start
    /opt/wisla5/scripts/wisla.sh restart

    Скрипт:

    #!/bin/bash
    
    # Source function library.
    WILDFLY_WORK=/opt/wisla5/wildfly/current
    wildfly_pid_calc=$(pgrep -u wisla -f "jboss.home.dir=${WILDFLY_WORK}" | wc -l)
    
    keyphrase_blank_wildfly_started="WildFly .* started in"
    
    function start_blank_wildfly() {
    	# анализ log-файла
    	[ -r $WILDFLY_WORK/standalone/log/server.log ] && basic_blank_wildfly_started_counter=$(egrep -c "keyphrase_blank_wildfly_started" $WILDFLY_WORK/standalone/log/server.log)
    	[ -z "basic_blank_wildfly_started_counter" ] && basic_blank_wildfly_started_counter=0
    	# запуск пустого Wildfly
    	cd $WILDFLY_WORK/bin
    	nohup ./standalone.sh > /dev/null 2>&1&
    }
    
    function start_deploy() {
    	cd $WILDFLY_WORK/standalone/deployments
    	for file in *.?ar;
    	do
    		touch "$file".dodeploy
    	done
    }
    
    function wait_for_blank_wildfly() {
        timeout=300
        blank_wildfly_counter_started=0
        blank_wildfly_current_counter_started=0
        if [ ! -e "$WILDFLY_WORK/standalone/log/server.log" ] ; then
            touch "$WILDFLY_WORK/standalone/log/server.log"
        fi
        basic_blank_wildfly_started_counter=$(egrep -c "$keyphrase_blank_wildfly_started" $WILDFLY_WORK/standalone/log/server.log)
        for i in $(seq 1 $timeout);
        do
    	blank_wildfly_started_counter=$(egrep -c "$keyphrase_blank_wildfly_started" $WILDFLY_WORK/standalone/log/server.log)
    	((total_wildfly_start_time = total_wildfly_start_time + 1))
    	if [ $blank_wildfly_started_counter -eq $((basic_blank_wildfly_started_counter+1)) ]
    	then
    	    echo "Starting blank Wildfly..."
    	    return
    	fi
        sleep 1
        done
        echo "Error during blank Wildfly start!"
    }
    
    function start() {
    	wildfly_pid_calc=$(pgrep -u wisla -f "jboss.home.dir=${WILDFLY_WORK}" | wc -l)
    	if [ "$wildfly_pid_calc" -eq 0 ]
    	then
    		total_wildfly_start_time=0
    		# очистка каталогов deployments (кроме war, ear) и tmp перед запуском
    		find $WILDFLY_WORK/standalone/deployments -regextype posix-egrep ! -regex ".*(ear|war)" -type f -exec rm -f {} \;
    		rm -rf $WILDFLY_WORK/standalone/tmp/*
    		rm -rf /tmp/workspace_*-*-*-*-*
    		cd $WILDFLY_WORK/standalone
    		# запуск пустого wildfly
    		echo "Waiting for the blank Wildfly application server to start (up to 5 minutes)... "
    		start_blank_wildfly
    		# ожидание запуска пустого Wildfly
    		wait_for_blank_wildfly
    		# начало деплоя артефактов (в порядке, выбранном Wildfly)
    		start_deploy
    	else
            echo "Error. Wildfly is already running!"
    		return 1
    	fi
    }
    
    
    function stop() {
        echo "wiSLA is stopping..."
        kill `pgrep -f "jboss.home.dir=${WILDFLY_WORK}"` &> /dev/null
        ATTEMPTS=0
        while [[ ! -z `pgrep -f "jboss.home.dir=${WILDFLY_WORK}"` ]]; do
            echo "Waiting for the Wildfly application server to stop..."
            (( ATTEMPTS = ATTEMPTS + 1 ))
            if [ $ATTEMPTS -gt 10 ]
                then
                echo "60 seconds is elapsed, trying to stop the process with -9 signal"
                kill -9 `pgrep -f "jboss.home.dir=${WILDFLY_WORK}"`
            fi
            sleep 5
        done
    }
    
    function status() {
        PID=`pgrep -f "jboss.home.dir=${WILDFLY_WORK}"`
        [[ ! -z $PID ]] && echo "Started with PID : $PID" || echo "Stopped"
    }
    
    case "$1" in
        start)
            start
            ;;
        stop)
            stop
            ;;
        restart)
            stop
            start
            ;;
        try-restart)
            stop
            start
            ;;
        status)
            status
            ;;
        *) exit 1
    esac
    
    exit 0
    

     

    Реиндексация

    /opt/wisla5/scripts/wi-reindex.sh

    Скрипт:

    #!/bin/bash
    # Source function library.
    JRE_WORK="/opt/wisla5/jre/current"
    
    echo "Reindexing wisla engine lucene database..."
    ${JRE_WORK}/bin/java -jar /opt/wisla5/util/jmx/cmdline-jmxclient-0.10.3.jar - localhost:1090 "wisla-engine:name=nodeReindexer" reindexFullTextSearch
    
    exit 0
    

     

    /opt/wisla5/scripts/wi-reindex-standalone.sh

    Скрипт:

    #!/bin/bash
    # Source function library.
    JRE_WORK="/opt/wisla5/jre/current"
    POSTGRES_HOST="alfa-test"
    DB_NAME="wisla"
    USER="wisla"
    
    echo "Reindexing database"
    ${JRE_WORK}/bin/java -jar -Dhibernate.connection.username="${USER}" \
    -Dhibernate.search.base_indexes_directory="/opt/wisla5/wildfly/current/bin/searchindexes/engine/" \
    -Dhibernate.connection.url="jdbc:postgresql://${POSTGRES_HOST}:5462/${DB_NAME}" \
    -Dcom.sun.xml.bind.v2.bytecode.ClassTailor.noOptimize=true \
    /opt/wisla5/util/reindexer/wisla-reindexer.jar
    echo "Reindex finished"
    exit 0
    

     

    Создание резервных копий баз данных

    Файл шаблона скрипта: /opt/wisla5/backup_scripts/postgres_backup_template.sh

    Пример запуска резервного копирования:

    pg_dump --host "wisla" --port 5432 --username "wisla" --format custom --blobs --no-owner --encoding UTF8 --verbose --file /home/wisla/backup/wisla.backup

    Альтернативный способ через шаблонный скрипт:

    sed "s|{{FILE-NAME}}|/home/wisla/backup/wisla.backup|" /opt/wisla5/backup_scripts/postgres_backup_template.sh | bash

    Скрипт:

    #!/bin/bash
    pg_dump --host "alfa-test" --port 5432 --username "wisla" --format custom --blobs --no-owner --encoding UTF8 --verbose --file {{FILE-NAME}} wisla
    ssh {{LOGIN}}@{{BACKUP-SERVER}} "mkdir -p {{DESTINATION}}"
    scp ./{{FILE-NAME}} {{LOGIN}}@{{BACKUP-SERVER}}:{{DESTINATION}}
    rm -f ./{{FILE-NAME}}


    Файл шаблона скрипта: /opt/wisla5/backup_scripts/hbase_backup_template.sh, но корректность работы проверить не удалось, пробовал  переписать скрипт, но возникает проблема при выполнении команды импорта снимков в папку.

    #!/bin/bash
    
    BACKUP_DIR=$(mktemp -d -t -p ~/ hbase_backup.XXXXXXXX)
    mkdir ${BACKUP_DIR}/backup
    BACKUP_PARRENT_DIR=${BACKUP_DIR}
    BACKUP_DIR=${BACKUP_DIR}/backup
    
    hbase org.apache.hadoop.hbase.mapreduce.Export -D mapred.output.compress=true {{TABLE-PREFIX}}-tsdb {{TABLE-PREFIX}}-tsdb-backup 1 {{START-TIMESTAMP}} {{END-TIMESTAMP}}
    hbase org.apache.hadoop.hbase.mapreduce.Export -D mapred.output.compress=true {{TABLE-PREFIX}}-tsdb-uid {{TABLE-PREFIX}}-tsdb-uid-backup 1 {{START-TIMESTAMP}} {{END-TIMESTAMP}}
    hbase org.apache.hadoop.hbase.mapreduce.Export -D mapred.output.compress=true {{TABLE-PREFIX}}-tsdb-nf {{TABLE-PREFIX}}-tsdb-nf-backup 1 {{START-TIMESTAMP}} {{END-TIMESTAMP}}
    hbase org.apache.hadoop.hbase.mapreduce.Export -D mapred.output.compress=true {{TABLE-PREFIX}}-tsdb-uid-nf {{TABLE-PREFIX}}-tsdb-uid-nf-backup 1 {{START-TIMESTAMP}} {{END-TIMESTAMP}}
    hbase org.apache.hadoop.hbase.mapreduce.Export -D mapred.output.compress=true {{TABLE-PREFIX}}-tsdb-lts {{TABLE-PREFIX}}-tsdb-lts-backup 1 {{START-TIMESTAMP}} {{END-TIMESTAMP}}
    
    hdfs dfs -copyToLocal /user/wisla/{{TABLE-PREFIX}}-tsdb-backup ${BACKUP_DIR}/{{TABLE-PREFIX}}-tsdb
    hdfs dfs -copyToLocal /user/wisla/{{TABLE-PREFIX}}-tsdb-uid-backup ${BACKUP_DIR}/{{TABLE-PREFIX}}-tsdb-uid
    hdfs dfs -copyToLocal /user/wisla/{{TABLE-PREFIX}}-tsdb-nf-backup ${BACKUP_DIR}/{{TABLE-PREFIX}}-tsdb-nf
    hdfs dfs -copyToLocal /user/wisla/{{TABLE-PREFIX}}-tsdb-uid-nf-backup ${BACKUP_DIR}/{{TABLE-PREFIX}}-tsdb-uid-nf
    hdfs dfs -copyToLocal /user/wisla/{{TABLE-PREFIX}}-tsdb-lts-backup ${BACKUP_DIR}/{{TABLE-PREFIX}}-tsdb-lts
    
    cd ${BACKUP_DIR}/..
    tar -czvf {{FILE-NAME}} backup
    hdfs dfs -rm -r /user/wisla/{{TABLE-PREFIX}}-tsdb-backup
    hdfs dfs -rm -r /user/wisla/{{TABLE-PREFIX}}-tsdb-uid-backup
    hdfs dfs -rm -r /user/wisla/{{TABLE-PREFIX}}-tsdb-nf-backup
    hdfs dfs -rm -r /user/wisla/{{TABLE-PREFIX}}-tsdb-uid-nf-backup
    hdfs dfs -rm -r /user/wisla/{{TABLE-PREFIX}}-tsdb-lts-backup
    
    ssh {{LOGIN}}@{{BACKUP-SERVER}} "mkdir -p {{DESTINATION}}"
    scp ./{{FILE-NAME}} {{LOGIN}}@{{BACKUP-SERVER}}:{{DESTINATION}}
    
    rm -f ./{{FILE-NAME}}
    cd ../
    rm -r ${BACKUP_PARRENT_DIR}
    

     

    !!!Но для выполнения скрипта надо настраивать hbase и hadoop


    Дополнительно:

    /opt/wisla5/scripts/reload-plugins.sh

    Скрипт:

    #!/bin/bash
    # Source function library.
    JRE_WORK=/opt/wisla5/jre/current
    
    ${JRE_WORK}/bin/java -jar /opt/wisla5/util/jmx/cmdline-jmxclient-0.10.3.jar - localhost:1090 "wisla-engine:name=pluginManager" reloadPlugins
    
    exit 0
    
    /opt/wisla5/scripts/remove-old-logs.sh

    Скрипт:

    #!/bin/bash
    DAYS=10
    LOG_DIR=/opt/wisla5/wildfly/current/standalone/log
    for file in "$( find ${LOG_DIR}/ -maxdepth 1 -type f -mtime +${DAYS} )"
    do
        rm -f ${file}
    done
    

     


    Инструкция по полуавтоматическому обновлению wiSLA (alfa-test)

    1. Подготовка к обновлению

    1.1 - Альфа запущена (либо остановлена)

    1.2 - Для структурирования папок, необходимо проверить наличие актуальной папки общей версии в каталоге /home/wisla/wisla_distr (например, 5210).

    1.3 - Если папки нет, создать новую, иначе перейти в существующую (/home/wisla/wisla_distr/5210).

          image.png

    1.4 - Внутри создать папку с наименованием версии дистрибутива wisla (/home/wisla/wisla_distr/5210/2503121748). Возможен вариант создания по порядку (1,2,3...), учитывая пропуски.

            image.png

    1.5 - Если в каталоге /home/wisla/wisla_distr/5210/ больше 15 папок, удалить старые до 7 штук (можно вручную).(Для этого написан скрипт, если количество папок накопилось от 15 шт, то удалять ранее созданные папки, фильтруя по дате изменений, оставляя только 7 последних обновленных)

    #!/bin/bash
    
    # Перейти в каталог /home/wisla/529/111
    cd /home/wisla/529/111
    
    # Получить количество папок в каталоге
    folder_count=$(find . -maxdepth 1 -type d | wc -l)
    
    # Если количество папок больше 15, удалить старые 8 папок
    if [ $folder_count -gt 15 ]; then
        old_folders=$(ls -dt */ | tail -n +8)
        echo "$old_folders" | xargs rm -rf
        remaining_folders=$(ls -dt */ | head -n 7)
        echo "Оставлены следующие папки:"
        echo "$remaining_folders"
    fi
    

    1.6 - В созданную папку, с наименованием версии, загрузить актуальную версию дистрибутива (например, wisla-5.2.10-2503121748.run). Перейти в данную папку.

          image.png

    Проверить процесс загрузки файла по наименованию файла, об этом сигнализирует изменение имени wisla-5.2.10-2503121748.run.filepart на wisla-5.2.10-2503121748.run).

    1.7 - Далее дать разрешение на запуск файла, выполнив команду: 

    chmod +x wisla-5.2.10-2503121748.run

    2. Запуск обновления

    1. Запустить автоматическое обновление:

    ./wisla-5.2.10-2503121748.run --silent-update

    Обновление включает формирование дампов PostgreSQL, HBase и конфигурационных файлов. Перед окончанием выполнения скрипта обновления, система выполнит реиндекс, в консоли будет соответствующее сообщение  «Reindexing wisla engine lucene database..». 

    image.png

    После выполнения всех сценариев закроет установщик, перейдет в командную строку.

    В каталоге ожидается наличие всех дампов:

    image.png

     2. Проверить статус обновления возможно выполнив API-запрос:

    GET https://alfa-test.wellink.ru/engine/api/v1/system/state

    Обновление завершено, когда:

    1) статус сменится с 404 на 200 ,

    2) в server.log  будет строка указывающая что реиндекс завершен:

    INFO  [com.wellink.wisla.core.model.NodeReindexerImpl] (RMI TCP Connection(2)-10.11.11.20) slaOpFullTextReindexer reindex procedure complete.

    3) в install....log завершение строкой:

    Update complete!

    Ссылки на дополнительную документацию:

    Ручная установка и обновление wisla

    - Скрипты для взаимодействия с wiSLA