Перейти к основному содержимому
Версия: 5.1

Обновление Smart Monitor

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

Инструкция описывает процесс обновления Smart Monitor с версии 5.0.* на 5.1.*.

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

Для корректной работы заметок и другого функционала нужно создать на узлах Smart Monitor Data Storage директорию $OS_HOME/uploads, изменить права на пользователя, под которым работает Smart Monitor Data Storage, подключить к этой директории общую сетевую папку. Воспользуйтесь статьей по настройке

Информация

Условные обозначения:

  • SM_INSTALLER - директория, куда разархивируется установочный пакет Smart Monitor версии 5.1
  • USER - пользователь системы с правами администратора, обычно это admin
  • OS_HOME - домашняя директория OpenSearch, обычно это /app/opensearch/
  • OS_DATA - директория, где хранятся проиндексированные данные, обычно это /app/data/opensearch
  • OS_IP - IP-адрес одного из серверов кластера OpenSearch
  • OSD_HOME - домашняя директория OpenSearch Dashboards, обычно это /app/opensearch-dashboards/
  • PATH_SSL - место расположения сертификата, закрытого ключа admin, а также ca-cert, обычно совпадает с /app/opensearch/config/

Первоочередным шагом для обновления является определение текущей установленной версии Smart Monitor. Это можно сделать, просмотрев версии модулей на главной странице или выполнив команду в командной строке:

curl https://$OS_IP:9200/_cat/plugins -k -u $USER

После ввода данной команды потребуется ввести пароль учётной записи $USER. Рекомендуется использовать пользователя admin.

Подробный список нововведений можно посмотреть в статье Что нового в Smart Monitor 5.1.

Рассмотрим процедуру обновления каждого компонента. Установщик 5.1 требуется распаковать в директорию, например, /app/distr/.

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

Перед началом работ строго рекомендуется сделать бэкап основных конфигурационных файлов и настроек Security.

Рекомендуемые действия

Рекомендуется создать директорию, например, /app/backup, куда следует сохранить:

  • директория config, обычно $OS_HOME/config или $OSD_HOME/config

  • файлы systemd, обычно это /etc/systemd/system/opensearch.service и /etc/systemd/system/opensearch-dashboards.service, /etc/systemd/system/sme-re.service

  • файл /etc/sysctl.d/00-opensearch.conf

  • копия настроек Security, сделать это нужно один раз, для чего потребуются сертификат и закрытый ключ admin пользователя (командой ниже создастся директория с текущей датой с настройками security OpenSearch)

    chmod +x $OS_HOME/plugins/opensearch-security/tools/securityadmin.sh
    JAVA_HOME=$OS_HOME/jdk/ $OS_HOME/plugins/opensearch-security/tools/securityadmin.sh -backup /app/backup/security_$(date +%Y%m%d) \
    -icl \
    -nhnv \
    -cacert $OS_HOME/config/ca-cert.pem \
    -cert $OS_HOME/config/admin-cert.pem \
    -key $OS_HOME/config/admin-key.pem

Действия перед обновлением

Добавление меню настроек

В верси Smart Monitor 5.1.0 добавилась возможность настраивать доступность для пунктов меню Параметры системы, перед миграцией необходимо добавить json объект в меню. Для этого откройте настройки меню (Навигационное меню - Параметры системы - Настройки модулей - Настройки меню), откройте вкладку JSON структура и добавьте в самый конец через запятую перед закрывающей квадратной скобкой следующий объект:

{
"enabled": true,
"id": "ie8fa5171-24a8-11f0-8733-23f302e3ac2f",
"name": "system-params",
"title": "Параметры системы",
"itemType": "group",
"_permissions": {
"owner": "admin",
"read": { "roles": [], "users": [] },
"write": { "roles": [], "users": [] }
},
"sections": [
{
"enabled": true,
"id": "i06a36591-24a9-11f0-8733-23f302e3ac2f",
"name": "smdevtools",
"title": "Консоль разработчика",
"itemType": "page",
"_permissions": {
"owner": "admin",
"read": { "roles": [], "users": [] },
"write": { "roles": [], "users": [] }
}
},
{
"enabled": true,
"id": "i282fce61-24a9-11f0-8733-23f302e3ac2f",
"name": "smart-beats-management",
"title": "Управление Smart Beat",
"itemType": "page",
"_permissions": {
"owner": "admin",
"read": { "roles": [], "users": [] },
"write": { "roles": [], "users": [] }
}
},
{
"enabled": true,
"id": "i44404121-24a9-11f0-8733-23f302e3ac2f",
"name": "opensearch_index_management_dashboards",
"title": "Управление индексами",
"itemType": "page",
"_permissions": {
"owner": "admin",
"read": { "roles": [], "users": [] },
"write": { "roles": [], "users": [] }
}
},
{
"enabled": true,
"id": "i57d141d1-24a9-11f0-8733-23f302e3ac2f",
"name": "smmanagement",
"title": "Настройки модулей",
"itemType": "page",
"_permissions": {
"owner": "admin",
"read": { "roles": [], "users": [] },
"write": { "roles": [], "users": [] }
}
},
{
"enabled": true,
"id": "i69291b61-24a9-11f0-8733-23f302e3ac2f",
"name": "security",
"title": "Настройки безопасности",
"itemType": "page",
"_permissions": {
"owner": "admin",
"read": { "roles": [], "users": [] },
"write": { "roles": [], "users": [] }
}
}
]
}

Добавление меню через JSON

Изменение структуры меню можно выполнить и через терминал, для этого выполните следующую команду для получения текущего меню (рекомендуется использовать пользовтаеля admin):

curl -k -u admin -XGET https://$OS_IP:9200/_core/nav_settings -o menu.json
Обратите внимание!

При добавлении меню через терминал обратите внимание на структуру полученного файла menu.json.

В текущей директории появится файл menu.json с текущей структурой меню. Откройте файл menu.json и добавьте в самый конец через запятую перед закрывающей квадратной скобкой JSON объект выше. Сохраните измененный файл и выполните:

curl -XPUT "https://$OS_IP:9200/_core/nav_settings" \
-k -u admin \
-d "@menu.json" \
-H "Content-Type: application/json"

Добавление роли и пользователя

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

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

Рекомендуется добавить отдельную роль и пользователя для подключения самомониторинга.

Создайте пользователя selfmon. Для этого откройте настройки ролей (Навигационное меню - Параметры системы - Настройки безопасности - Внутренние пользователи), нажмите кнопку Создать внутреннего пользователя.

Введите в поле Имя пользователя значение selfmon, а в поле Пароль и Подтвердите пароль сгенерируйте сложную парольную фразу. По завершении нажмите кнопку Создать.

Далее создайте роль sa-monitoring. Для этого откройте настройки ролей (Навигационное меню - Параметры системы - Настройки безопасности - Роли), нажмите кнопку Создать роль.

В поле Название введите sa-monitoring.

В поле Разрешения кластера добавьте следующие разрешения:

  • cluster:monitor/main
  • cluster:monitor/state
  • cluster:monitor/nodes/info
  • cluster:monitor/nodes/stats
  • cluster:monitor/health

Добавление роли

Нажмите кнопку Создать.

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

Добавление пользователя в роль

Обновление OpenSearch

Установщик Smart Monitor 5.1 требуется распаковать в директорию, например, /app/distr/. Куда вы распакуете содержимое архива пометьте как $SM_INSTALLER.

tar xzf smart-monitor-installer-*.tar.gz -C /app/distr/
SM_INSTALLER=/app/distr/sm_5.1
Обратите внимание!

Для кластеров состоящих из нескольких узлов рекомендуется отключать аллокацию перед обновлением через консоль разработчика (Навигационное меню - Параметры системы - Консоль разработчика) выполнив команду:

PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": "none"
}
}

Сделать тоже самое можно из терминала следующей командой:

curl -XPUT -k -u admin "https://$OS_IP:9200/_cluster/settings?pretty" -H "Content-Type: application/json" -d '{"persistent":{"cluster.routing.allocation.enable": "none"}}'

При обновлении узлов кластера не используйте отключение аллокации с помощью скрипта обновления. После обновления всех узлов кластера включите аллокацию:

PUT _cluster/settings
{
"persistent": {
"cluster.routing.allocation.enable": "all"
}
}

Сделать тоже самое можно из терминала следующей командой:

curl -XPUT -k -u admin "https://$OS_IP:9200/_cluster/settings?pretty" -H "Content-Type: application/json" -d '{"persistent":{"cluster.routing.allocation.enable": "all"}}'

Автоматический режим

Для работы скрипта потребуется наличие следующих предустановленных пакетов:

  • curl
  • zip
  • unzip
Обратите внимание!

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

Скрипт автоматического обновления позволяет автоматизировать действия при обновлении и находится по пути $SM_INSTALLER/opensearch/update.sh. При вызове скрипта есть возможность указать конфигурационный файл $SM_INSTALLER/opensearch/example_config_opensearch.yaml. Формат файла YAML аналогичен конфигурационному файлу при установке.

Скрипт обновления поддерживает следующие параметры запуска:

  • -c, --config <path_to_config_file_yaml> - указать конфигурационный файл для обновления
  • -h, --help - выводит справку о доступных командах
Обратите внимание!

Начинать обновление нужно с узлов без роли master, узлы data могут подключаться к более старым версиям узлов master, но не наоборот.

Для запуска обновления нужно запустить скрипт:

$SM_INSTALLER/opensearch/update.sh

После запуска скрипт автоматически находит пути основных директорий:

  • OpenSearch Home Directory - директория расположения OpenSearch, обычно это /app/opensearch
  • OpenSearch Conf Directory - директория расположения конфигурационных файлов OpenSearch, обычно /app/opensearch/config/
  • OpenSearch Data Directory - директория расположения данных, обычно /app/data/
  • OpenSearch Logs Directory - директория расположения логов, обычно /app/logs/

Скрипт обновления не производит никаких действий с директорией data и logs, а директория конфигурационных файлов и systemd файлы будут сохранены во временную директорию $SM_INSTALLER/opensearch/staging/.

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

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

================================================================================
SMART MONITOR UPDATE SCRIPT - OPENSEARCH
================================================================================

Current working directory: /app/distr/sm_5.1/opensearch

Current name of install's archive: opensearch-2.18.0-linux-x64.tar.gz

New version OpenSearch: 2.18.0

================================================================================
-- STEP 1. INSTALLATION DIRECTORIES

opensearch.service file found. Will get necessary paths from there

Final Opensearch home directory: /app/opensearch
Final Opensearch conf directory: /app/opensearch/config
Final Opensearch data directory: /app/data/opensearch
Final Opensearch logs directory: /app/logs/opensearch
Is this correct? [y/n]:

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

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

Пользователь может использоваться для вывода информации или для управления аллокацией, соответственно требуются разные наборы разрешений. Для простого вывода информации достаточно разрешений роли sa-monitoring.

-- STEP 2. GET USER

Do you want to see cluster information or manage allocation? [Y/n] :

================================================================================
Your account must have role "sa-monitoring"
Your account must have permission "cluster:admin/settings/update" for manage allocation
================================================================================

Enter username: admin
Enter password for user "admin":
Is this correct? [y/n]:

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

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

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

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

Запустить установщик от пользователя opensearch можно следующей командой:

sudo -u opensearch $SM_INSTALLER/opensearch/update.sh

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

Затем требуется ввести пользователя и группу, под которым работает OpenSearch.

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

-- STEP 3. DISABLE OPERATIONS WHERE ROOT RIGHTS ARE REQUIRED

Want to update SMART MONITOR without root privileges? [y/N]: y

Final you set the non-root flag to: y

Linux username for SMART MONITOR [opensearch]:
Linux groupname for SMART MONITOR [opensearch]:

Final SMART MONITOR username: opensearch
Final SMART MONITOR groupname: opensearch
Is this correct? [Y/n]:

ATTENTION!
Before updating SMART MONITOR, you must run the following commands as a user with root privileges.
If yo need to disable allocation, run the following command:

curl -XPUT -k -u YOUR_USER_OPENSEARCH:YOUR_USER_OPENSEARCH_PASSWORD_HERE "https://YOUR_IP_OPENSEARCH:9200/_cluster/settings?pretty" -H "Content-Type: application/json" -d '{"persistent":{"cluster.routing.allocation.enable": "none"}}'

Change user, group and directories as needed

systemctl stop sme-re
systemctl stop opensearch
chown -R opensearch:opensearch /app/opensearch /app/opensearch/config /app/data/opensearch /app/logs/opensearch /app/distr/sm_5.1/opensearch

!!! Are you sure you have done everything from the list above? [y/N]:

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

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

-- STEP 4. CONFIGURE ALLOCATION

Do you want to disable allocation during update? [y/N]: n

You don't want to disable allocation: n
Is this correct? [y/n]:

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

get current list of plugins
sm-core
sm-im
sm-inventory
sm-ism-action-clickhouse
sm-job-scheduler
sm-job-scheduler-actions-incident
sm-job-scheduler-actions-mitre
sm-knowledge-center
sm-mitre
sm-mssp
sm-rsm
sm-uba
sme
opensearch-security
Information about current node OpenSearch:
{
"name" : "smos-node-00",
"cluster_name" : "smos-cluster",
"cluster_uuid" : "yKPPDCHGSA6rHQT948jokQ",
"version" : {
"distribution" : "opensearch",
"number" : "2.18.0",
"build_type" : "tar",
"build_hash" : "99a9a81da366173b0c2b963b26ea92e15ef34547",
"build_date" : "2024-10-31T19:08:39.157471098Z",
"build_snapshot" : false,
"lucene_version" : "9.12.0",
"minimum_wire_compatibility_version" : "7.10.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "The OpenSearch Project: https://opensearch.org/"
}

!!! AT THIS POINT WE START TO MAKE CHANGES IN OPERATING SYSTEM !!!
Do you want to continue? [y/N]:

Если нажать Enter - обновление прервется, для продолжения нужно нажать y.

По успешному завершению обновления должны увидеть надпись SMART MONITOR SUCCESSFULLY UPDATED!, предварительно будет выведена информация о кластере и текущем узле, если был выбран на втором шаге использование пользователя при обновлении.

-- STEP 10. PRINT INFORMATION
current state of cluster
{
"cluster_name" : "smos-cluster",
"status" : "yellow",
"timed_out" : false,
"number_of_nodes" : 1,
"number_of_data_nodes" : 1,
"discovered_master" : true,
"discovered_cluster_manager" : true,
"active_primary_shards" : 50,
"active_shards" : 50,
"relocating_shards" : 0,
"initializing_shards" : 0,
"unassigned_shards" : 15,
"delayed_unassigned_shards" : 0,
"number_of_pending_tasks" : 0,
"number_of_in_flight_fetch" : 0,
"task_max_waiting_in_queue_millis" : 0,
"active_shards_percent_as_number" : 76.92307692307693
}
current state clusters nodes
172.16.0.27 14 99 8 1.47 0.63 0.26 dim data,ingest,master * smos-node-00
Information about current node OpenSearch:
{
"name" : "smos-node-00",
"cluster_name" : "smos-cluster",
"cluster_uuid" : "5V2rIp1sRj-M-ANnGfF0cA",
"version" : {
"distribution" : "opensearch",
"number" : "2.18.0",
"build_type" : "tar",
"build_hash" : "99a9a81da366173b0c2b963b26ea92e15ef34547",
"build_date" : "2024-10-31T19:08:39.157471098Z",
"build_snapshot" : false,
"lucene_version" : "9.12.0",
"minimum_wire_compatibility_version" : "7.10.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "The OpenSearch Project: https://opensearch.org/"
}

================================================================================
ATTENTION!
After updating SMART MONITOR, you must run the following commands as a user with root privileges.
Change user, group and directories as needed.

cp /app/distr/sm_5.1/opensearch/staging/services/sme-re.service /etc/systemd/system/
chown root:root /etc/systemd/system/sme-re.service
chcon -Rv -u system_u -r object_r -t bin_t /app/opensearch/bin
chcon -Rv -u system_u -r object_r -t bin_t /app/opensearch/jdk/bin
chcon -Rv -u system_u -r object_r -t var_run_t /app/opensearch/run
chown -R opensearch:opensearch /app/opensearch /app/opensearch/config /app/data/opensearch /app/logs/opensearch
systemctl daemon-reload
systemctl enable sme-re opensearch
systemctl start sme-re
systemctl start opensearch
systemctl status sme-re opensearch

If you disable allocation before, wait 60 seconds and run the following commands as a "opensearch" or user with root privileges:

curl -XPUT -k -u YOUR_USER_OPENSEARCH:YOUR_ADMIN_PASSWORD_HERE "https://127.0.0.1:9200/_cluster/settings?pretty" -H "Content-Type: application/json" -d '{"persistent":{"cluster.routing.allocation.enable": "all"}}'

The following plugins cannot be installed:
-- sm-job-scheduler-actions-incident
-- sm-job-scheduler-actions-mitre

================================================================================
-- SMART MONITOR SUCCESSFULLY UPDATED!
-- For further instructions, please refer to the documentation: https://docs.smartmonitor.ru
================================================================================

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

Если по какой-то причине скрипт обновления не смог обновить какие-то плагины, то он выведет дополнительно в конце информацию об этих плагинах, как на примере выше (текст The following plugins cannot be installed).

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

Скрипт обновления учитывает текущий список установленных плагинов на узлах OpenSearch. Если требуется установить какой-нибудь плагин дополнительно, то действие стоит производить вручную в конце обновления узла.

Обновление Smart Monitor Web

Для работы скрипта потребуется наличие следующих предустановленных пакетов:

  • curl
  • zip
  • unzip

Скрипт автоматического обновления позволяет автоматизировать действия при обновлении и находится по пути $SM_INSTALLER/opensearch-dashboards/update.sh. При вызова скрипта есть возможность указать конфигурационный файл $SM_INSTALLER/opensearch-dashboards/example_config_dashboards.yaml. Формат файла YAML аналогичен конфигурационному файлу при установке.

Скрипт обновления поддерживает следующие параметры запуска:

  • -c, --config <path_to_config_file_yaml> - указать конфигурационный файл для обновления
  • -h, --help - выводит справку о доступных командах

При работе скрипт сделает резервную копию файла сервиса systemd, opensearch-dashboards.yml и директории с конфигурациями во временную директорию $SM_INSTALLER/opensearch-dashboards/staging/.

Скрипт обновления не производит никаких действий с директорией data и logs, а директория конфигураций и systemd файлы будут сохранены во временную директорию $SM_INSTALLER/opensearch-dashboards/staging/.

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

Если запустить скрипт повторно, то директория staging очистится.

Для обновления нужно запустить скрипт:

$SM_INSTALLER/opensearch-dashboards/update.sh

Скрипт автоматически определит основные пути текущего сервера до следующих директорий:

  • OpenSearch Dashboards Home Directory - директория расположения OpenSearch Dashboards, обычно это /app/opensearch-dashboards
  • OpenSearch Dashboards Conf Directory - директория расположения конфигурационных файлов OpenSearch Dashboards, обычно /app/opensearch-dashboards/config/
  • OpenSearch Dashboards Data Directory - директория расположения данных, обычно /app/data/
  • OpenSearch Dashboards Logs Directory - директория расположения логов, обычно /app/logs/
================================================================================
SMART MONITOR INSTALL SCRIPT - OPENSEARCH DASHBOARDS
================================================================================

Current working directory: /opt/sm_5.1/opensearch-dashboards

Current name of install's archive: opensearch-dashboards-2.18.0-linux-x64.tar.gz

Current version of OpenSearch-Dashboards: 2.18.0

================================================================================
-- STEP 1. INSTALLATION DIRECTORIES

opensearch-dashboards.service file found. Will get necessary paths from there

Final Opensearch Dashboards home directory: /app/opensearch-dashboards
Final Opensearch Dashboards conf directory: /app/opensearch-dashboards/config
Final Opensearch Dashboards data directory: /app/data/opensearch-dashboards
Final Opensearch Dashboards logs directory: /app/logs/opensearch-dashboards
Is this correct? [y/n]:

После ввода директорий требуется подтвердить введенные данные, нажав y, или ввести свои директории вручную нажав n.

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

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

Полностью выполнить обновление без root привилегий нельзя, требуется выполнить часть операций от пользователя root, затем запустить установщик от имени пользовтеля, под которым работает Smart Monitor Web, после завершения работы скрипта снова нужно выполнить некоторые операции от пользовтеля root. Список операций будет выведен в установщике.

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

Запустить установщик от пользователя opensearch можно следующей командой:

sudo -u opensearch $SM_INSTALLER/opensearch-dashboards/update.sh

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

Затем требуется ввести пользователя и группу, под которым работает Smart Monitor Web.

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

-- STEP 2. DISABLE OPERATIONS WHERE ROOT RIGHTS ARE REQUIRED

Want to update SMART MONITOR without root privileges? [y/N]: y

Final you set the non-root flag to: y

Linux username for SMART MONITOR [opensearch]:
Linux groupname for SMART MONITOR [opensearch]:

Final SMART MONITOR username: opensearch
Final SMART MONITOR groupname: opensearch
Is this correct? [Y/n]:

ATTENTION!
Before updating SMART MONITOR, you must run the following commands as a user with root privileges.
Change user, group and directories as needed

systemctl stop opensearch-dashboards
chown -R opensearch:opensearch /app/opensearch-dashboards /app/opensearch-dashboards/config /app/data/opensearch-dashboards /app/logs/opensearch-dashboards /app/distr/sm_5.1/opensearch-dashboards

!!! Are you sure you have done everything from the list above? [y/N]:

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

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

Current list of plugins:
-- smartMonitor
-- smartMonitorColumnChart
-- smartMonitorCyberSecurity
-- smartMonitorDrawio
-- smartMonitorHeatmapChart
-- smartMonitorHtmlChart
-- smartMonitorIncidentManager
-- smartMonitorInventory
-- smartMonitorKnowledgeCenter
-- smartMonitorLineChart
-- smartMonitorLookupManager
-- smartMonitorMitreAttack
-- smartMonitorPDFExport
-- smartMonitorPieChart
-- smartMonitorSingleValue
-- smartMonitorTable
-- smartMonitorUserBehaviorAnalytics

Current version of OpenSearch-Dashboards: 2.18.0

!!! AT THIS POINT WE START TO MAKE CHANGES IN OPERATING SYSTEM !!!
Do you want to continue? [y/N]:

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

================================================================================
ATTENTION!
After updating SMART MONITOR, you must run the following commands as a user with root privileges.
Change user, group and directories as needed.

cp /app/distr/sm_5.1/opensearch-dashboards/staging/services/opensearch-dashboards.service /etc/systemd/system/
chown root:root /etc/systemd/system/opensearch-dashboards.service
chcon -Rv -u system_u -r object_r -t bin_t /app/opensearch-dashboards/bin
chown -R opensearch:opensearch /app/opensearch-dashboards /app/opensearch-dashboards/config /app/data/opensearch-dashboards /app/logs/opensearch-dashboards
systemctl daemon-reload
systemctl enable opensearch-dashboards
systemctl start opensearch-dashboards
systemctl status opensearch-dashboards

================================================================================
-- SMART MONITOR DASHBOARDS SUCCESSFULLY UPDATED!
-- For further instructions, please refer to the documentation: https://docs.smartmonitor.ru
================================================================================

При успешном завершении скрипта обновления будет выведен соответствующий текст SMART MONITOR DASHBOARDS SUCCESSFULLY UPDATED.

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

Настройка системных лимитов для фоновых задач

Для ограничения использования дискового пространства и времени хранения результатов фоновых задач используйте следующую команду. Для этого откройте консоль разработчика (Навигационное меню - Параметры системы - Консоль разработчика) и выполните команду:

PUT _core/limits_user/base_limit
{
"background_disk_quota": 5000000000,
"background_result_ttl": 86000
}

Настройки формата идентификаторов в Incident Manager

Внимание!

Если модуль Incident Manager не установлен, перейдите к следующему шагу.

В Smart Monitor 5.1 изменился формат идентификаторов в Incident Manager. Для начала проверьте наличие новых настроек. Для этого откройте консоль разработчика (Навигационное меню - Параметры системы - Консоль разработчика) и выполните команду:

GET _core/im_settings/incident-id-lock

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

"""{"message":"Config with id: 'incident-id-lock' not found."}"""

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

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

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

POST _core/im_settings/incident-id-lock
{
"lock": false,
"current_incident_id": 0
}

Активация функции "Связанные инциденты"

Внимание!

Если модуль Incident Manager не установлен, перейдите к следующему шагу.

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

PUT _core/im_settings/incident-manager-settings
{
"editFields": {
"related_incidents": {
"runame": "Связанные инциденты",
"name": "related_incidents",
"enabled": true,
"group": "main"
}
}
}

Миграция агрегаций инцидентов

Внимание!

Если модуль Incident Manager не установлен, перейдите к следующему шагу.

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

POST _reindex
{
"source":{
"index":".sm_incident_aggs"
},
"dest":{
"index":".sm_incident_aggs_backup_sa_50"
}
}

Затем выведите информацию о настройках текущего индекса .sm_incident_aggs:

GET .sm_incident_aggs/_settings
GET .sm_incident_aggs/_mappings

Сохраните выводы предыдущих команд. Затем удалите старый индекс:

DELETE .sm_incident_aggs

Далее нужно создать индекс с теми же настройками, которые были у предыдущего индекса, перенесите поля для объекта settings из сохранённых выводов на предыдущем шаге:

PUT .sm_incident_aggs
{
"settings": {
"index": {
"replication": {
"type": "DOCUMENT"
},
"number_of_shards": "1",
"auto_expand_replicas": "0-all",
"max_result_window": "10000",
"priority": "10000"
}
},
"mappings": {
"dynamic_templates":[
{
"message_text":{
"match_mapping_type":"string",
"mapping":{
"type":"text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
]
}
}

Миграция настроек агрегаций:

POST _reindex
{
"source":{
"index":".sm_incident_aggs_backup_sa_50"
},
"dest":{
"index":".sm_incident_aggs"
},
"script": {
"source": """
void updateMvFields(Map map) {
Map changedFields = new HashMap();
for (entry in map.entrySet()) {

if (entry.getValue() instanceof List || entry.getValue() instanceof Set) {
Set tmpValues = new HashSet();
for (custom_field in entry.getValue()) {
if (custom_field instanceof Map) {
tmpValues.add(custom_field.get("label"));
}
}
changedFields.put(entry.getKey(), tmpValues)
}
}
map.putAll(changedFields);
}
if (ctx._source.containsKey("custom_fields")) {
updateMvFields(ctx._source.get("custom_fields"));
}
""",
"lang": "painless"
}
}

Миграция структуры полей карточки инцидента

Внимание!

Если модуль Incident Manager не установлен, перейдите к следующему шагу.

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

Подготовительные действия

В установщик включена утилита для миграции. Утилита располагается в директории $SM_INSTALLER/utils/migrations/migrations_5.0-5.1/im_fields_migration/ и работает на python. Основные требования утилиты:

  • Python 3.8+
  • plugin opensearch-py

Остальные пакеты входят в стандартную установку Python, более подробный список пакетов:

  • certifi==2023.7.22
  • charset-normalizer==3.3.2
  • idna==3.4
  • opensearch-py==2.3.2
  • python-dateutil==2.8.2
  • requests==2.31.0
  • six==1.16.0
  • urllib3==2.0.7
Обратите внимание!

В установщик Smart Monitor 5.1 включён Python 3.12 с требуемым набором пакетов.

Конфигурационный файл

Перед запуском утилиты настройте параметры в файле $SM_INSTALLER/utils/migrations/migrations_5.0-5.1/im_fields_migration/default.ini. Пример конфигурационного файла приведен ниже:

[server]
host = 127.0.0.1
port = 9200

[user]
name = admin
pass = password

В параметре server.host нужно указать IP адрес любого узла OpenSearch, рекомендуется указывать узел с ролью data и атрибутом routing_mode: hot. Если опустить параметр user.pass, то утилита запросит пароль от УЗ в интерактивном режиме.

Параметры запуска утилиты

Утилита имеет следующие параметры запуска:

  • -c, --config - файл конфигурации (опциональный). По умолчанию - ./default.ini
  • -h, --help - вывод справки

Действия в консоли разработчика

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

POST _im/migration_scripts

Команда выше загрузит необходимые скрипты для проверки. Далее выполните команды для поиска объектов для миграции:

GET _im/check_objects?obj=jobs
GET _im/check_objects?obj=aggs
GET _im/check_objects?obj=incidents
GET _im/check_objects?obj=agg_results

Если для объекта в ответе поле hits пустое, а size = 0, значит обновление для данного объекта не нужно. Пример пустого ответа:

{
"hits": {},
"size": 0
}

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

Внимание!

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

Запуск утилиты

Для выполнения миграций нужно запустить утилиту. При работе скрипта будет запрошена информация, для каких объектов стоит выполнить миграцию (jobs, aggs, incidents, agg_results). Запустите скрипт командой:

$SM_INSTALLER/utils/python/bin/python3 $SM_INSTALLER/utils/migrations/migrations_5.0-5.1/im_fields_migration/main.py -c $SM_INSTALLER/utils/migrations/migrations_5.0-5.1/im_fields_migration/default.ini

Удаление проверочных скриптов

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

DELETE _im/migration_scripts

Миграция РСМ 2.0

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

При обновлении Smart Monitor с версии 5.0.0 до 5.1.0 минуя версию 5.0.1, для конфигураций, в которых используется Ресурсно-сервисная модель v2.0, выполните следующий запрос:

POST .sm_rsm_v2_metrics/_update_by_query
{
"query": {
"match_all": {}
},
"script": {
"source": "ctx._source.enabled = true",
"lang": "painless"
}
}
Обратите внимание!

Если уже используется РСМ 2.0, то нужно выполнить миграции. Для этого откройте консоль разработчика (Навигационное меню - Параметры системы - Консоль разработчика) и выполните команду:

GET _core/rsm/migrate/pseudo_metrics
GET _core/rsm/migrate/create_snapshots

Чтобы начать использовать РСМ 2.0 нужно ее проинициализировать и выполнить миграцию.