Обновление Smart Monitor
Инструкция описывает процесс обновления Smart Monitor с версии 3.1.* на 3.2.*.
Информация
Условные обозначения:
SMOS_32
- директория, куда разархивируется установочный пакет Smart Monitor версии 3.2USER
- пользователь системы с правами администратора, обычно это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
.