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

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

внимание!

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

Информация

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

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

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

Прежде всего нужно проверить, какая версия Smart Monitor установлена, посмотреть версии модулей на главной странице или в командной строке:

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

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

В версии 3.2 обновились компоненты OpenSearch, OpenSearchDashboards и Logstash. Также изменились форматы хранения документов в индексах, поэтому следует выполнить миграцию данных. Рассмотрим процедуру обновления каждого компонента. Установщик 3.2 требуется распаковать в директорию, например, /app/distr/.

внимание!

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

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

Создайте директорию, например, /app/backup, куда скопируйте следующее:

  • директория config, обычно $OPENSEARCH_HOME/config или $OSD_HOME/config
  • файл systemd.service, обычно это /etc/systemd/system/opensearch.service и /etc/systemd/system/opensearch-dashboards.service
  • копия настроек Security, сделать это нужно один раз, для чего потребуются сертификат и закрытый ключ admin пользователя
    JAVA_HOME=$OPENSEARCH_HOME/jdk/ $OPENSEARCH_HOME/plugins/opensearch-security/tools/securityadmin.sh -backup my-backup-directory \
    -icl \
    -nhnv \
    -cacert $OPENSEARCH_HOME/config/ca-cert.pem \
    -cert $OPENSEARCH_HOME/config/admin-cert.pem \
    -key $OPENSEARCH_HOME/config/admin-key.pem

Предварительные действия

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

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

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

Откройте веб интерфейс (OpenSearch-Dashboards), и перейдите в меню Меню -> Параметры системы -> Консоль разработчика. Введите следующую команду для обновления настроек и выполните её:

POST .sm_settings/_update_by_query
{
"script": {
"source": """
void updateDoc(Map source, Map oldToNewFieldNames, String id) {
def meta = new HashMap();
meta.put("id", id);

for (Map.Entry field: oldToNewFieldNames.entrySet()) {
if (source.containsKey(field.key)) {
meta.put(field.value, source.get(field.key));
source.remove(field.key)
}
}
source.put("_meta", meta)
}

def oldToNewFieldNames = new HashMap();
oldToNewFieldNames.put("_created", "created");
oldToNewFieldNames.put("_updated", "updated");
oldToNewFieldNames.put("_tag_ids", "tag_ids");
oldToNewFieldNames.put("_type", "type");
oldToNewFieldNames.put("_module", "module");
oldToNewFieldNames.put("_object_version", "version");
updateDoc(ctx._source, oldToNewFieldNames, ctx._id);
""",
"lang": "painless"
}
}

Результат выполнения виден на скриншоте ниже.

Затем нужно добавить маппинг для Knowledge Center с помощью команды:

PUT .sm_kwc_*/_mapping
{
"properties": {
"_meta": {
"properties": {
"tag_ids": {
"type": "keyword"
},
"id": {
"type": "keyword",
"fields": {
"keyword": {
"type": "keyword"
}
}
}
}
}
}
}

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

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

POST _reindex
{
"source": {
"index": ".sm_sme_db_queries,.sm_sme_db,.sm_dashboards*,.sm_sme_scripts,.sm_sme_lookups,.sm_sme_tags*,.sm_search_favorite,.sm_search_history,.sm_sme_search_anywhere_sources,.sm_persons,.sm_incident_aggs,.sm_sme_limits_user,.sm_jsc_settings,.sm_settings,.sm_mitre*,.sm_rsm_models,.sm_rsm_metrics,.sm_rsm_indicators,.sm_jsc_jobs*,.sm_kwc*"
},
"dest": {
"index": "backup"
},
"script": {
"lang": "painless",
"inline": "ctx._index = 'backup_.sm_' + (ctx._index.substring('.sm_'.length(), ctx._index.length()))"
}
}

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

Далее требуется мигрировать ID документов, выполните скрипт ниже в консоли разработчика:

POST .sm_sme_db_queries,.sm_sme_db,.sm_dashboards*,.sm_sme_scripts,.sm_sme_lookups,.sm_sme_tags*,.sm_search_favorite,.sm_search_history,.sm_sme_search_anywhere_sources,.sm_persons,.sm_incident_aggs,.sm_sme_limits_user,.sm_jsc_settings,.sm_settings,.sm_mitre*,.sm_rsm_models,.sm_rsm_metrics,.sm_rsm_indicators,.sm_jsc_jobs*,.sm_kwc*/_update_by_query
{
"script": {
"source": """
void updateDoc(Map source, Map oldToNewFieldNames, String id) {
def meta = new HashMap();
meta.put("id", id);

for (Map.Entry field: oldToNewFieldNames.entrySet()) {
if (source.containsKey(field.key)) {
meta.put(field.value, source.get(field.key));
source.remove(field.key)
}
}
source.put("_meta", meta)
}

def oldToNewFieldNames = new HashMap();
oldToNewFieldNames.put("_created", "created");
oldToNewFieldNames.put("_updated", "updated");
oldToNewFieldNames.put("_tag_ids", "tag_ids");
oldToNewFieldNames.put("_type", "type");
oldToNewFieldNames.put("_module", "module");
oldToNewFieldNames.put("_object_version", "version");
updateDoc(ctx._source, oldToNewFieldNames, ctx._id);
""",
"lang": "painless"
}
}

Последним действием будет миграция РСМ, выполните следующую команду в консоли разработчика:

POST .sm_rsm_metrics/_update_by_query
{
"script": {
"source": """
ctx._source.put("internal_job_id", ctx._source.get("job_id"));
""",
"lang": "painless"
}
}

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

Обновление OpenSearch

В версии 3.2 обновились версия OpenSearch до 2.11.1, плагины OpenSearch и OpenSearch Dashboards. Изменились системные поля документов. Установщик 3.2 требуется распаковать в директорию, например, /app/distr/. Куда вы распакуете содержимое архива пометим как $SMOS_32. Измените пользователя для всей директории.

SMOS_32=/app/distr/smos_3.2

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

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

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

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

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

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

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

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

$SMOS_32/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 файлы будут сохранены во временную директорию $SMOS_32/opensearch/staging/. Если запустить скрипт повторно, то директория staging очистится.

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

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

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

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

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

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

Обновление OpenSearch Dashboards

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

  • curl
  • zip
  • unzip

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

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

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

$SMOS_32/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/

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

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

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