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

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

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

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


- На время установки сервер должен иметь доступ к стандартным репозиториям вашей операционной системы для их автоматической загрузки.
- **Если доступ к репозиториям невозможен**, необходимо заранее подготовить локальный набор пакетов. Для получения инструкций обратитесь в службу технической поддержки.
- Для корректного заполнения адресов и автоматического определения координат точек доступа серверы wiSLA и рабочие места пользователей должны иметь доступ к сети интернет. Если доступ к сети интернет невозможен, потребуется развернуть локальный сервер карт (обратитесь в службу поддержки за получением инструкций).
- Для возможности рассылки уведомлений по электронной почте серверам wiSLA должен быть доступен корпоративный или внешний сервер электронной почты.
- Для корректной работы механизмов системы требуется обеспечить синхронизацию времени по протоколу **NTP** на серверах wiSLA, зондах и программных агентах. Настройка **NTP** не описывается в настоящем документе.
- Для редактирования конфигурационных файлов в процессе настройки рекомендуется установить удобный редактор, например: **Nano, Vim , Vi** или **mcedit**.

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

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

- Архитектура: x86\_64
- CPU: 4 ядер
- RAM: 12 ГБ
- Диск: 60 ГБ SSD (рекомендуется) / HDD (c минимальным хранением резервных копий) , 100 ГБ SSD (рекомендуется) / HDD (с хранением резервных копий)

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

- Архитектура: x86\_64
- CPU: 8 ядер
- RAM: 16 ГБ
- Диск: 250 ГБ SSD (рекомендуется) / HDD (с долгосрочным хранением резервных копий)

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

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

- Astra Linux Special Edition 1.8
- Astra Linux Special Edition 1.7
- Debian 11 , 12, 13
- Ubuntu 20, 22 , 24, 25 LTS
- RedOS 7.3, 8.0
- ОС Атлант Giant
- Alt linux 10.4
- CentOS 8, 9

<p class="callout info">Примечание: Использование операционных систем, не указанных в списке, требует предварительного анализа и согласования со службой технической поддержки.</p>

##### **Зависимости**

- Astra Linux Special Edition 1.8 **[astra.zip](https://wiki.wellink.ru/attachments/1367)**
- Astra Linux Special Edition 1.7 **[astra.zip](https://wiki.wellink.ru/attachments/1367)**
- Debian 11 , 12, 13 **[deb.zip](https://wiki.wellink.ru/attachments/1369)**
- Ubuntu 20, 22 , 24, 25 LTS
- RedOS 7.3, 8.0 **[redos.zip](https://wiki.wellink.ru/attachments/1368)**
- ОС Атлант Giant
- Alt linux 10.4
- CentOS 8, 9 **[astra.zip](https://wiki.wellink.ru/attachments/1367)**

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

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

- Mozilla Firefox версии 134.0 и выше
- Google Chrome версии 132.0.6834.83 и выше
- Яндекс. Браузер версии 24.12.2.856 и выше

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

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

<div class="tableWrap" id="bkmrk-%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-%D0%90%D0%B4%D1%80%D0%B5%D1%81%D0%B0-%D0%B8%D1%81%D1%82%D0%BE"><table border="1" id="bkmrk-%D0%9E%D0%BF%D0%B8%D1%81%D0%B0%D0%BD%D0%B8%D0%B5-%D0%90%D0%B4%D1%80%D0%B5%D1%81%D0%B0-%D0%B8%D1%81%D1%82%D0%BE-1"><colgroup><col></col><col></col><col></col><col></col><col></col></colgroup><tbody><tr><td class="align-center">**Описание**</td><td class="align-center">**Адреса источников**</td><td class="align-center">**Адрес назначения**</td><td class="align-center">**Протокол**</td><td class="align-center">**Порт назначения**</td></tr><tr><td>web portal access</td><td>clients (lan)</td><td>wisla-01</td><td>TCP</td><td>8080,8443,80,443</td></tr><tr><td>Utest</td><td>agent</td><td>agent</td><td>UDP</td><td>8787</td></tr><tr><td>TWAMP</td><td>agent</td><td>agent</td><td>UDP</td><td>10862</td></tr><tr><td>telnet</td><td>wisla-01</td><td>agent</td><td>TCP</td><td>5555</td></tr><tr><td>UDP</td><td>agent-server</td><td>agent-client</td><td>UDP</td><td>5001</td></tr><tr><td>MTU</td><td>agent-server</td><td>agent-client</td><td>UDP</td><td>5002</td></tr><tr><td>SNMP</td><td>wisla-01</td><td>snmp</td><td>UDP</td><td>161</td></tr><tr><td>agent-to-wisla</td><td>agent</td><td>wisla-01</td><td>TCP</td><td>8080,8443,80,443</td></tr></tbody></table>

</div>

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

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

**<span style="color: rgb(35, 111, 161);">Этап 1.</span>** Переход под пользователя wisla:

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

```bash
sudo su - wisla
```

<details id="bkmrk-redos-%D0%A1-%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%BE%D0%BC-%D0%BA-%D1%81"><summary>Если пользователь wisla еще не существует в системе его необходимо создать используя следующие команды пошагово.</summary>

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

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

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

```bash
sudo passwd wisla
```

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

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

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

```bash
# Создаем файл лимитов
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 (если нет):

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

</details><span style="color: rgb(35, 111, 161);">**Этап 2.** </span>Подготовка каталога kafka.

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

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

```bash
sudo mkdir -p /opt/kafka
```

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

```bash
ls -l /opt/
```

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

```bash
sudo chown wisla:wisla /opt/kafka
```

**<span style="color: rgb(35, 111, 161);">Этап 3.</span>** Копирование архива Java**:**

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

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

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

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

```bash
cd /opt/kafka
```

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

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

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

```bash
ls -la /opt/kafka/
```

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

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

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

```bash
java -version
```

**<span style="color: rgb(35, 111, 161);">Этап 4.</span>** Копирование архива Kafka**:**

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

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

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

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

```bash
cd /opt/kafka
```

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

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

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

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

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

```bash
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
```

**<span style="color: rgb(35, 111, 161);">Этап 5.</span>** Конфигурация Kafka**:** Теперь нам необходимо сконфигурировать Kafka.  
  
1.Для начала определим IP адрес который будем использовать для конфигурации Kafka:

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

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

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

<span style="color: rgb(35, 111, 161);">ЗАПИШИТЕ ЭТОТ ID</span> - он понадобится позже! (Пример моего ID : IdLVHil7RvCVrR9U2DEvKQ)  
  
3.Создание конфигурационного файла:

```bash
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.Проверяем созданный файл:

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

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

```bash
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.Создание файла службы:

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

```bash
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
```

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

```bash
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
```

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

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

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

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

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

```bash
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
```

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

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

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

Обновляем systemd:

```bash
sudo systemctl daemon-reload
```

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

```bash
sudo systemctl enable kafka
```

Запускаем Kafka

```bash
sudo systemctl start kafka
```

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

```bash
sudo systemctl status kafka
```

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

```bash
sudo journalctl -u kafka -f
```

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

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

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

```bash
ls -la /var/lib/kafka/
```

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

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

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

Если система <span lang="EN-US">wiSLA</span> устанавливается на несколько серверов, один экземпляр программы установки, запущенный на одном сервере, может управлять процессом установки, настройки и резервного копирования данных на всех серверах. Для этого создаётся пользователь <span lang="EN-US">wisla</span>, которому обеспечивается посредством <span lang="EN-US">SSH</span> доступ по ключу ко всем серверам контура.

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

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.zip](https://wiki.wellink.ru/attachments/1369) | [astra.zip](https://wiki.wellink.ru/attachments/1367) | [centos.zip](https://wiki.wellink.ru/attachments/1370) | [redos.zip](https://wiki.wellink.ru/attachments/1368)**


### Настройка ОС

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

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

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

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

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

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

```bash
wisla
```

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

```bash
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
```

<p class="callout warning">**Обратите внимание!**  
В некоторых Linux-дистрибутивах в файле `/etc/hosts` указанный во время установки системы `hostname` может ссылаться на `127.0.1.1`, для корректной работы сервисов ***WiSLA*** эту запись нужно изменить в соответствии с примером выше. </p>

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

<p class="callout success">В файле `/etc/hosts` имя хоста должно соответствовать IP-адресу, отличному от `127.0.0.1` и `127.0.1.1`.</p>

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

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

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

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

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

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

```bash
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`:

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

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

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

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

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

<details id="bkmrk-redos-%D0%A1-%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%BE%D0%BC-%D0%BA-%D1%81"><summary>RedOS</summary>

##### С доступом к сети или внутреннему репозиторию:*<span style="text-decoration: underline;">  
</span>*

```bash
sudo yum install ntp lzo dialog rsync uuid zip unzip wget tar python3 fontconfig curl pv uuid python3-paramiko
```

<span style="font-family: var(--font-heading, var(--font-body)); font-size: 1.4em; font-weight: 500;">Без доступа к сети:</span>

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

# Разархивируем 
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
```

</details>
<details id="bkmrk-centos-%D0%A1-%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%BE%D0%BC-%D0%BA-"><summary>CentOS</summary>

##### С доступом к сети:

```bash
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
```

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

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

# Разархивируем 
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

# Возможно потребуется установить дополнительные пакеты из этого архива
```

</details><details id="bkmrk-debian-%D0%B8-ubuntu-sudo"><summary>Debian и Ubuntu</summary>

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

</details><details id="bkmrk-astra-linux-%D0%A1-%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF"><summary>Astra Linux 1.6 и 1.7</summary>

##### С доступом к сети:

```bash
sudo apt install -y ntp liblzo2-2 dialog rsync zip unzip wget tar python3 python3-paramiko fontconfig curl
```

<p class="callout warning">**Обратите внимание!**<span style="text-decoration: underline;">  
</span>В репозиториях ***Astra Linux*** нет пакетов `pv`, `paramiko` и `uuid`, поэтому их необходимо установить из исходников используя `.deb-пакеты`.   
Следуйте приведённой ниже инструкции в секции "***Без доступа к сети***".  
</p>

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

```bash
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  


<span style="color: rgb(224, 62, 45);">**Обязательно для работы Paramiko на Astra Linux 1.7**</span>

Скачайте установочный скрипт 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
```


</details><details id="bkmrk-astra-linux-1.8-%D0%A1-%D0%B4%D0%BE"><summary>Astra Linux 1.8</summary>

##### С доступом к сети:

```bash
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
```

<p class="callout warning">**Обратите внимание!**<span style="text-decoration: underline;">  
</span>В репозиториях ***Astra Linux*** нет пакета `pv`, поэтому его необходимо установить из исходников используя `.deb-пакет`.   
Следуйте приведённой ниже инструкции в секции "***Без доступа к сети***".  
</p>

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

```bash
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`:

```bash
sudo dpkg -i pv_1.6.6-1_amd64.deb
```

</details><details id="bkmrk-alt-linux-%28simply-li"><summary>Alt Linux (Simply Linux)</summary>

##### С доступом к сети:

```bash
sudo apt-get install -y ntp pv dialog rsync zip unzip wget tar python3 fontconfig curl python3-module-paramiko ossp-uuid
```

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

</details>### 7. Установить ***python3*** по умолчанию

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

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

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

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

<details id="bkmrk-centos-%D0%9F%D1%80%D0%B0%D0%B2%D0%B8%D0%BB%D0%B0-%D0%B4%D0%BB%D1%8F%C2%A0f"><summary>CentOS</summary>

##### Правила для firewalld:

```bash
sudo firewall-cmd --permanent --zone=public --add-port=8080/tcp
sudo firewall-cmd --reload
```

##### Наcтройка SELinux:

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

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

</details><details id="bkmrk-debian%2C-ubuntu-%D0%B8-ast"><summary>Debian, Ubuntu и Astra Linux</summary>

##### Правила для UFW:  


```bash
sudo ufw allow 8080/tcp
```

</details>### 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***

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

<details id="bkmrk-centos-%D0%92%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5-%D0%BA%D0%BE%D0%BC"><summary>CentOS</summary>

##### Выполните команды приведённые ниже:

```bash
sudo dnf install glibc-locale-source glibc-langpack-ru 
sudo localectl set-locale LANG=ru_RU.UTF-8
```

##### Затем заново авторизуйтесь на сервере. 

</details><details id="bkmrk-ubuntu-%D0%92%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5-%D0%BA%D0%BE%D0%BC"><summary>Ubuntu</summary>

##### Выполните команды приведённые ниже:

```bash
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
```

##### Затем заново авторизуйтесь на сервере. 

</details>
<details id="bkmrk-debian-%D0%92%D1%8B%D0%BF%D0%BE%D0%BB%D0%BD%D0%B8%D1%82%D0%B5-%D0%BA%D0%BE%D0%BC"><summary>Debian</summary>

##### Выполните команды приведённые ниже:  


```bash
sudo locale-gen ru_RU.UTF-8
sudo dpkg-reconfigure locales
```

##### Затем заново авторизуйтесь на сервере. 

</details><p class="callout warning">**Обратите внимание!**  
Перед запуском программы установки следует выполнить команду `locale` и убедиться, что активна `ru_RU.UTF-8`. При возникновении проблем необходимо обратиться к документации по дистрибутиву для установки нужной локали. Также следует проверить вывод `timedatectl`, часовой пояс должен иметь буквенное обозначение вместо `n/a`.</p>

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

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

```bash
# Переключитесь на пользователя 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
```

<p class="callout warning">**Обратите внимание!**  
Запроса пароля быть не должно! Если пароль запрашивается, тогда требуется найти причину и добиться входа без пароля, иначе в процессе установки будут происходить многократные запросы пароля. Причиной может быть неразрешённый тип ключа или несоответствие сетевого (доменного) имени.</p>

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

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

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

```bash
sudo reboot
```

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


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

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

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

<p class="callout warning">**Обратите внимание!**  
Программа установки должна запускаться под сервисной учётной записью в её окружении, в данном примере это пользователь `wisla`.</p>

<p class="callout info">В ходе тестирования выявлено, что при развёртывании окна терминала на весь экран программа установки не запустится.   
**Чтобы запустить установку не разворачивайте окно на весь экран!**</p>

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

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

```bash
cd /home/wisla
```

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

```bash
./wisla*.run
```

<p class="callout success">Если программа установки не стартует попробуйте выполнить `export TERM=xterm` перед её запуском.</p>

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

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

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

**Окно '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.Необходимо выбрать почту с которой буду отправляться уведомления и выполнить настройку по [инструкции](https://yandex.ru/support/mail/mail-clients/others.html).  
2.Устанавливаем конфиги:

- Notification enabled: true
- Profile-status notification enabled: false
- Service notification enabled: false
- Wisla notification op\_link: wisla
- Wisla notification cp\_link: wisla
- Wisla inter-hop master:
- Wisla inter-hop slaves:
- Wisla inter-hop slave: false
- Mail host: smtp.{домен почты}.ru
- Mail from: email (например: [test\_push@yandex.ru](mailto:test_push@yandex.ru))
- Mail from alias: email без домена (например: [test\_push](mailto:test_push@yandex.ru) )
- Mail port: 587
- Mail protocol: smtp
- Mail smtp auth: true
- Mail smtp starttls: true
- Mail user: email с которого планируется отправка уведомлений (например: [test\_push@yandex.ru](mailto:test_push@yandex.ru))
- Mail password: "пароль приложения" сформированный на шаге 1
- ASI notification enabled: false
- ASI hendlers: genericSnmp
- ASI SNMP distation:
- Events limit for notification: 10
- No data duration: 10
- Reports use en filenames: false

**Окно 'wiSLA\* operator portal configuration'**

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

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

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

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

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

- ***Zookeeper***;
- ***Hadoop***;
- ***HBase***;
- ***PostgreSQL***;
- ***Java Runtime Environment***;
- ***WildFly Application Server***;
- ***wiSLA Portal***.

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

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

<p class="callout warning">**Обратите внимание!**  
В ходе тестирования выявлено, что на ***Astra Linux*** в некоторых сценариях не создается `systemd unit`, при возникновении данной проблемы нужно создать его руками.</p>

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

```bash
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

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

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

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

```bash
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://wiki.wellink.ru/uploads/images/gallery/2024-09/scaled-1680-/bXCimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2024-09/bXCimage.png)

<span style="color: #000000;">   
</span>В данном примере система будет доступна по адресу `http://192.168.159.136:8080`.



## Обновление wiSLA


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

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2025-08/scaled-1680-/0vDimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-08/0vDimage.png)

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2025-08/scaled-1680-/FMyimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-08/FMyimage.png)

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

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

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

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

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

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

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

3\) После успешного запуска сервера приложений, выполнить индексацию (`Maintenance > wiSLA > Reindex` (*Не путать со <span style="text-decoration: underline;">Standalone Reindex</span>!);*

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

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

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

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

```javascript
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/`:

```bash
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 &gt; PostrgeSQL) и запустите патч для создания необходимых таблиц;
10. После того как таблицы будут сформированы запустите приложения wiSLA и проверьте работу веб-портала.

# Установка wiSLA 5

## Оглавление

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

**Платформа:**

- Физический сервер или виртуальная машина с поддержкой микроархитектуры ***x86-64***;
- Объём накопителя не менее ***40 ГБайт***;
- Не менее ***16 ГБ*** оперативной памяти;
- Совместимая операционная система.

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

- ***Ubuntu 24.04 LTS;***
- ***Ubuntu 22.04 LTS;***
- ***Ubuntu 20.04 LTS;***
- ***Astra Linux 1.7.5;***


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

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

Подключитесь к серверу через протокол SSH используя учётную запись пользователя с привилегированным доступом. Затем с помощью **SFTP** или **scp** скопируйте файлы программы <span style="background-color: rgb(255, 255, 255);"><span style="color: rgb(35, 111, 161);">[**wisla-pre-installation-program**](https://cloud.wellink.ru/s/MEFqczi8fwrwnKn)</span> </span>и **<span style="color: rgb(35, 111, 161);">[инсталлятор wiSLA 5](https://cloud.wellink.ru/s/a69Cooz2p2aMTF7)</span>** на сервер, например в домашний каталог текущего пользователя.

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

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

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2025-11/scaled-1680-/1FDimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-11/1FDimage.png)

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

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

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

```bash
cd wisla-pre-installation-program-2.1
```

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

```bash
sudo chmod +x preparing-os.start
```

##### 3. Запуск программы.

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

```bash
sudo ./preparing-os.start
```

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

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2025-11/scaled-1680-/KgWimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-11/KgWimage.png)

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

1\. В главном меню выберите пункт **<span style="color: rgb(53, 152, 219);">1</span>** и нажмите **<span style="color: rgb(53, 152, 219);">ENTER</span>**.  
2\. Программа запросит пароль для учётной записи Wisla. Введите новый пароль дважды.

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2025-11/scaled-1680-/Cpiimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-11/Cpiimage.png)

3\. При появлении запроса на изменение Hostname:  
Если имя устраивает, введите **<span style="color: rgb(53, 152, 219);">Н</span>**  
Если хотите изменить, введите <span style="color: rgb(53, 152, 219);">**Д** </span>, затем введите **<span style="color: rgb(53, 152, 219);">wisla</span>**.

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2025-11/scaled-1680-/YvDimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-11/YvDimage.png)

4\. Выберите тип обновления:  
<span style="color: rgb(53, 152, 219);">**1** </span>- с доступом в Интернет  
**<span style="color: rgb(53, 152, 219);">2</span>** - без доступа в Интернет

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2025-11/scaled-1680-/Itrimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-11/Itrimage.png)

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

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2025-11/scaled-1680-/00iimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-11/00iimage.png)

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

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2025-11/scaled-1680-/JF5image.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-11/JF5image.png)

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

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

```bash
cd wish-pre-installation-program-2.1
```

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

```bash
sudo ./preparing-os.start
```

3\. В главном меню выберите пункт **<span style="color: rgb(53, 152, 219);">2</span>**.

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2025-11/scaled-1680-/0Mzimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-11/0Mzimage.png)

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

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2025-11/scaled-1680-/0gRimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-11/0gRimage.png)

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

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2025-11/scaled-1680-/eXqimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-11/eXqimage.png)

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

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

1\. В главном меню выберите пункт **<span style="color: rgb(53, 152, 219);">3</span>**.

2\. Введите адрес сервера Kafka в формате:  
**<span style="color: rgb(53, 152, 219);">IP:PORT</span>**, например:<span style="color: rgb(53, 152, 219);"> **10.0.2.15:9092**</span>

3\. Введите адрес Wisla в формате:  
**<span style="color: rgb(53, 152, 219);">http://IP:PORT</span>**, например:<span style="color: rgb(53, 152, 219);"> **[http://10.0.2.15:8080/](http://10.0.2.15:8080/)**</span>

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2025-11/scaled-1680-/unUimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-11/unUimage.png)

4\. Нажмите **<span style="color: rgb(53, 152, 219);">ENTER</span>** для начала установки  
После завершения установки вы увидите информацию о каталогах и командах для управления службой.

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2025-11/scaled-1680-/XnNimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-11/XnNimage.png)

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

После успешной установки всех компонентов вы можете закрыть программу, нажав **<span style="color: rgb(53, 152, 219);">CTRL+C</span>**.

Ваша система полностью готова к работе с <span style="color: rgb(53, 152, 219);">**WISLA**</span>.

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

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

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

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

```bash
sudo su - wisla
```

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

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

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


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

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

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

<p class="callout warning">**Обратите внимание!**   
Программа установки должна запускаться под сервисной учётной записью и в её окружении, в данном примере это пользователь `wisla`.</p>

<p class="callout info">**Информация**  
  
В ходе тестирования выявлено, что при развёртывании окна терминала на весь экран программа установки не запустится.   
**Чтобы запустить установку не разворачивайте окно терминала на весь экран!**</p>

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

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

```bash
./wisla-5.2.*.run
```

<p class="callout success">Если программа установки не стартует попробуйте выполнить `export TERM=xterm` перед её запуском.</p>

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

<p class="callout info">**Информация**  
  
Навигация в программе установки осуществляется с помощью стрелок управления курсором, клавиш `Home`, `End`, `Tab`, `Esc` и `Enter`.   
Если требуется аварийно прервать работу программы, можно использовать комбинацию клавиш `CTRL+C`, для штатного завершения программы установки следует использовать кнопку `Exit`.</p>

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

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

- ***Zookeeper***;
- ***Hadoop***;
- ***HBase***;
- ***PostgreSQL***;
- ***Java Runtime Environment***;
- ***WildFly Application Server***;
- ***wiSLA Portal***.

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

**1. Окно "Installer startup configuration"**

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2024-11/scaled-1680-/Q90image.png)](https://wiki.wellink.ru/uploads/images/gallery/2024-11/Q90image.png)

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

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

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2024-11/scaled-1680-/Smiimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2024-11/Smiimage.png)

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

**3. Окно "Topology configuration"**

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2024-11/scaled-1680-/Sorimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2024-11/Sorimage.png)

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

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

**4. Окно "Versions select"**

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2024-11/scaled-1680-/19Kimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2024-11/19Kimage.png)

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

**5. Окно "Zookeeper Configuration"**

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2024-11/scaled-1680-/qN1image.png)](https://wiki.wellink.ru/uploads/images/gallery/2024-11/qN1image.png)

**6. Окно "Hadoop configuration"**

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2024-11/scaled-1680-/WjDimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2024-11/WjDimage.png)

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

**7. Окно "HBase configuration"**

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2024-11/scaled-1680-/TuSimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2024-11/TuSimage.png)

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

**8. Окно "Postgresql configuration"**

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2025-05/scaled-1680-/WOFimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-05/WOFimage.png)

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

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

**9. Окно "Wildfly configuration"**

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2024-11/scaled-1680-/IGiimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2024-11/IGiimage.png)

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

**10. Окно "wiSLA Topology Configuration"**

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2024-11/scaled-1680-/lhSimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2024-11/lhSimage.png)

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

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2025-11/scaled-1680-/qeIimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-11/qeIimage.png)

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

<span style="color: rgb(53, 152, 219);">**wiProbe destination = http://IP\_СЕРВЕРА:18080/aggregator**</span>

**12. Окно "wiSLA Resources Configuration"**

<p class="callout info">**Укажите адрес и порт службы Kafka**</p>

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2025-11/scaled-1680-/aIHimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-11/aIHimage.png)

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

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

<p class="callout info">**Если по умолчанию параметр "wiSLA notification enabled" принимает значение "false" измените на "true"**</p>

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2025-05/scaled-1680-/sf7image.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-05/sf7image.png)

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

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

**14. Окно "wiSLA Cloud System"**

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2025-05/scaled-1680-/5Vaimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-05/5Vaimage.png)


**15. Окно "Operator Portal Configuration"**

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2024-11/scaled-1680-/mJfimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2024-11/mJfimage.png)

<p class="callout warning">**Обратите внимание!**  
  
Если вы получаете доступ к порталу с помощью проброса портов или через прокси сервер, тогда вам необходимо отредактировать пункт ***HOST*** и в ***Whitelisted domains*** установить необходимые IP-адреса.</p>

**16. Окно "Confirm the installation"**

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2024-11/scaled-1680-/CJmimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2024-11/CJmimage.png)

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

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

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2024-11/scaled-1680-/Clqimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2024-11/Clqimage.png)

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

<details id="bkmrk-astra-linux-%D0%95%D1%81%D0%BB%D0%B8-%D0%B2%D1%8B-"><summary>Astra Linux</summary>

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

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

```bash
sudo systemctl enable wisla.service
```

</details>Система мониторинга ***wiSLA 5*** установлена на ваш сервер.

##### 3. Запуск wiSLA

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

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

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

```bash
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://wiki.wellink.ru/uploads/images/gallery/2025-06/scaled-1680-/5moimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-06/5moimage.png)

<span style="color: #000000;">   
</span>В данном примере система будет доступна по адресу `https://wisla.it-superman.keenetic.pro`.

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

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

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

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

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

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

<details id="bkmrk-redos-%D0%A1-%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%BE%D0%BC-%D0%BA-%D1%81"><summary>Если пользователь wisla еще не существует в системе его необходимо создать используя следующие команды пошагово.</summary>

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

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

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

```bash
sudo passwd wisla
```

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

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

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

```bash
# Создаем файл лимитов
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 (если нет):

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

</details>##### **Этап 1. Подготовка каталогов на всех узлах**

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

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

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

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

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

```bash
ls -ld /opt/kafka /var/lib/kafka /var/log/kafka
```

##### **Этап 2. Копирование и распаковка Java на всех узлах**

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

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

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

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

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

- Переходим в каталог kafka используя следующую команду:  
    ```bash
    cd /opt/kafka
    ```
- Распаковка архива:  
    ```bash
    tar -xzf /home/wisla/OpenJDK17U-jdk_x64_linux_hotspot_17.0.17_10.tar.gz
    ```
- Проверка распаковки:  
    ```bash
    ls -la /opt/kafka/
    ```

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

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

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

```bash
source ~/.bashrc
```

6.Проверка:

```bash
java -version
```

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

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

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

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

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

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

- Переходим в каталог kafka используя следующую команду:  
    ```bash
    cd /opt/kafka
    ```
- Распаковка архива:  
    ```bash
    tar -xzf kafka_2.13-4.1.1.tgz --strip-components=1
    ```
- Проверка распаковки:  
    ```bash
    ls -la /opt/kafka/bin/
    ```

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

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

```bash
cd /opt/kafka
```

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

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

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

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

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

```bash
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:

```bash
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:

```bash
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.Проверка конфигураций:

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

##### **Этап 6. Инициализация хранилищ на всех узлах**

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

- Экспорт кластер ID:  
    ```bash
    export CLUSTER_ID="wisla-3node-cluster-12345"
    ```
- Переходим в каталог kafka:  
    ```bash
    cd /opt/kafka
    ```
- Добавляем кластер ID:  
    ```bash
    ./bin/kafka-storage.sh format \
      -t $CLUSTER_ID \
      -c /opt/kafka/config/kraft/server.properties
    ```
- Проверяем  
    ```bash
    cat /var/lib/kafka/meta.properties
    ```

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

1.Создаем Unit:

```bash
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:

```bash
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\. Создаем скрипт запуска кластера на первом сервере:

```bash
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.Создаем скрипт остановки кластера на первом сервере:

```bash
sudo cat > /usr/local/bin/kafka-cluster-stop << 'EOF'
#!/bin/bash
echo "Остановка кластера Kafka..."

# Остановка в правильном порядке (сначала реплики, потом лидеры)
systemctl stop kafka
echo "Node $(hostname): Kafka остановлен"

echo "Кластер Kafka остановлен"
EOF
```

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

```bash
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.Создание скрипта управления топиками:

```bash
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.Предоставление прав на исполнение:

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

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

```bash
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.Настройка брандмауэра (Опционально):

```bash
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 на всех узлах:

```bash
sudo systemctl daemon-reload
```

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

```bash
sudo systemctl enable kafka
```

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

```bash
# На wisla01:
sudo systemctl start kafka

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

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

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

```bash
sudo systemctl status kafka
```

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

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

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

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

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

```bash
#!/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.Запустить скрипт для проверки

```bash
./kafka-cluster-monitor
```

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

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

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

**Для систем без выхода в интернет**  
Скачайте архив [Docker.zip ](https://cloud.wellink.ru/s/bDCp7pDScYgWfet)и распакуйте из него нужные версии deb-пакетов.

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

- containerd.io;
- docker-ce;
- docker-ce-cli;
- docker-buildx-plugin.

Загрузив файлы на сервер установите 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 не установлен, выполните следующие команды:

```bash
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
```

> <span style="color: rgb(52, 73, 94);">***Примечание для Astra Linux:**  
> В Astra Linux установка Docker имеет специфические особенности, особенно в изолированных средах без доступа к интернету. Рекомендуется ознакомиться с инструкцией: <span style="color: rgb(35, 111, 161);">[Установка wiCore без доступа к сети интернет](https://wiki.wellink.ru/books/aeroflot/page/ustanovka-wicore-bez-dostupa-k-seti-internet)</span>*</span>


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

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

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

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

```yaml
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](https://wiki.wellink.ru/uploads/images/gallery/2025-07/scaled-1680-/JIqimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-07/JIqimage.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) и отредактируйте:

- **`BOOT-INF/classes/config/application.properties`** указав в параметрах `bootstrap.servers` и `wisla.dc-nodes` необходимый ip:

```
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
```

- **`BOOT-INF/classes/logback-spring.xml`** в параметрах **property** и **fileNamePattern** прописать правильные пути для логов:

```bash
<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](https://wiki.wellink.ru/uploads/images/gallery/2025-07/scaled-1680-/iKrimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-07/iKrimage.png)

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

- **Создайте systemd unit** для автоматического запуска агрегатора, с указанием пути, где лежит агрегатор:

```bash
sudo nano /etc/systemd/system/aggr-jar.service
```

- **Вставьте конфигурацию** (адаптируйте пути и имя пользователя!):

```bash
[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. Запуск и проверка**:

```bash
# Обновить конфигурацию
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
```

<div id="bkmrk--1"></div>
## **4. Настройка wiSLA для работы с Kafka и Aggregator**

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

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

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2025-07/scaled-1680-/LKsimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-07/LKsimage.png)

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

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

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2025-07/scaled-1680-/vZpimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-07/vZpimage.png)

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

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

<span style="text-decoration: underline;">**Standalone-режим (один сервер wiSLA)**:</span>

- Полноценная работа с логированием
- Данные идут через агрегатор → Kafka
- Просмотр логов через Redpanda Console (http://IP\_KAFKA:8085)
- *Конфиг*<span lang="EN-US" style="mso-ansi-language: EN-US;">: WISLA\_WIPROBE\_DESTINATION = http://aggregator\_ip:18080/aggregator</span>

<span style="text-decoration: underline;">*<span style="font-size: 11.0pt; line-height: 107%; font-family: 'Calibri',sans-serif; mso-ascii-theme-font: minor-latin; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-hansi-theme-font: minor-latin; mso-bidi-font-family: 'Times New Roman'; mso-bidi-theme-font: minor-bidi; mso-ansi-language: RU; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;">Рекомендуется для новых установок</span>*</span>

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

- ✅ **Только с Kafka + агрегатор**:
    
    
    - Агрегатор - модуль системы принимает данные (результаты измерений) от агентов/зондов (по rest) и складывает в соответствующие топики kafka.
    - *Конфиг*: `WISLA_WIPROBE_DESTINATION`` = http://aggregator_ip:18080/aggregator`

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

- **Redpanda** доступен по указанному в `docker-compose.yml` порту консоли кафки, через: `http://IP_СЕРВЕРА:8085`
- **Настройки `WISLA_WIPROBE_DESTINATION`** - url получаемая wiProbe при авторегистрации для отправки данных (результатов измерений). (url авторегистрации можно изменить только при выполнении команды slamon-conf url .....)
- В **кластере** и **standalone** обязательно указывайте адрес агрегатора (`http://aggregator_ip:18080/aggregator`)

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

<div id="bkmrk--6">[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2025-07/scaled-1680-/XSDimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-07/XSDimage.png)</div>

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

<span style="background-color: rgb(255, 255, 255); color: rgb(0, 0, 0);">Если требуется внести изменения в настройки уже установленной системы wiSLA, следует:</span>

1. <span style="background-color: rgb(255, 255, 255); color: rgb(0, 0, 0);">Запустить программу установки. Перейти в основное меню. Внешний вид основного меню показан на рисунке 27. </span><span style="background-color: rgb(255, 255, 255); color: rgb(0, 0, 0);">![](https://wiki.wellink.ru/uploads/images/gallery/2024-01/embedded-image-pllxurvo.png)</span>
    
    <span style="background-color: rgb(255, 255, 255); color: rgb(35, 111, 161);"><span style="font-size: 10pt; line-height: 120%; font-family: Arial, sans-serif;">Рис. </span><span style="font-size: 10pt; line-height: 120%; font-family: Arial, sans-serif;"><span style="mso-no-proof: yes;">27</span></span><span style="font-size: 10pt; line-height: 120%; font-family: Arial, sans-serif;"> Главное меню программы установки в случае обнаружения установленной wiSLA </span></span>
2. <span style="background-color: rgb(255, 255, 255); color: rgb(0, 0, 0);"><span style="background-color: rgb(255, 255, 255); color: rgb(0, 0, 0);"><span style="font-size: 10pt; line-height: 120%; font-family: Arial, sans-serif;">Выбрать пункт меню «Config update». Если этого пункта меню нет в списке, установка была  
    выполнена некорректно или на первом экране при запуске программы установки были  
    указаны ошибочные данные.  
    </span></span></span>
3. <span style="background-color: rgb(255, 255, 255); color: rgb(0, 0, 0);"><span style="background-color: rgb(255, 255, 255); color: rgb(0, 0, 0);"><span style="font-size: 10pt; line-height: 120%; font-family: Arial, sans-serif;">Найти, изменить требуемый параметр.  
    </span></span></span>
4. <span style="background-color: rgb(255, 255, 255); color: rgb(0, 0, 0);"><span style="background-color: rgb(255, 255, 255); color: rgb(0, 0, 0);"><span style="font-size: 10pt; line-height: 120%; font-family: Arial, sans-serif;">Выполнить перезапуск wiSLA.</span></span></span>

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

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

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

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

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

```bash
su -l wisla
```

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

```
./wisla*.run
```

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

![](https://wiki.wellink.ru/uploads/images/gallery/2024-01/embedded-image-vx27jazm.png)

<span style="color: rgb(35, 111, 161);">Рис. 9 Интерфейс программы установки: окно предварительных настроек</span>

<span style="color: rgb(0, 0, 0);">Если показанное на рисунке 9 окно не открылось, следует проанализировать сообщения об ошибках и созданные в текущем каталоге log-файлы.</span>

<span style="color: rgb(0, 0, 0);">Навигация в программе установки осуществляется с помощью стрелок управления курсором, клавиш Home, End, Tab, Esc и Enter. Если требуется аварийно прервать работу программы, можно использовать комбинацию клавиш CTRL+C. Для штатного завершения программы установки следует использовать кнопку Exit. После выхода из программы установки экраны с историей выполнения доступны в буфере терминала.</span>

## <span style="color: rgb(0, 0, 0);">Перечень действий для установки wiSLA  
</span>

<span style="color: rgb(0, 0, 0);">Ниже будут описаны действия для установки wiSLA на один сервер. В примере сервер будет назван VM1.</span>

<span style="color: rgb(0, 0, 0);">1. Запустить программу установки.</span>

<span style="color: rgb(0, 0, 0);">2. На первом экране принять предложенные настройки, нажав Enter. Программа установки проанализирует окружение. Если это первый запуск, откроется меню, показанное на рисунке 10.  
</span><span style="color: rgb(0, 0, 0);">![](https://wiki.wellink.ru/uploads/images/gallery/2024-01/embedded-image-1wyqbonw.png)</span>

<span style="color: rgb(0, 0, 0);"><span style="color: rgb(35, 111, 161);">Рис. 10 Интерфейс программы установки: меню при первом запуске</span>  
</span>

<span style="color: rgb(0, 0, 0);">Из заголовка окна видно, что система не обнаружила установленной wiSLA на данном сервере. В описании к действию Install отображается версия, которая будет установлена, и номер сборки. Номер сборки на рисунке (цифры после «build») приведён на момент написания документа и может отличаться, так как любое изменение программного кода сопровождается пересборкой дистрибутива. Для перехода к следующему шагу нужно нажать Enter (выполнив тем самым действие «Next»), на выделенной строке «Install».  
</span>

<span style="color: rgb(0, 0, 0);">3. На следующем экране задаётся топология будущего контура wiSLA. В примере, показанном на рисунке 11, установка всех компонентов проводится на один сервер VM1. В зависимости от размера окна некоторые настройки могут оказаться вне области видимости. Для доступа к ним нужно последовательно нажимать кнопку «вниз». По достижении самой нижней строки настройки на уровне границы окна под настройкой появляется отметка «100%».</span>

<span style="color: rgb(0, 0, 0);">Настройка топологии выполняется один раз при первой установке системы. Впоследствии смена топологии через настройки программы установки не приведёт к желаемому результату (потребуется скорректировать ряд настроек вручную или выполнить установку «с нуля» с восстановлением данных из резервной копии), поэтому рекомендуется внимательно проверять введённые данные на данном этапе установки. После выполнения настроек переход к следующему экрану осуществляется кнопкой Next.  
</span>

<span style="color: rgb(0, 0, 0);">Если требуется распределить компоненты по разным серверам, нужно указать соответствующие доменные или сетевые имена серверов. В этом случае нужно, чтобы между серверами был организован беспарольный доступ по ключу (SSH) для пользователя wisla.</span>

<p class="callout info"><span style="color: rgb(0, 0, 0);"> ноды для апп серверов(сбор данных c slamon агентов) можно сделать 6 штук + op,cont по 2 штуки </span></p>

<span style="color: rgb(0, 0, 0);">![](https://wiki.wellink.ru/uploads/images/gallery/2024-01/embedded-image-izwntjcj.png)</span>

<span style="color: rgb(35, 111, 161);">Рис.<span style="color: #206ea7;"> </span><span style="mso-no-proof: yes;">11</span> Интерфейс программы установки: топология</span>

<span style="color: rgb(0, 0, 0);">4. После задания топологии система может запросить пароль пользователя wisla. Это нужно для выполнения команды создания рабочего каталога в /opt, что требует привилегий *sudo*.  
5\. После создания рабочего каталога будет выполнена инициализация необходимых модулей и распаковка дистрибутива во временный каталог. Время ожидания зависит от производительности дисковой подсистемы сервера.  
6\. На следующем экране (рисунок 12) требуется выбрать версию и архитектуру Java Runtime Environment (как правило, используется архитектура x86\_64, а версия представлена одна).</span>

<span style="color: rgb(0, 0, 0);">![](https://wiki.wellink.ru/uploads/images/gallery/2024-01/embedded-image-yvivy1t2.png)</span>

<span style="color: rgb(35, 111, 161);">Рис.<span style="mso-no-proof: yes;">12</span> Интерфейс программы установки: выбор версии JRE</span>

<span style="color: rgb(0, 0, 0);">7. После распаковки и выбора версии JRE программа установки оценит параметры сервера и автоматически рассчитает значения по распределению оперативной памяти для различных компонентов системы. Впоследствии их можно будет изменить, однако это стоит делать только в том случае, когда администратору точно известно, что предложенные значения неоптимальны или ошибочны.  
8\. Настройка компонента Zookeper (рисунок 13). Рекомендуется оставить настройки, предложенные по умолчанию.</span>

<span style="color: rgb(0, 0, 0);">![](https://wiki.wellink.ru/uploads/images/gallery/2024-01/embedded-image-92njb2d4.png)</span>

<span style="color: rgb(35, 111, 161);">Рис.<span style="mso-no-proof: yes;">13</span> Интерфейс программы установки: настройки компонента Zookeeper</span>

<span style="color: rgb(0, 0, 0);">9. Настройка компонента Hadoop (рисунок 14). Рекомендуется оставить настройки, предложенные по умолчанию</span>

<span style="color: rgb(0, 0, 0);">![](https://wiki.wellink.ru/uploads/images/gallery/2024-01/embedded-image-5hthqfrc.png)</span>

<span style="color: rgb(35, 111, 161);">Рис.<span style="mso-no-proof: yes;">14</span> Интерфейс программы установки: настройки компонента Hadoop</span>

<span style="color: rgb(0, 0, 0);">10. Настройка компонента HBase (рисунок 15). Рекомендуется оставить настройки, предложенные по умолчанию.</span>

<span style="color: rgb(0, 0, 0);">![](https://wiki.wellink.ru/uploads/images/gallery/2024-01/embedded-image-mrkml3jn.png)</span>

<span style="color: rgb(35, 111, 161);">Рис.<span style="mso-no-proof: yes;">15</span> Интерфейс программы установки: настройки компонента HBase</span>

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

<span style="color: rgb(0, 0, 0);">![](https://wiki.wellink.ru/uploads/images/gallery/2024-01/embedded-image-roh9lwty.png)</span>

<span style="color: rgb(35, 111, 161);">Рис. <span style="mso-no-proof: yes;">16</span> Интерфейс программы установки: настройки компонента PostgreSQL</span>

<span style="color: rgb(0, 0, 0);">12. Настройка компонента Wildfly (рисунок 17). Рекомендуется оставить настройки, предложенные по умолчанию.</span>

<span style="color: rgb(0, 0, 0);">![](https://wiki.wellink.ru/uploads/images/gallery/2024-01/embedded-image-9nys5d0d.png)</span>

<span style="color: rgb(35, 111, 161);">Рис.<span style="mso-no-proof: yes;">17</span> Интерфейс программы установки: настройки сервера приложений <span lang="EN-US" style="mso-ansi-language: EN-US;">Wildfly</span></span>

<span style="color: rgb(0, 0, 0);"><span lang="EN-US" style="mso-ansi-language: EN-US;">13. Настройка топологии wiSLA. В примере все компоненты устанавливаются на сервер с именем VM1 (рисунок 18).</span></span>

<span style="color: rgb(0, 0, 0);"><span lang="EN-US" style="mso-ansi-language: EN-US;">![](https://wiki.wellink.ru/uploads/images/gallery/2024-01/embedded-image-newyspyd.png)</span></span>

<span style="color: rgb(35, 111, 161);">Рис. <span style="mso-no-proof: yes;">18</span> Интерфейс программы установки: настройки топологии wiSLA</span>

<span style="color: rgb(0, 0, 0);">14. Настройки модуля сбора данных. Если планируется использование зондов wiProbe, нужно прокрутить список и изменить настройку «wiProbe destination». В ней задаётся адрес, который будет использоваться зондом для отправки данных в систему wiSLA, в форме URL (рисунок 19). Остальные параметры менять без необходимости не рекомендуется.</span>

<span style="color: rgb(0, 0, 0);">![](https://wiki.wellink.ru/uploads/images/gallery/2024-01/embedded-image-nmp5nmrd.png)</span>

<span style="color: rgb(35, 111, 161);">Рис. <span style="mso-no-proof: yes;">19</span> Интерфейс программы установки: настройки модуля сбора данных  
  
</span>

<span style="color: rgb(0, 0, 0);">15. Настройки интеграции LDAP (в том числе, Active Directory), рисунок 20. Если LDAP не планируется использовать, рекомендуется оставить значения по умолчанию.</span>

<span style="color: rgb(0, 0, 0);">![](https://wiki.wellink.ru/uploads/images/gallery/2024-01/embedded-image-m6yxlzfq.png)</span>

<span style="color: rgb(35, 111, 161);">Рис. 20 Интерфейс программы установки: настройки интеграции LDAP</span>

<span style="color: rgb(0, 0, 0);">16. Настройки дополнительных ресурсов wiSLA. Рекомендуется оставить значения по умолчанию (рисунок 21).</span>

<p class="callout warning"><span style="color: rgb(0, 0, 0);">При необходимости ограничения исторических данных рекомендуется изучить рисунок 21.1</span></p>

<span style="color: rgb(0, 0, 0);">![](https://wiki.wellink.ru/uploads/images/gallery/2024-01/embedded-image-w98b1rz9.png)</span>

<span style="color: rgb(35, 111, 161);">Рис. 21 Интерфейс программы установки: настройки дополнительных ресурсов</span>

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

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

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

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

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

[![11.png](https://wiki.wellink.ru/uploads/images/gallery/2023-06/scaled-1680-/11.png)](https://wiki.wellink.ru/uploads/images/gallery/2023-06/11.png)  
Рис. 21.1. Экран инсталлятора wiSLA (Вкладка wiSLA Resources Configuration)

<span style="color: rgb(0, 0, 0);">17. Настройка рассылки уведомлений (рисунок 22). На этом экране, как минимум, требуется указать параметры подключения к почтовому серверу. Если этого не сделать, новые пользователи не смогут получать письма о добавлении учётной записи и другие уведомления, отсылаемые на адрес электронной почты. Также здесь можно включить отправку SNMP-уведомлений по определённым событиям. Обязательные для настройки параметры перечислены в таблице 3.</span>

<span style="color: rgb(0, 0, 0);">![](https://wiki.wellink.ru/uploads/images/gallery/2024-01/embedded-image-wv6fakn5.png)</span>

Рис.<span style="mso-no-proof: yes;">22</span> Интерфейс программы установки: настройка рассылки уведомлений

<span style="color: rgb(35, 111, 161);">Таблица 3 – Параметры подключения к почтовому серверу.</span>

<table border="1" cellpadding="0" cellspacing="0" class="MsoTableGrid" id="bkmrk-%D0%9F%D0%B0%D1%80%D0%B0%D0%BC%D0%B5%D1%82%D1%80-%D0%9D%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B5%D0%BD%D0%B8%D0%B5-" style="border-collapse: collapse; width: 100%; border-width: 1px; border-spacing: 0px;"><thead><tr><td style="width: 120.5pt; border: 1pt solid black; padding: 0cm 5.4pt; height: 26.7292px;" valign="top" width="161">**Параметр**

</td><td style="width: 191.35pt; border-top: 1pt solid black; border-right: 1pt solid black; border-bottom: 1pt solid black; border-image: initial; border-left: none; padding: 0cm 5.4pt; height: 26.7292px;" valign="top" width="255">**Назначение**

</td><td style="width: 99.25pt; border-top: 1pt solid black; border-right: 1pt solid black; border-bottom: 1pt solid black; border-image: initial; border-left: none; padding: 0cm 5.4pt; height: 26.7292px;" valign="top" width="132">**Пример значения**

</td></tr></thead><tbody><tr><td style="width: 120.5pt; border-right: 1pt solid black; border-bottom: 1pt solid black; border-left: 1pt solid black; border-image: initial; border-top: none; padding: 0cm 5.4pt; height: 27.7292px;" valign="top" width="161"><span lang="EN-US" style="mso-ansi-language: EN-US;">Notification enabled</span>

</td><td style="width: 191.35pt; border-top: none; border-left: none; border-bottom: 1pt solid black; border-right: 1pt solid black; padding: 0cm 5.4pt; height: 27.7292px;" valign="top" width="255">Включает рассылку по электронной почте

</td><td style="width: 99.25pt; border-top: none; border-left: none; border-bottom: 1pt solid black; border-right: 1pt solid black; padding: 0cm 5.4pt; height: 27.7292px;" valign="top" width="132"><span lang="EN-US" style="mso-ansi-language: EN-US;">true</span>

</td></tr><tr><td style="width: 120.5pt; border-right: 1pt solid black; border-bottom: 1pt solid black; border-left: 1pt solid black; border-image: initial; border-top: none; padding: 0cm 5.4pt; height: 23.7292px;" valign="top" width="161"><span lang="EN-US" style="mso-ansi-language: EN-US;">Mail host</span>

</td><td style="width: 191.35pt; border-top: none; border-left: none; border-bottom: 1pt solid black; border-right: 1pt solid black; padding: 0cm 5.4pt; height: 23.7292px;" valign="top" width="255"><span lang="EN-US" style="mso-ansi-language: EN-US;">IP</span> или <span lang="EN-US" style="mso-ansi-language: EN-US;">DNS</span>-адрес почтового сервера

</td><td style="width: 99.25pt; border-top: none; border-left: none; border-bottom: 1pt solid black; border-right: 1pt solid black; padding: 0cm 5.4pt; height: 23.7292px;" valign="top" width="132"><span lang="EN-US" style="mso-ansi-language: EN-US;">smtp.gmail.com</span>

</td></tr><tr><td style="width: 120.5pt; border-right: 1pt solid black; border-bottom: 1pt solid black; border-left: 1pt solid black; border-image: initial; border-top: none; padding: 0cm 5.4pt; height: 23.7292px;" valign="top" width="161"><span lang="EN-US" style="mso-ansi-language: EN-US;">Mail port</span>

</td><td style="width: 191.35pt; border-top: none; border-left: none; border-bottom: 1pt solid black; border-right: 1pt solid black; padding: 0cm 5.4pt; height: 23.7292px;" valign="top" width="255">Порт, прослушиваемый почтовым сервером

</td><td style="width: 99.25pt; border-top: none; border-left: none; border-bottom: 1pt solid black; border-right: 1pt solid black; padding: 0cm 5.4pt; height: 23.7292px;" valign="top" width="132">5<span lang="EN-US" style="mso-ansi-language: EN-US;">87</span>

</td></tr><tr><td style="width: 120.5pt; border-right: 1pt solid black; border-bottom: 1pt solid black; border-left: 1pt solid black; border-image: initial; border-top: none; padding: 0cm 5.4pt; height: 23.7292px;" valign="top" width="161"><span lang="EN-US" style="mso-ansi-language: EN-US;">Mail protocol</span>

</td><td style="width: 191.35pt; border-top: none; border-left: none; border-bottom: 1pt solid black; border-right: 1pt solid black; padding: 0cm 5.4pt; height: 23.7292px;" valign="top" width="255">Протокол, используемый почтовым сервером

</td><td style="width: 99.25pt; border-top: none; border-left: none; border-bottom: 1pt solid black; border-right: 1pt solid black; padding: 0cm 5.4pt; height: 23.7292px;" valign="top" width="132"><span lang="EN-US" style="mso-ansi-language: EN-US;">smtps</span>

</td></tr><tr><td style="width: 120.5pt; border-right: 1pt solid black; border-bottom: 1pt solid black; border-left: 1pt solid black; border-image: initial; border-top: none; padding: 0cm 5.4pt; height: 23.7292px;" valign="top" width="161"><span lang="EN-US" style="mso-ansi-language: EN-US;">Mail SMTP auth</span>

</td><td style="width: 191.35pt; border-top: none; border-left: none; border-bottom: 1pt solid black; border-right: 1pt solid black; padding: 0cm 5.4pt; height: 23.7292px;" valign="top" width="255">Включается, если почтовый сервер поддерживает <span lang="EN-US" style="mso-ansi-language: EN-US;">smtp</span>-авторизацию

</td><td style="width: 99.25pt; border-top: none; border-left: none; border-bottom: 1pt solid black; border-right: 1pt solid black; padding: 0cm 5.4pt; height: 23.7292px;" valign="top" width="132"><span lang="EN-US" style="mso-ansi-language: EN-US;">true</span>

</td></tr><tr><td style="width: 120.5pt; border-right: 1pt solid black; border-bottom: 1pt solid black; border-left: 1pt solid black; border-image: initial; border-top: none; padding: 0cm 5.4pt; height: 23.7292px;" valign="top" width="161"><span lang="EN-US" style="mso-ansi-language: EN-US;">Mail SMTP STARTTLS</span>

</td><td style="width: 191.35pt; border-top: none; border-left: none; border-bottom: 1pt solid black; border-right: 1pt solid black; padding: 0cm 5.4pt; height: 23.7292px;" valign="top" width="255">Включается, если почтовый сервер поддерживает <span lang="EN-US" style="mso-ansi-language: EN-US;">SMTP</span> <span lang="EN-US" style="mso-ansi-language: EN-US;">STARTTLS</span>

</td><td style="width: 99.25pt; border-top: none; border-left: none; border-bottom: 1pt solid black; border-right: 1pt solid black; padding: 0cm 5.4pt; height: 23.7292px;" valign="top" width="132"><span lang="EN-US" style="mso-ansi-language: EN-US;">true</span>

</td></tr><tr><td style="width: 120.5pt; border-right: 1pt solid black; border-bottom: 1pt solid black; border-left: 1pt solid black; border-image: initial; border-top: none; padding: 0cm 5.4pt; height: 23.7292px;" valign="top" width="161"><span lang="EN-US" style="mso-ansi-language: EN-US;">Mail user</span>

</td><td style="width: 191.35pt; border-top: none; border-left: none; border-bottom: 1pt solid black; border-right: 1pt solid black; padding: 0cm 5.4pt; height: 23.7292px;" valign="top" width="255">Имя пользователя, от имени которого выполняется рассылка

</td><td style="width: 99.25pt; border-top: none; border-left: none; border-bottom: 1pt solid black; border-right: 1pt solid black; padding: 0cm 5.4pt; height: 23.7292px;" valign="top" width="132"><span lang="EN-US" style="mso-ansi-language: EN-US;">wisla.vm1</span>

</td></tr><tr><td style="width: 120.5pt; border-right: 1pt solid black; border-bottom: 1pt solid black; border-left: 1pt solid black; border-image: initial; border-top: none; padding: 0cm 5.4pt; height: 23.7292px;" valign="top" width="161"><span lang="EN-US" style="mso-ansi-language: EN-US;">Mail password</span>

</td><td style="width: 191.35pt; border-top: none; border-left: none; border-bottom: 1pt solid black; border-right: 1pt solid black; padding: 0cm 5.4pt; height: 23.7292px;" valign="top" width="255">Пароль пользователя, от имени которого выполняется рассылка

</td><td style="width: 99.25pt; border-top: none; border-left: none; border-bottom: 1pt solid black; border-right: 1pt solid black; padding: 0cm 5.4pt; height: 23.7292px;" valign="top" width="132">пароль

</td></tr><tr><td style="width: 120.5pt; border-right: 1pt solid black; border-bottom: 1pt solid black; border-left: 1pt solid black; border-image: initial; border-top: none; padding: 0cm 5.4pt; height: 68.5208px;" valign="top" width="161"><span lang="EN-US" style="mso-ansi-language: EN-US;">Tickets per notification</span>

</td><td style="width: 191.35pt; border-top: none; border-left: none; border-bottom: 1pt solid black; border-right: 1pt solid black; padding: 0cm 5.4pt; height: 68.5208px;" valign="top" width="255">Используется для группировки писем по инцидентам в блоки по <span lang="EN-US" style="mso-ansi-language: EN-US;">N</span> штук. Если установлена единица, на каждый инцидент отправляется по одному письму

</td><td style="width: 99.25pt; border-top: none; border-left: none; border-bottom: 1pt solid black; border-right: 1pt solid black; padding: 0cm 5.4pt; height: 68.5208px;" valign="top" width="132">1

</td></tr></tbody></table>

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

![](https://wiki.wellink.ru/uploads/images/gallery/2024-01/embedded-image-zra1ss12.png)

<span style="color: rgb(35, 111, 161);">Рис.<span style="color: #206ea7;"> </span><span style="mso-no-proof: yes;">23</span> Интерфейс программы установки: настройки wiSLA.Cloud</span>

<span style="color: rgb(0, 0, 0);">19. Настройки портала оператора (Рис. 24) позволяют настроить URL для работы системы и задать, сколько дней актуален сохранённый профиль пользователя (имеется в виду сохранение, которое проводится флажком «Запомнить меня» на портале).</span>

<p class="callout warning"><span style="color: rgb(0, 0, 0);">Обращаем ваше внимание, если вы получаете доступ к порталу с помощью проброса портов или через прокси сервер, то вам необходимо отредактировать пункт HOST и в Whitelisted domains установить необходимые IP-адреса.</span></p>

<span style="color: rgb(0, 0, 0);">![](https://wiki.wellink.ru/uploads/images/gallery/2024-01/embedded-image-9oguiewx.png)</span>

<span style="color: rgb(35, 111, 161);"><span style="mso-bookmark: _Ref61997573;">Рис. </span><span style="mso-bookmark: _Ref61997611;"><span style="mso-bookmark: _Ref61997573;"><span style="mso-no-proof: yes;">24</span></span></span><span style="mso-bookmark: _Ref61997573;"> Настройки портала оператора</span></span>

<span style="color: rgb(0, 0, 0);"><span style="mso-bookmark: _Ref61997573;">20. Подтверждение настроек (рисунок 25). Программа установки отображает топологию. На этом этапе можно вернуться назад и внести забытые настройки. После подтверждения начинается процесс установки.</span></span>

<span style="color: rgb(0, 0, 0);"><span style="mso-bookmark: _Ref61997573;">![](https://wiki.wellink.ru/uploads/images/gallery/2024-01/embedded-image-h9zrmc4w.png)</span></span>

<span style="color: rgb(35, 111, 161);">Рис.<span style="mso-no-proof: yes;">25</span> Интерфейс программы установки: просмотр топологии и подтверждение настроек</span>

<span style="color: rgb(0, 0, 0);">21. Если установка прошла удачно, программа выведет запрос на добавление сервиса wisla в автозагрузку. Данное действие возможно только в том случае, если пользователь wisla был добавлен в sudoers. В противном случае требуется отказаться от действия.  
</span>

<span style="color: rgb(0, 0, 0);">22. После установки система автоматически запускается. Ход запуска можно отслеживать в журналах работы (Logs viewer – wiSLA logs) и статусах (Status). Признаком успешного запуска является сообщение в журнале server.log, выделенное на рисунке 26. Для полного запуска новой системе без инфраструктуры обычно требуется до 5 минут.</span>

<span style="color: rgb(0, 0, 0);"><span style="mso-bookmark: _Ref61997573;">![](https://wiki.wellink.ru/uploads/images/gallery/2024-01/embedded-image-8k0y8fig.png)</span></span>

<span style="background-color: rgb(255, 255, 255); color: rgb(35, 111, 161);">Рис.<span style="mso-no-proof: yes;">26</span> Сообщение об успешном запуске системы wiSLA в communicator.log</span>

<span style="background-color: rgb(255, 255, 255); color: rgb(0, 0, 0);">23. После запуска сервера приложений можно начинать работу с порталом. По умолчанию в системе присутствует пользователь Admin с паролем Admin@123. Зайдя с этими учётными данными, можно создать пользователя с ролью «Системный администратор», который сможет далее создавать инфраструктуру. Необходимо сменить пароль <span style="background-color: rgb(255, 255, 255); color: rgb(0, 0, 0);">Admin </span>при первом входе в целях безопасности.  
24\. Если система в ходе установки добавлялась в список автозагрузки, рекомендуется выполнить пробный перезапуск сервера с целью проверки механизма автоматического запуска wiSLA.</span>

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

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

**<span style="color: rgb(35, 111, 161);">Этап 1.</span>** Переход под пользователя wisla:

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

```bash
sudo su - wisla
```

<details id="bkmrk-redos-%D0%A1-%D0%B4%D0%BE%D1%81%D1%82%D1%83%D0%BF%D0%BE%D0%BC-%D0%BA-%D1%81"><summary>Если пользователь wisla еще не существует в системе его необходимо создать используя следующие команды пошагово.</summary>

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

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

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

```bash
sudo passwd wisla
```

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

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

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

```bash
# Создаем файл лимитов
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 (если нет):

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

</details><span style="color: rgb(35, 111, 161);">**Этап 2.** </span>Подготовка каталога Wisla-wiprobe-agregator.

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

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

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

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

```bash
ls -l /opt/
```

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

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

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

```bash
cd /opt/aggr-wisla
```

**<span style="color: rgb(35, 111, 161);">Этап 3.</span>** Копирование архива Java**:**  
Предполагается, что архив OpenJDK11U-jdk\_x64\_linux\_hotspot\_11.0.28\_6.tar.gz уже передан или скачан с корпоративного файла обменника.

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

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

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

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

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

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

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

```bash
$JAVA_HOME/bin/java -version
```

**<span style="color: rgb(35, 111, 161);">Этап 4.</span>** Настройка переменного окружения:  
  
Выполнить следующие команды для добавления переменных окружений для пользователя wisla:

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

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

**<span style="color: rgb(35, 111, 161);">Этап 5.</span>** Копирование JAR файла:

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

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

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

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

```bash
sudo chmod +x /opt/aggr-wisla/wisla-wiprobe-aggregator.jar
```

```bash
sudo chown wisla:wisla /opt/aggr-wisla/wisla-wiprobe-aggregator.jar
```

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

```bash
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.Изменение пользователя:

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

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

```bash
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
```

**<span style="color: rgb(35, 111, 161);">Этап 6.</span>** Запуск и проверка:

Обновляем systemd:

```bash
sudo systemctl daemon-reload
```

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

```bash
sudo systemctl enable wisla-wiprobe-aggregator
```

Запускаем Kafka:

```bash
sudo systemctl start wisla-wiprobe-aggregator
```

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

```bash
sudo systemctl status wisla-wiprobe-aggregator
```

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

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

<p class="callout info">Автокоррелятор wiCore должен быть установлен и запущен (см. [Руководство администратора wiCore](https://wiki.wellink.ru/books/rukovodstvo-administratora-wicore "Руководство администратора wiCore")).</p>

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

![](https://wiki.wellink.ru/uploads/images/gallery/2024-01/embedded-image-pllxurvo.png)

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

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

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

- **Auto correlator url** (по умолчанию значение locahost:8083),
- **Enabling auto correlator** (по умолчанию значение false).

[![image-1680716978406.png](https://wiki.wellink.ru/uploads/images/gallery/2023-04/scaled-1680-/image-1680716978406.png)](https://wiki.wellink.ru/uploads/images/gallery/2023-04/image-1680716978406.png)

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

- указать ссылку модуля автокорреляции "**Auto correlator url**" (доменное имя + порт, если в наличии),
- указать значение "**Enabling auto correlator**" как **true.**

[![image-1680717866828.png](https://wiki.wellink.ru/uploads/images/gallery/2023-04/scaled-1680-/image-1680717866828.png)](https://wiki.wellink.ru/uploads/images/gallery/2023-04/image-1680717866828.png)

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

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

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

## <span style="color: rgb(0, 0, 0);">Действия при неудачной попытке установки wiSLA</span>  


<span style="background-color: rgb(255, 255, 255); color: rgb(0, 0, 0);">В случае если установка wiSLA завершилась c ошибкой, требуется:</span>

1. <span style="background-color: rgb(255, 255, 255); color: rgb(0, 0, 0);">Проанализировать причину сбоя установки. Для этого можно использовать log-файлы программы установки в текущем каталоге, а также прокрутку в окне для просмотра хода установки.</span>
2. <span style="background-color: rgb(255, 255, 255); color: rgb(0, 0, 0);">Завершить все процессы, связанные с java.</span>
3. <span style="background-color: rgb(255, 255, 255); color: rgb(0, 0, 0);">Выйти из программы установки и удалить новые каталоги в /home/wisla (hadoop, hbase, postgresql, zookeeper).</span>

<span style="background-color: rgb(255, 255, 255); color: rgb(0, 0, 0);">Повторить попытку установки с исправленными настройками.</span>

## <span style="color: rgb(0, 0, 0);">Регламент по восстановлению работоспособности системы wiSLA в случае сбоя</span>

<span style="color: rgb(0, 0, 0);">Как правило, внешние проявления не дают информации об основной причине сбоя. Ими могут быть: </span>

- <span style="color: rgb(0, 0, 0);">повторяющиеся проблемы при открытии страниц портала;</span>
- <span style="color: rgb(0, 0, 0);">нехарактерное поведение элементов интерфейса;</span>
- <span style="color: rgb(0, 0, 0);">ошибки при сохранении объектов инфраструктуры;</span>
- <span style="color: rgb(0, 0, 0);">отсутствие данных от всех измерительных зондов;</span>
- <span style="color: rgb(0, 0, 0);">отсутствие писем о неисправностях;</span>
- <span style="color: rgb(0, 0, 0);">ошибочные даты на календарях;</span>
- <span style="color: rgb(0, 0, 0);">ошибочная дата и время в событиях;</span>
- недоступный портал.

<span style="color: rgb(0, 0, 0);">При возникновении одного или нескольких проявлений требуется провести первичную диагностику для установления причины сбоя (таблица 5).</span>

<span style="color: rgb(35, 111, 161);">Таблица 5 – Первичная диагностика и устранение проблемы.</span>

<table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" id="bkmrk-%D0%92%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%B0%D1%8F-%D0%BF%D1%80%D0%B8%D1%87%D0%B8%D0%BD%D0%B0-%D1%81%D0%B1" style="border-collapse: collapse; width: 100%; border-width: 1px; border-spacing: 0px;" width="614"><thead><tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes;"><td style="width: 28.1659%; border: 1pt solid windowtext;" valign="top" width="162">**Возможная причина сбоя**

</td><td style="width: 34.9969%; border-top: 1pt solid windowtext; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-image: initial; border-left: none;" valign="top" width="218">**Действия по выявлению**

</td><td style="width: 36.8684%; border-top: 1pt solid windowtext; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-image: initial; border-left: none;" valign="top" width="234">**Устранение проблемы**

</td></tr></thead><tbody><tr style="mso-yfti-irow: 1;"><td style="width: 28.1659%; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-image: initial; border-top: none;" valign="top" width="162">1\. Отказ одного из компонентов wiSLA (не является самостоятельной причиной, требует продолжения диагностики)

</td><td style="width: 34.9969%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" valign="top" width="218">Просмотр статусов компонентов wiSLA в программе установки

</td><td style="width: 36.8684%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" valign="top" width="234">Поиск основной причины сбоя, перезапуск всех компонентов wiSLA

</td></tr><tr style="mso-yfti-irow: 2;"><td style="width: 28.1659%; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-image: initial; border-top: none;" valign="top" width="162">2\. Резкий скачок времени на сервере

</td><td style="width: 34.9969%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" valign="top" width="218">Проверка времени на каждом из узлов, где установлена wiSLA.

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

</td><td style="width: 36.8684%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" valign="top" width="234">Установка корректных даты и времени, запуск NTP, перезапуск всех компонентов wiSLA. Если база данных испорчена некорректными данными, потребуется выполнить восстановление из резервной копии (обратитесь в службу технической поддержки)

</td></tr><tr style="mso-yfti-irow: 3;"><td style="width: 28.1659%; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-image: initial; border-top: none;" valign="top" width="162">3\. Продолжительный разрыв связи между узлами wiSLA

</td><td style="width: 34.9969%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" valign="top" width="218">Определение доступности серверов, изучение журналов работы системы, опрос системных администраторов

</td><td style="width: 36.8684%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" valign="top" width="234">Перезапуск всех компонентов wiSLA

</td></tr><tr style="mso-yfti-irow: 4;"><td style="width: 28.1659%; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-image: initial; border-top: none;" valign="top" width="162">4\. Аварийная перезагрузка одного или нескольких узлов

</td><td style="width: 34.9969%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" valign="top" width="218">Сравнение времени непрерывной работы серверов wiSLA, изучение журналов работы операционной системы сервера с наименьшим временем непрерывной работы

</td><td style="width: 36.8684%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" valign="top" width="234">Перезапуск всех компонентов wiSLA

</td></tr><tr style="mso-yfti-irow: 5;"><td style="width: 28.1659%; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-image: initial; border-top: none;" valign="top" width="162">5\. Исчерпано свободное место на одном из дисков

</td><td style="width: 34.9969%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" valign="top" width="218">Получение информации об использовании дискового пространства на всех серверах wiSLA

</td><td style="width: 36.8684%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" valign="top" width="234">Очистка дисков, добавление дисков, перезапуск всех компонентов wiSLA. Если перезапуск не решает проблему, возможно, повреждена база данных или программные файлы. В этом случае потребуется восстановить систему из резервной копии или выполнить полную переустановку системы (обратитесь в службу технической поддержки)

</td></tr><tr style="mso-yfti-irow: 6;"><td style="width: 28.1659%; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-image: initial; border-top: none;" valign="top" width="162">6\. Вмешательство в работу сервера (изменение настроек сети, файловой системы и т.п. при работающей wiSLA)

</td><td style="width: 34.9969%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" valign="top" width="218">Опрос системных администраторов

</td><td style="width: 36.8684%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" valign="top" width="234">Перезапуск всех компонентов wiSLA

</td></tr><tr style="mso-yfti-irow: 7;"><td style="width: 28.1659%; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-image: initial; border-top: none;" valign="top" width="162">7\. Неудачное обновление wiSLA

</td><td style="width: 34.9969%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" valign="top" width="218">Чтение журнальных файлов после обновления

</td><td style="width: 36.8684%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" valign="top" width="234">Обратитесь в службу технической поддержки

</td></tr><tr style="mso-yfti-irow: 8; mso-yfti-lastrow: yes;"><td style="width: 28.1659%; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-image: initial; border-top: none;" valign="top" width="162">8\. Аппаратные проблемы на сервере

</td><td style="width: 34.9969%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" valign="top" width="218">Определение проблемного сервера, перезагрузка, просмотр данных POST, изучение журналов операционной системы, проверка диска, тестирование ОЗУ, замена компонентов на заведомо исправные и т.д. Выходит за рамки настоящего Руководства

</td><td style="width: 36.8684%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" valign="top" width="234">Действия зависят от характера сбоя. Если потери данных не было, будет достаточно перезапустить все компоненты wiSLA.

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

</td></tr></tbody></table>

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

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

<span style="color: rgb(35, 111, 161);">Таблица 4 – Действия по обслуживанию системы wiSLA.</span>

<table border="1" cellpadding="0" cellspacing="0" class="MsoNormalTable" id="bkmrk-%D0%A7%D1%82%D0%BE-%D1%82%D1%80%D0%B5%D0%B1%D1%83%D0%B5%D1%82%D1%81%D1%8F-%D1%81%D0%B4%D0%B5%D0%BB%D0%B0%D1%82" style="border-collapse: collapse; width: 100%; border-width: 1px; border-spacing: 0px;" width="605"><thead><tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes;"><td style="width: 35.5583%; border: 1pt solid windowtext;" width="180">**<span style="font-family: 'Arial',sans-serif;">Что требуется сделать?</span>**

</td><td style="width: 64.4729%; border-top: 1pt solid windowtext; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-image: initial; border-left: none;" width="425">**<span style="font-family: 'Arial',sans-serif;">Последовательность действий</span>**

</td></tr></thead><tbody><tr style="mso-yfti-irow: 1;"><td style="width: 35.5583%; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-image: initial; border-top: none;" width="180">1\. Просмотреть информацию о статусах всех компонентов wiSLA

</td><td style="width: 64.4729%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" width="425">1\. Запустить программу установки wiSLA.

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

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

Незапущенные компоненты можно определить по наличию <span lang="EN-US" style="mso-ansi-language: EN-US;">"\[FAIL\]" </span>и<span lang="EN-US" style="mso-ansi-language: EN-US;"> "NOT STARTED" </span>в<span style="mso-ansi-language: EN-US;"> </span>строке<span lang="EN-US" style="mso-ansi-language: EN-US;">.</span>

</td></tr><tr style="mso-yfti-irow: 2;"><td style="width: 35.5583%; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-image: initial; border-top: none;" width="180">2\. Остановить все компоненты wiSLA с помощью программы установки

</td><td style="width: 64.4729%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" width="425">1\. Запустить программу установки wiSLA.

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

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

</td></tr><tr style="mso-yfti-irow: 3;"><td style="width: 35.5583%; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-image: initial; border-top: none;" width="180">3\. Управление запуском <span lang="EN-US" style="mso-ansi-language: EN-US;">wiSLA</span> с помощью скрипта запуска (для варианта установки всех компонентов на 1 сервер)

</td><td style="width: 64.4729%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" width="425">Для управления запуском следует получить доступ к консоли сервера <span lang="EN-US" style="mso-ansi-language: EN-US;">wiSLA</span>, пользователь “<span lang="EN-US" style="mso-ansi-language: EN-US;">wisla</span>".

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

<span style="mso-fareast-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'; font-weight: normal;"><span style="mso-list: Ignore;">$<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="color: black; mso-color-alt: windowtext;">sudo systemctl start wisla5</span>

или

<span lang="EN-US" style="mso-fareast-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US; font-weight: normal;"><span style="mso-list: Ignore;">$<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="EN-US" style="color: black; mso-color-alt: windowtext; mso-ansi-language: EN-US;">sudo /opt/wisla5/scripts/wisla5.sh start</span>

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

<span style="mso-fareast-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'; font-weight: normal;"><span style="mso-list: Ignore;">$<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="color: black; mso-color-alt: windowtext;">sudo systemctl stop wisla5</span>

или

<span lang="EN-US" style="mso-fareast-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US; font-weight: normal;"><span style="mso-list: Ignore;">$<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="EN-US" style="color: black; mso-color-alt: windowtext; mso-ansi-language: EN-US;">sudo /opt/wisla5/scripts/wisla5.sh stop</span>

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

<span style="mso-fareast-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'; font-weight: normal;"><span style="mso-list: Ignore;">$<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="color: black; mso-color-alt: windowtext;">sudo systemctl status wisla5</span>

или

<span lang="EN-US" style="mso-fareast-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US; font-weight: normal;"><span style="mso-list: Ignore;">$<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="EN-US" style="color: black; mso-color-alt: windowtext; mso-ansi-language: EN-US;">sudo /opt/wisla5/scripts/wisla5.sh status</span>

Запуск<span style="mso-ansi-language: EN-US;"> </span>только<span style="mso-ansi-language: EN-US;"> </span>сервера<span style="mso-ansi-language: EN-US;"> </span>приложений<span lang="EN-US" style="mso-ansi-language: EN-US;">:</span>

<span lang="EN-US" style="mso-fareast-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US; font-weight: normal;"><span style="mso-list: Ignore;">$<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="EN-US" style="color: black; mso-color-alt: windowtext; mso-ansi-language: EN-US;">sudo /opt/wisla5/scripts/wisla5.sh start-wildfly</span>

Остановка<span style="mso-ansi-language: EN-US;"> </span>только<span style="mso-ansi-language: EN-US;"> </span>сервера<span style="mso-ansi-language: EN-US;"> </span>приложений<span lang="EN-US" style="mso-ansi-language: EN-US;">:</span>

<span lang="EN-US" style="mso-fareast-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US; font-weight: normal;"><span style="mso-list: Ignore;">$<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="EN-US" style="color: black; mso-color-alt: windowtext; mso-ansi-language: EN-US;">sudo /opt/wisla5/scripts/wisla5.sh stop-wildfly</span>

Перезапуск<span style="mso-ansi-language: EN-US;"> </span>только<span style="mso-ansi-language: EN-US;"> </span>сервера<span style="mso-ansi-language: EN-US;"> </span>приложений<span lang="EN-US" style="mso-ansi-language: EN-US;">:</span>

<span lang="EN-US" style="mso-fareast-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US; font-weight: normal;"><span style="mso-list: Ignore;">$<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="EN-US" style="color: black; mso-color-alt: windowtext; mso-ansi-language: EN-US;">sudo /opt/wisla5/scripts/wisla5.sh restart-wildfly</span>

Проверка<span style="mso-ansi-language: EN-US;"> </span>состояния<span style="mso-ansi-language: EN-US;"> </span>сервера<span style="mso-ansi-language: EN-US;"> </span>приложений<span lang="EN-US" style="mso-ansi-language: EN-US;">:</span>

<span lang="EN-US" style="mso-fareast-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US; font-weight: normal;"><span style="mso-list: Ignore;">$<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="EN-US" style="color: black; mso-color-alt: windowtext; mso-ansi-language: EN-US;">sudo /opt/wisla5/scripts/wisla5.sh status-wildfly</span>

</td></tr><tr style="mso-yfti-irow: 4;"><td style="width: 35.5583%; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-image: initial; border-top: none;" width="180"><span lang="EN-US" style="mso-ansi-language: EN-US;">4</span>. Перезапустить все компоненты wiSLA

</td><td style="width: 64.4729%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" width="425">1\. Запустить программу установки wiSLA.

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

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

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

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

</td></tr><tr style="mso-yfti-irow: 5;"><td style="width: 35.5583%; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-image: initial; border-top: none;" width="180">5\. Узнать, что система полностью запущена

</td><td style="width: 64.4729%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" width="425">1\. Запустить программу установки.

2\. Выбрать в меню программы установки раздел**<span style="font-family: 'Arial',sans-serif;"> </span>**"Log <span lang="EN-US" style="mso-ansi-language: EN-US;">v</span>iewer" - "wiSLA” – “<span lang="EN-US" style="mso-ansi-language: EN-US;">Server</span>.log <span lang="EN-US" style="mso-ansi-language: EN-US;">at</span>..."

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

Запись<span style="mso-ansi-language: EN-US;"> </span>об<span style="mso-ansi-language: EN-US;"> </span>удачном<span style="mso-ansi-language: EN-US;"> </span>запуске<span lang="EN-US" style="mso-ansi-language: EN-US;">:</span>

<span lang="EN-US">wiSLA COMPONENTS ARE FULLY DEPLOYED, INTERCONNECTED AND READY TO WORK.</span>

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

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

</td></tr><tr style="mso-yfti-irow: 6;"><td style="width: 35.5583%; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-image: initial; border-top: none;" width="180"><span lang="EN-US" style="mso-ansi-language: EN-US;">6</span>. Перезапустить сервер приложений

</td><td style="width: 64.4729%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" width="425">1\. Запустить программу установки wiSLA.

2\. В программе установки wiSLA выбрать "Maintenance" – “<span lang="EN-US" style="mso-ansi-language: EN-US;">wiSLA</span>” – "Stop All", дождаться завершения выполнения команды.

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

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

5\. Проверить статус <span lang="EN-US" style="mso-ansi-language: EN-US;">wiSLA</span>.

</td></tr><tr style="mso-yfti-irow: 7;"><td style="width: 35.5583%; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-image: initial; border-top: none;" width="180">7\. Получить информацию о свободном месте на диске

</td><td style="width: 64.4729%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" width="425">В ssh-сессии выполнить команду:

<span style="mso-fareast-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'; font-weight: normal;"><span style="mso-list: Ignore;">$<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="color: black; mso-color-alt: windowtext;">df -h</span>

</td></tr><tr style="mso-yfti-irow: 8;"><td style="width: 35.5583%; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-image: initial; border-top: none;" width="180">8\. Получить информацию о времени непрерывной работы сервера

</td><td style="width: 64.4729%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" width="425">В ssh-сессии выполнить команду:

<span style="mso-fareast-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'; font-weight: normal;"><span style="mso-list: Ignore;">$<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="color: black; mso-color-alt: windowtext;">uptime</span>

</td></tr><tr style="mso-yfti-irow: 9;"><td style="width: 35.5583%; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-image: initial; border-top: none;" width="180">9\. Просмотреть журналы работы операционной системы

</td><td style="width: 64.4729%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" width="425">В <span lang="EN-US" style="mso-ansi-language: EN-US;">SSH</span>-сессии выполнить команду:

<span style="mso-fareast-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'; font-weight: normal;"><span style="mso-list: Ignore;">$<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="color: black; mso-color-alt: windowtext;">less /var/log/messages</span>

</td></tr><tr style="mso-yfti-irow: 10;"><td style="width: 35.5583%; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-image: initial; border-top: none;" width="180">10\. Просмотреть журналы работы системы wiSLA

</td><td style="width: 64.4729%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" width="425">1\. Запустить программу установки.

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

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

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

</td></tr><tr style="mso-yfti-irow: 11;"><td style="width: 35.5583%; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-image: initial; border-top: none;" width="180">11\. Проверить время и дату в операционной системе

</td><td style="width: 64.4729%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" width="425">В ssh-сессии выполнить команду:

<span style="mso-fareast-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'; font-weight: normal;"><span style="mso-list: Ignore;">$<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="color: black; mso-color-alt: windowtext;">date</span>

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

</td></tr><tr style="mso-yfti-irow: 12;"><td style="width: 35.5583%; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-image: initial; border-top: none;" width="180">1<span lang="EN-US" style="mso-ansi-language: EN-US;">2</span>. Проверить работу службы NTP

</td><td style="width: 64.4729%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" width="425">В <span lang="EN-US" style="mso-ansi-language: EN-US;">SSH</span>-сессии выполнить команду:

<span style="mso-fareast-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'; font-weight: normal;"><span style="mso-list: Ignore;">$<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="color: black; mso-color-alt: windowtext;">sudo systemctl status ntpd</span>

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

<span style="mso-fareast-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'; font-weight: normal;"><span style="mso-list: Ignore;">$<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="color: black; mso-color-alt: windowtext;">ntpq –npcrv</span>

</td></tr><tr style="mso-yfti-irow: 13;"><td style="width: 35.5583%; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-image: initial; border-top: none;" width="180">1<span lang="EN-US" style="mso-ansi-language: EN-US;">3</span>. Добавить новый плагин

</td><td style="width: 64.4729%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" width="425">Для добавления нового плагина требуется:

1\. Скопировать файл плагина в каталог /opt/wisla5/<span lang="EN-US" style="mso-ansi-language: EN-US;">wildfly</span>/current/wisla\_plugins/.

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

<span style="mso-fareast-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'; font-weight: normal;"><span style="mso-list: Ignore;">$<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span style="color: black; mso-color-alt: windowtext;">chown wisla.wisla \*.jar</span>

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

4\. Перейти в меню <span lang="EN-US" style="mso-ansi-language: EN-US;">«Maintenance» - «wiSLA» </span>и<span style="mso-ansi-language: EN-US;"> </span>выполнить<span lang="EN-US" style="mso-ansi-language: EN-US;"> «Reload\_plugins».</span>

</td></tr><tr style="mso-yfti-irow: 14; mso-yfti-lastrow: yes;"><td style="width: 35.5583%; border-right: 1pt solid windowtext; border-bottom: 1pt solid windowtext; border-left: 1pt solid windowtext; border-image: initial; border-top: none;" width="180">1<span lang="EN-US" style="mso-ansi-language: EN-US;">4</span>. Загрузить модуль коллектора <span lang="EN-US" style="mso-ansi-language: EN-US;">Netflow</span>

</td><td style="width: 64.4729%; border-top: none; border-left: none; border-bottom: 1pt solid windowtext; border-right: 1pt solid windowtext;" width="425">Для загрузки коллектора <span lang="EN-US" style="mso-ansi-language: EN-US;">Netflow</span> требуется:

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

<span lang="EN-US" style="mso-ansi-language: EN-US;">2. </span>Скопировать<span style="mso-ansi-language: EN-US;"> </span>файл<span style="mso-ansi-language: EN-US;"> </span>в<span style="mso-ansi-language: EN-US;"> </span>каталог

<span lang="EN-US" style="mso-ansi-language: EN-US;">/opt/wisla5/wildfly/current/standalone/deployments</span>

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

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

<span lang="EN-US" style="mso-fareast-font-family: 'Courier New'; mso-bidi-font-family: 'Courier New'; mso-ansi-language: EN-US; font-weight: normal;"><span style="mso-list: Ignore;">$<span style="font: 7.0pt 'Times New Roman';"> </span></span></span><span lang="EN-US" style="color: black; mso-color-alt: windowtext; mso-ansi-language: EN-US;">touch /opt/wisla5/wildfly/current/standalone/deployments/wisla-netflow-collector-web-5.1-SNAPSHOT.war.dodeploy</span>

После получения доступа на портал оператора потребуется добавить коллектор в качестве зонда «<span lang="EN-US" style="mso-ansi-language: EN-US;">Netflow</span> <span lang="EN-US" style="mso-ansi-language: EN-US;">collector</span>» с <span lang="EN-US" style="mso-ansi-language: EN-US;">IP</span>-адресом 127.0.0.1 (раздел «Зонды», кнопка «+ Создать», тип «<span lang="EN-US" style="mso-ansi-language: EN-US;">Netflow</span> <span lang="EN-US" style="mso-ansi-language: EN-US;">collector</span>»).

</td></tr></tbody></table>

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

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

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

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

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

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2024-05/scaled-1680-/IFOimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2024-05/IFOimage.png)

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2024-05/scaled-1680-/13zimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2024-05/13zimage.png)

2)Скачать executable tarball

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2024-05/scaled-1680-/rCjimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2024-05/rCjimage.png)

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

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2024-05/scaled-1680-/vczimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2024-05/vczimage.png)

```bash
chmod +x podmanizedWisla.sh
```

4)Запустить

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2024-05/scaled-1680-/EsRimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2024-05/EsRimage.png)

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2024-05/scaled-1680-/I9Zimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2024-05/I9Zimage.png)

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2024-05/scaled-1680-/6eXimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2024-05/6eXimage.png)

```bash
./podmanizedWisla.sh
```

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

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

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

```bash
systemctl --user status wisla-podman
```

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

```bash
systemctl --user start wisla-podman
```

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

```bash
systemctl --user stop wisla-podman
```

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

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

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

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

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

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

```bash
./tool.sh wisla-script start
```

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

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2024-05/scaled-1680-/wecimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2024-05/wecimage.png)

```bash
./tool.sh wisla-wildfly-log
```

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

```bash
./tool.sh wisla-script stop
```

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

```bash
./tool.sh stop-container
```

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

```bash
./tool.sh start-container
```

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

## **<span style="font-family: 'Arial',sans-serif;">Поддерживаемые параметры установщика Wisla</span>**

<span style="font-family: 'Arial',sans-serif;">Чтобы узнать доступные параметры установщика Wisla, выполнить команду:</span>

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

<span style="font-family: 'Arial',sans-serif;">Будет следующий вывод:</span>

```
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

```

## **<span style="font-family: 'Arial',sans-serif;">Варианты обновления системы</span>**

<span style="color: rgb(0, 0, 0);">**<span style="font-family: 'Arial',sans-serif;">1. Установка wisla с нуля </span>**</span>

<span style="font-family: 'Arial',sans-serif;">Убедиться что в системе отсутствуют установленные ранее папки : hadoop, postgresql, zookeeper, hbase. Иначе будет полуавтоматический режим установки, где необходимо будет подтверждать очистку каталогов, а при попытке нажать No процесс установки будет прерван.</span>

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

<span style="color: rgb(0, 0, 0);">**<span style="font-family: 'Arial',sans-serif;">2. Стандартное обновление (с резервным копированием)</span>**</span>

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

<span style="font-family: 'Arial',sans-serif;">Этот режим выполняет обновление системы с сохранением резервных копий данных.</span>

<span style="color: rgb(0, 0, 0);">**<span style="font-family: 'Arial',sans-serif;">3. Быстрое обновление без резервного копирования</span>**</span>

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

<span style="font-family: 'Arial',sans-serif;">Этот режим пропускает этап создания резервных копий, ускоряя процесс обновления.</span>

<span style="color: rgb(0, 0, 0);">**<span style="font-family: 'Arial',sans-serif;">4. Быстрое обновление с восстановлением новой базы данных PostgreSQL</span>**</span>

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

<span style="font-family: 'Arial',sans-serif;">Здесь </span>`<span style="font-size: 10.0pt; font-family: 'Arial',sans-serif;">/path/to/postgres_dump.sql</span>`<span style="font-family: 'Arial',sans-serif;"> — путь к файлу дампа PostgreSQL, который будет использован для восстановления данных.</span>

<span style="color: rgb(0, 0, 0);">**<span style="font-family: 'Arial',sans-serif;">5. Полная замена базы данных и HBase</span>**</span>

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

<span style="font-family: 'Arial',sans-serif;">Где:</span>

- `<span lang="EN-US" style="font-size: 10.0pt; font-family: 'Arial',sans-serif; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US;">/path/to/postgres_dump.sql</span>`<span lang="EN-US" style="font-family: 'Arial',sans-serif; mso-ansi-language: EN-US;"> — </span><span style="font-family: 'Arial',sans-serif;">путь</span><span style="font-family: 'Arial',sans-serif; mso-ansi-language: EN-US;"> </span><span style="font-family: 'Arial',sans-serif;">к</span><span style="font-family: 'Arial',sans-serif; mso-ansi-language: EN-US;"> </span><span style="font-family: 'Arial',sans-serif;">дампу</span><span lang="EN-US" style="font-family: 'Arial',sans-serif; mso-ansi-language: EN-US;"> PostgreSQL.</span>
- `<span lang="EN-US" style="font-size: 10.0pt; font-family: 'Arial',sans-serif; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US;">/path/to/hbase_data</span>`<span lang="EN-US" style="font-family: 'Arial',sans-serif; mso-ansi-language: EN-US;"> — </span><span style="font-family: 'Arial',sans-serif;">путь</span><span style="font-family: 'Arial',sans-serif; mso-ansi-language: EN-US;"> </span><span style="font-family: 'Arial',sans-serif;">к</span><span style="font-family: 'Arial',sans-serif; mso-ansi-language: EN-US;"> </span><span style="font-family: 'Arial',sans-serif;">данным</span><span lang="EN-US" style="font-family: 'Arial',sans-serif; mso-ansi-language: EN-US;"> HBase</span>**<span lang="EN-US" style="font-family: 'Arial',sans-serif; mso-ansi-language: EN-US;">.</span>**

<span style="color: rgb(0, 0, 0);">**<span style="font-family: 'Arial',sans-serif;">6. Установка только Hadoop</span>**</span>

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

## **<span style="font-family: 'Arial',sans-serif;">Дополнительно:</span>**

- <span style="color: rgb(0, 0, 0);">**<span style="font-family: 'Arial',sans-serif;">Просмотр логов</span>**</span>

<span style="font-family: 'Arial',sans-serif;">По умолчанию логи установки сохраняются в файл </span>`<span style="font-size: 10.0pt; font-family: 'Arial',sans-serif;">install.YYYY-MM-dd_HH:mm:ss.log</span>`<span style="font-family: 'Arial',sans-serif;">. Изменить имя лога можно так:</span>

```
export INSTALL_LOG=my_install_log.txt
```

- <span style="color: rgb(0, 0, 0);">**<span style="font-family: 'Arial',sans-serif;">Изменение временной директории</span>**</span>

```
export INSTALL_TEMP=/custom/temp/dir
```

- <span style="color: rgb(0, 0, 0);">**<span style="font-family: 'Arial',sans-serif;">Режим текстового интерфейса</span>**</span>

```
./wisla-5.2.9-xxxxxxxx.run -t
```

##  

## **<span style="font-family: 'Arial',sans-serif;">Управление всеми сервисами Wisla</span>**

- <span style="color: rgb(0, 0, 0);">**<span style="font-family: 'Arial',sans-serif;">Проверка статуса запущенных сервисов</span>**</span>

```
/opt/wisla5/scripts/wisla5.sh status
```

- <span style="color: rgb(0, 0, 0);">**<span style="font-family: 'Arial',sans-serif;">Остановка всех сервисов</span>**</span>

```
/opt/wisla5/scripts/wisla5.sh stop
```

- <span style="color: rgb(0, 0, 0);">**<span style="font-family: 'Arial',sans-serif;">Запуск всех сервисов</span>**</span>

```
/opt/wisla5/scripts/wisla5.sh start
```

- <span style="color: rgb(0, 0, 0);">**<span style="font-family: 'Arial',sans-serif;">Перезапуск</span><span style="font-family: 'Arial',sans-serif; mso-ansi-language: EN-US;"> </span><span style="font-family: 'Arial',sans-serif;">всех сервисов</span>**</span>

```
/opt/wisla5/scripts/wisla5.sh restart
```

##  

## **<span style="font-family: 'Arial',sans-serif;">Управление только сервисом Wisla</span>**

- <span style="color: rgb(0, 0, 0);">**<span style="font-family: 'Arial',sans-serif;">Проверка статуса запущенных сервисов</span>**</span>

```
/opt/wisla5/scripts/wisla.sh status
```

- <span style="color: rgb(0, 0, 0);">**<span style="font-family: 'Arial',sans-serif;">Остановка всех сервисов</span>**</span>

```
/opt/wisla5/scripts/wisla.sh stop
```

- <span style="color: rgb(0, 0, 0);">**<span style="font-family: 'Arial',sans-serif;">Запуск всех сервисов</span>**</span>

```
/opt/wisla5/scripts/wisla.sh start
```

- **<span style="font-family: 'Arial',sans-serif;">Перезапуск</span><span style="font-family: 'Arial',sans-serif; mso-ansi-language: EN-US;"> </span><span style="font-family: 'Arial',sans-serif;">сервиса</span><span lang="EN-US" style="font-family: 'Arial',sans-serif; mso-ansi-language: EN-US;"> Wisla</span>**

```
/opt/wisla5/scripts/wisla.sh restart
```

Скрипт:

```bash
#!/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

```

##  

## **<span style="font-family: 'Arial',sans-serif;">Реиндексация</span>**

- <span style="color: rgb(0, 0, 0);">**<span style="font-family: 'Arial',sans-serif;">Стандартная реиндексация (требует запущенной системы)</span>**</span>

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

Скрипт:

```bash
#!/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

```

###  

- **<span style="font-family: 'Arial',sans-serif;">Независимая реиндексация (не зависит от состояния деплоя)</span>**

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

Скрипт:

```bash
#!/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

```

##  

## **<span style="font-family: 'Arial',sans-serif;">Создание резервных копий баз данных</span>**

- <span style="color: rgb(0, 0, 0);">**<span style="font-family: 'Arial',sans-serif;">PostgreSQL</span>**</span>

<span style="font-family: 'Arial',sans-serif;">Файл</span><span style="font-family: 'Arial',sans-serif; mso-ansi-language: EN-US;"> </span><span style="font-family: 'Arial',sans-serif;">шаблона</span><span style="font-family: 'Arial',sans-serif; mso-ansi-language: EN-US;"> </span><span style="font-family: 'Arial',sans-serif;">скрипта</span><span lang="EN-US" style="font-family: 'Arial',sans-serif; mso-ansi-language: EN-US;">: </span>`<span lang="EN-US" style="font-size: 10.0pt; font-family: 'Arial',sans-serif; mso-ansi-language: EN-US;">/opt/wisla5/backup_scripts/postgres_backup_template.sh</span>`

<span style="font-family: 'Arial',sans-serif;">Пример</span><span style="font-family: 'Arial',sans-serif; mso-ansi-language: EN-US;"> </span><span style="font-family: 'Arial',sans-serif;">запуска</span><span style="font-family: 'Arial',sans-serif; mso-ansi-language: EN-US;"> </span><span style="font-family: 'Arial',sans-serif;">резервного</span><span style="font-family: 'Arial',sans-serif; mso-ansi-language: EN-US;"> </span><span style="font-family: 'Arial',sans-serif;">копирования</span><span lang="EN-US" style="font-family: 'Arial',sans-serif; mso-ansi-language: EN-US;">:</span>

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

<span style="font-family: 'Arial',sans-serif;">Альтернативный способ через шаблонный скрипт:</span>

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

Скрипт:

```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}}
```

###   


- <span style="color: rgb(0, 0, 0);">**<span lang="EN-US" style="font-family: 'Arial',sans-serif; mso-ansi-language: EN-US;">HBase</span>**</span>

<span lang="EN-US" style="font-family: 'Arial',sans-serif; mso-ansi-language: EN-US;"><span style="font-family: 'Arial',sans-serif;">Файл</span><span style="font-family: 'Arial',sans-serif; mso-ansi-language: EN-US;"> </span><span style="font-family: 'Arial',sans-serif;">шаблона</span><span style="font-family: 'Arial',sans-serif; mso-ansi-language: EN-US;"> </span><span style="font-family: 'Arial',sans-serif;">скрипта</span>: `<span lang="EN-US" style="font-size: 10.0pt; font-family: 'Arial',sans-serif; mso-ansi-language: EN-US;">/opt/wisla5/backup_scripts/<span lang="EN-US" style="font-size: 10.0pt; line-height: 107%; font-family: 'Arial',sans-serif; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;">hbase</span><span style="font-size: 10.0pt; line-height: 107%; font-family: 'Arial',sans-serif; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: RU; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;">_</span><span lang="EN-US" style="font-size: 10.0pt; line-height: 107%; font-family: 'Arial',sans-serif; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;">backup</span><span style="font-size: 10.0pt; line-height: 107%; font-family: 'Arial',sans-serif; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: RU; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;">_</span><span lang="EN-US" style="font-size: 10.0pt; line-height: 107%; font-family: 'Arial',sans-serif; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;">template</span><span style="font-size: 10.0pt; line-height: 107%; font-family: 'Arial',sans-serif; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: RU; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;">.</span><span lang="EN-US" style="font-size: 10.0pt; line-height: 107%; font-family: 'Arial',sans-serif; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: EN-US; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;">sh</span></span>`</span><span style="font-size: 10.0pt; line-height: 107%; font-family: 'Arial',sans-serif;">, но корректность работы проверить не удалось, пробовал<span style="mso-spacerun: yes;"> </span>переписать скрипт, но возникает проблема при выполнении команды импорта снимков в папку.</span>

```bash
#!/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}

```

<span style="font-size: 10.0pt; line-height: 107%; font-family: 'Arial',sans-serif;">**!!!Но для выполнения скрипта надо настраивать hbase и hadoop**</span>

<span style="font-size: 10.0pt; line-height: 107%; font-family: 'Arial',sans-serif;">  
</span>

### **<span style="font-family: 'Arial',sans-serif;">Дополнительно:</span>**

- <span style="color: rgb(0, 0, 0);">**<span style="font-family: 'Arial',sans-serif;">Перезагрузка плагинов в приложении wiSLA</span>**</span>

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

Скрипт:

```bash
#!/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

```

- <span style="color: rgb(0, 0, 0);">**<span style="font-family: 'Arial',sans-serif;">Удаление старых лог файлов</span>**</span>

```
/opt/wisla5/scripts/remove-old-logs.sh
```

Скрипт:

```bash
#!/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

```

###  

<span style="font-size: 10.0pt; line-height: 107%; font-family: 'Arial',sans-serif;">  
</span>

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

#### <span style="font-family: 'Arial',sans-serif;">1. Подготовка к обновлению</span>

<span style="font-family: 'Arial',sans-serif;">**1.1 -** Альфа запущена (либо остановлена)</span>

<span style="font-family: 'Arial',sans-serif;">**1.2 -** Для структурирования папок, необходимо проверить наличие актуальной папки общей версии в каталоге </span>`<span style="font-size: 10.0pt; font-family: 'Arial',sans-serif; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin;">/home/wisla/wisla_distr</span>`<span style="font-family: 'Arial',sans-serif;"> (например, </span>`<span style="font-size: 10.0pt; font-family: 'Arial',sans-serif; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin;">5210</span>`<span style="font-family: 'Arial',sans-serif;">).</span>

<span style="font-family: 'Arial',sans-serif;">**1.3 -** Если папки нет, создать новую, иначе перейти в существующую (</span>`<span style="font-size: 10.0pt; font-family: 'Arial',sans-serif; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin;">/home/wisla/wisla_distr/5210</span>`<span style="font-family: 'Arial',sans-serif;">).</span>

[ ![image.png](https://wiki.wellink.ru/uploads/images/gallery/2025-03/scaled-1680-/eF8image.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-03/eF8image.png)

<span style="font-family: 'Arial',sans-serif;">**1.4 -** Внутри создать папку с наименованием версии дистрибутива wisla (</span>`<span style="font-size: 10.0pt; font-family: 'Arial',sans-serif; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin;">/home/wisla/wisla_distr/5210/2503121748</span>`<span style="font-family: 'Arial',sans-serif;">). Возможен вариант создания по порядку (1,2,3...), учитывая пропуски.</span>

 [![image.png](https://wiki.wellink.ru/uploads/images/gallery/2025-03/scaled-1680-/YO4image.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-03/YO4image.png)

<span style="font-family: 'Arial',sans-serif;">**1.5 -** Если в каталоге </span>`<span style="font-size: 10.0pt; font-family: 'Arial',sans-serif; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin;">/home/wisla/wisla_distr/5210/</span>`<span style="font-family: 'Arial',sans-serif;"> больше 15 папок, удалить старые до 7 штук (можно вручную).</span><span style="font-family: 'Arial',sans-serif;">(Для этого написан скрипт, если количество папок накопилось от 15 шт, то удалять ранее созданные папки, фильтруя по дате изменений, оставляя только 7 последних обновленных)</span>

```bash
#!/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

```

<span style="font-family: 'Arial',sans-serif;">**1.6 -** В созданную папку, с наименованием версии, загрузить актуальную версию дистрибутива (например, </span>`<span style="font-size: 10.0pt; font-family: 'Arial',sans-serif; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin;">wisla-5.2.10-2503121748.run</span>`<span style="font-family: 'Arial',sans-serif;">). Перейти в данную папку.</span>

 [![image.png](https://wiki.wellink.ru/uploads/images/gallery/2025-03/scaled-1680-/wbFimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-03/wbFimage.png)

<span style="font-family: 'Arial',sans-serif;">Проверить процесс загрузки файла по наименованию файла, об этом сигнализирует изменение имени </span>`<span style="font-size: 10.0pt; font-family: 'Arial',sans-serif;">wisla-5.2.10-2503121748.run.filepart</span>`<span style="font-family: 'Arial',sans-serif;"> на </span>`<span style="font-size: 10.0pt; font-family: 'Arial',sans-serif;">wisla-5.2.10-2503121748.run</span>`<span style="font-family: 'Arial',sans-serif;">).</span>

<span style="font-family: 'Arial',sans-serif;">**1.7 -** </span>Далее дать разрешение на запуск файла, выполнив команду:

```
chmod +x wisla-5.2.10-2503121748.run
```


#### <span style="font-family: 'Arial',sans-serif;">2. Запуск обновления</span>

**<span style="font-family: 'Arial',sans-serif;">1. Запустить автоматическое обновление:</span>**

```
./wisla-5.2.10-2503121748.run --silent-update
```

<span style="font-size: 11.0pt; font-family: 'Arial',sans-serif; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: RU; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;">Обновление включает формирование дампов PostgreSQL, HBase и конфигурационных файлов. Перед окончанием выполнения скрипта обновления, система выполнит реиндекс, в консоли будет соответствующее сообщение </span> **«Reindexing wisla engine lucene database..».**

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2025-03/scaled-1680-/JN5image.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-03/JN5image.png)

<span style="font-size: 11.0pt; font-family: 'Arial',sans-serif; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: RU; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;">После выполнения всех сценариев закроет установщик, перейдет в командную строку.</span>

<span style="font-size: 11.0pt; font-family: 'Arial',sans-serif; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: RU; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;">В каталоге ожидается наличие всех дампов:</span>

[![image.png](https://wiki.wellink.ru/uploads/images/gallery/2025-03/scaled-1680-/Q2Bimage.png)](https://wiki.wellink.ru/uploads/images/gallery/2025-03/Q2Bimage.png)

**<span style="font-size: 11.0pt; font-family: 'Arial',sans-serif; mso-fareast-font-family: Calibri; mso-fareast-theme-font: minor-latin; mso-ansi-language: RU; mso-fareast-language: EN-US; mso-bidi-language: AR-SA;"> 2. </span><span style="font-family: 'Arial',sans-serif;">Проверить статус обновления возможно выполнив API-запрос:</span>**

```
GET https://alfa-test.wellink.ru/engine/api/v1/system/state
```

**<span style="font-family: 'Arial',sans-serif;">Обновление завершено, когда:</span>**

<span style="font-family: 'Arial',sans-serif;">1) статус сменится с </span>`<span style="font-size: 10.0pt; font-family: 'Arial',sans-serif;">404</span>`<span style="font-family: 'Arial',sans-serif;"> на </span>`<span style="font-size: 10.0pt; font-family: 'Arial',sans-serif;">200 </span>`,

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](https://wiki.wellink.ru/books/rukovodstvo-administratora-wisla-5/page/podgotovka-sistemy-ustanovka-i-obnovlenie-wisla-rucnaia#bkmrk-%D0%95%D1%81%D0%BB%D0%B8-%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D1%89%D0%B8%D0%BA-%D0%BD%D0%B5-%D0%B7:~:text=9C%25D0%25AB-,%D0%A3%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0%20%D1%81%D0%B8%D1%81%D1%82%D0%B5%D0%BC%D1%8B,-%D0%9F%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D0%BC%D0%BD%D0%BE%2D%D0%B0%D0%BF%D0%BF%D0%B0%D1%80%D0%B0%D1%82%D0%BD%D1%8B%D0%B5%20%D1%82%D1%80%D0%B5%D0%B1%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D1%8F)

\- [Скрипты для взаимодействия с wiSLA](https://wiki.wellink.ru/books/rukovodstvo-administratora-wisla-5/page/skripty-dlia-vzaimodeistviia-s-wisla)