Перейти к основному содержимому

Инструкция по обновлению Monq до версии 9.0.0

Изменение условий лицензирования

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

Monq 9 работает только с новой версией лицензионного ключа!

Перед выполнением обновления получите новый лицензионный ключ:

  • Если вы используете коммерческую версию - обратитесь к вашему персональному менеджеру
  • Если вы используете бесплатную версию - отправьте заявку на адрес askformonq@monq.ru

В этом обновлении

МодульНовая версия
pl9.0.0
sm9.0.0
cl9.0.0
fm9.0.0
mcs9.0.0
plugins9.0.0

Уровень простоя

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

Во время обновления системы будет произведено удаление всех очередей rabbitmq, вследствие чего все необработанные сообщения будут удалены

monq агент 3.0

Monq 9 не будет работать со старыми версиями агентов. Обновление всех используемых агентов до версии 3.0 - обязательно

Проведение миграции 8.9.2 → 9.0.0

Требования

Требуемая версия Monq: 8.9.2

Если у вас установлена другая версия Monq, сначала выполните последовательное обновление до 8.9.2 и только потом приступайте к этому обновлению

Требуемая версия monqctl: 1.18.0

Для запуска обновления требуется скачать клиент управления Monq monqctl и выполнить конфигурацию контекста monqctl, если ранее не выполнялось.

Выполнить предрелизную подготовку

Проверить контекст monqctl и статус реестра микросервисов

# Просмотреть текущий контекст, с которым работает monqctl
monqctl config current-context

# Просмотреть статус реестра микросервисов из контекста
monqctl registry get status

# Просмотреть статус сервисов в реестре микросервисов из контекста
monqctl registry get services

Выполнить обновление реестра микросервисов

monqctl registry update registry --version=3.17.0
Закрытый контур / обновление из папки

На системе с доступом к сети интернет, установленном и настроенном monqctl, выполнить экспорт реестра микросервисов в локальную директорию

monqctl registry export registry 3.17.0 --dest=./<registry export directory>

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

monqctl registry update registry --version=3.17.0 --sourceDir=<папка с экспортированным обновлением>

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

monqctl registry get status
Дождаться

пока команда monqctl registry get status выдаст обновленную версию:
Version: "3.17.0"

Установить контекст релиза, с которым будет работать monqctl в рамках контекста установленного Monq

Команда при этом скачивает и подготавливает релиз для установки.

monqctl release use-version 9.0.0 --product=monq
Закрытый контур / обновление из папки

На системе с доступом к сети интернет, установленном и настроенном monqctl, выполнить экспорт релиза в папку

monqctl release version export 9.0.0 --product=monq --dest=<monq export directory>

После переноса папки на сервер выполнить команду с аргументом --sourceDir

monqctl release use-version 9.0.0 --product=monq --sourceDir=<папка с экспортированным обновлением>

Выполнить обновление профиля настроек в clickhouse

внимание

Данный скрипт добавит в settings profile используемого в clickhouse пользователя опцию parallel_view_processing = 1 только в случае, если пользователь и его профиль созданы с использованием sql.


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

monqctl release exec shell --module=pl --file=scripts/modify_clickhouse_profile_settings.sh

Применить обновление базы данных реестра

monqctl registry update db --module=pl --file=sqls/pl-microservice-registry-api-service.sql

Выполнить удаление устаревшей маршрутизации

monqctl registry delete microservice entrypoint

Выполнить остановку всех микросервисов

перед остановкой

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

kubectl get deploy -n production --no-headers -o custom-columns="NAME:.metadata.name,REPLICAS:.spec.replicas" | awk '$2 > 1'

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

monqctl release exec shell --module=pl --file=scripts/stop_all_microservices.sh

Выполнить удаление всех очередей

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

за исключением automaton routing nodes в vhost, сконфигурированном для Monq.
Если очереди Monq соседствуют с другими очередями в пределах одного vhost, следует выполнить удаление вручную.

monqctl release exec shell --module=pl --file=scripts/delete_all_queues.sh

MONQ Platform (pl)

Выполнить импорт контейнеров в Docker репозиторий обновляемого экземпляра Monq

monqctl release update images --module=pl

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

monqctl release update db pgsql --module=pl --microservice=pl-i18n-service --file pl-i18n-service.sql
monqctl release update db pgsql --module=pl --microservice=pl-userspaces-api-service --file userspace-configuration.sql
monqctl release update db pgsql --module=pl --microservice=pl-agents-service --file sqls/pl-agents-service.sql
monqctl release update db pgsql --module=pl --microservice=pl-user-shared-filters-api-service --file sqls/pl-user-shared-filters-api-service.sql
monqctl release update db pgsql --module=pl --microservice=pl-identity-service --file sqls/pl-identity-service.sql
monqctl release update db pgsql --module=pl --microservice=pl-identity-service --file sqls/pl-identity-service-1.sql
monqctl release update db pgsql --module=pl --microservice=pl-userspaces-api-service --file sqls/pl-userspaces-api-service.sql

Выполнить обновление и конфигурацию микросервисов

monqctl release update microservices --module=pl --full
Продолжать только при пустом выводе команды:
kubectl get pod -A | grep -v Running

Выполнить обновление набора прав

monqctl release update user-grants --module=pl --file=user-grants.json
monqctl instance clear cache --microservice=pl-user-grants-api-service
Service Temporarily Unavailable

При ошибке Service Temporarily Unavailable - повторить команды.
Ошибка может возникнуть, если микросервис "pl-user-grants-api-service" не успел перезапуститься после обновления.

Обновить существующие и установить новые библиотеки "автоматон v2"

monqctl release update automaton-libraries --module=pl --file=automaton-libs/automaton.cl.import
monqctl release update automaton-libraries --module=pl --file=automaton-libs/automaton.cmdb.import
monqctl release update automaton-libraries --module=pl --file=automaton-libs/automaton.signals.import
ошибки при выполнении команд

При появлении ошибки необходимо повторить команды, выдержав небольшую паузу.
Такая ошибка может возникнуть если микросервис "pl-automaton-v2-service" не успел перезапуститься после обновления, либо обновление библиотеки уже производится.
При успешном обновлении команда вернет сообщение о том, что библиотека уже обновлена - (has already installed in the System).

Запустить миграцию данных

monqctl release update migrator --module=pl --command="migrate automaton"

Перезапустить микросервисы "автоматон v2"

monqctl instance restart microservice --microservice=pl-automaton-v2-service
monqctl instance restart microservice --microservice=pl-automaton-v2-processor-service
monqctl instance restart microservice --microservice=pl-automaton-v2-processor-service-compiler

Перезапустить микросервисы бизнес-процессов

monqctl instance restart microservice --microservice=pl-bp-service-manager

Применить обновление маршрутизации

monqctl release update routing --module=pl

Сбросить кэш для микросервисов

monqctl instance clear cache --microservice=pl-i18n-service
monqctl instance clear cache --microservice=pl-identity-service
monqctl instance clear cache --microservice=pl-userspaces-api-service

Перезапустить микросервис исполнитель сценариев "автоматон v2"

monqctl instance restart microservice --microservice=pl-automaton-v2-processor-service-runner
Продолжать только при пустом выводе команды:
kubectl get pod -A | grep -v Running

MONQ Service Monitor (sm)

Выполнить импорт контейнеров в Docker репозиторий обновляемого экземпляра Monq

monqctl release update images --module=sm

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

monqctl release update db pgsql --module=sm --microservice=pl-userspaces-api-service --file userspace-configuration.sql
monqctl release update db pgsql --module=sm --microservice=sm-rsm-maps-service --file sqls/sm-rsm-maps-service.sql
monqctl release update db pgsql --module=sm --microservice=sm-signals-service --file sqls/sm-signals-service.sql
monqctl release update db clickhouse --module=sm --microservice=sm-signals-service --file sqls/sm-signals-service-clickhouse.sql

Выполнить обновление и конфигурацию микросервисов

monqctl release update microservices --module=sm
Продолжать только при пустом выводе команды:
kubectl get pod -A | grep -v Running

Применить обновление маршрутизации

monqctl release update routing --module=sm

Запустить миграцию данных

monqctl release update migrator --module=sm --command="migrate config-items-publications"

Выполнить удаление устаревших баз данных

monqctl instance delete db postgresql sm_zabbix_connector_api_service
Продолжать только при пустом выводе команды:
kubectl get pod -A | grep -v Running

MONQ Collector (cl)

Выполнить импорт контейнеров в Docker репозиторий обновляемого экземпляра Monq

monqctl release update images --module=cl

Обновить конфигурацию микросервисов

monqctl release update microservices --module=cl --microservice=cl-streams-service --skip-k8s

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

monqctl release update db pgsql --module=cl --microservice=pl-userspaces-api-service --file userspace-configuration.sql
monqctl release update db pgsql --module=cl --microservice=cl-stream-data-service --file sqls/cl-stream-data-service.sql
monqctl release update db pgsql --module=cl --microservice=cl-streams-service --file sqls/cl-streams-service.sql
monqctl release update db clickhouse --module=cl --microservice=cl-stream-data-service --file sqls/cl-stream-data-service-clickhouse.sql
monqctl release update db clickhouse --module=cl --microservice=cl-streams-service --file sqls/cl-streams-service-clickhouse.sql

Выполнить обновление и конфигурацию микросервисов

monqctl release update microservices --module=cl
Продолжать только при пустом выводе команды:
kubectl get pod -A | grep -v Running

Применить обновление маршрутизации

monqctl release update routing --module=cl

Выполнить обновление набора прав

monqctl release update user-grants --module=cl --file=user-grants.json
monqctl instance clear cache --microservice=pl-user-grants-api-service

Запустить миграцию данных

monqctl release update migrator --module=cl --command="migrate metrics-bridge-streams"

Очистить кеш identity

monqctl instance clear cache --microservice=pl-identity-service
Продолжать только при пустом выводе команды:
kubectl get pod -A | grep -v Running

Test Forge (fm)

Выполнить импорт контейнеров в Docker репозиторий обновляемого экземпляра Monq

monqctl release update images --module=fm

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

monqctl release update db pgsql --module=fm --microservice=pl-userspaces-api-service --file userspace-configuration.sql

Выполнить обновление и конфигурацию микросервисов

monqctl release update microservices --module=fm
Продолжать только при пустом выводе команды:
kubectl get pod -A | grep -v Running

MONQ Metrics (mcs)

Выполнить импорт контейнеров в Docker репозиторий обновляемого экземпляра Monq

monqctl release update images --module=mcs

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

monqctl release update db pgsql --module=mcs --microservice=pl-userspaces-api-service --file userspace-configuration.sql

Выполнить обновление и конфигурацию микросервисов

monqctl release update microservices --module=mcs

Применить обновление маршрутизации

monqctl release update routing --module=mcs
Продолжать только при пустом выводе команды:
kubectl get pod -A | grep -v Running

PLUGINS (plugins)

Выполнить импорт контейнеров в Docker репозиторий обновляемого экземпляра Monq

monqctl release update images --module=plugins

Выполнить обновление и конфигурацию микросервисов

monqctl release update microservices --module=plugins

Применить обновление маршрутизации

monqctl release update routing --module=plugins

Выполнить загрузку плагинов агента в центральное хранилище распространения плагинов Monq

monqctl instance delete agent-plugin zabbixCheckConnection
monqctl instance delete agent-plugin zabbixCheckVersion
monqctl instance delete agent-plugin scomCheckConnection
monqctl instance delete agent-plugin nagiosCheckConnection
monqctl release update agent-plugins --module=plugins --plugin=httpProbe
monqctl release update agent-plugins --module=plugins --plugin=zabbixEventsDataFlow
monqctl release update agent-plugins --module=plugins --plugin=scomEventsDataFlow
monqctl release update agent-plugins --module=plugins --plugin=syslog
monqctl release update agent-plugins --module=plugins --plugin=k8sMetricsDataFlow
monqctl release update agent-plugins --module=plugins --plugin=metricsFromStaticTargets
monqctl release update agent-plugins --module=plugins --plugin=oracleDbSqlRequest
monqctl release update agent-plugins --module=plugins --plugin=postgreSqlPlugin
monqctl release update agent-plugins --module=plugins --plugin=tail
monqctl release update agent-plugins --module=plugins --plugin=snmpTrap
monqctl release update agent-plugins --module=plugins --plugin=icmp
monqctl release update agent-plugins --module=plugins --plugin=nodeInfo
monqctl release update agent-plugins --module=plugins --plugin=winInfo
monqctl instance restart microservice --microservice=pl-monq-agent

Выполнить загрузку контент-паков

monqctl release update content-packs --module=plugins --replace --file=content-packs/telegram.zip
monqctl release update content-packs --module=plugins --replace --file=content-packs/stream-full-request-parser.zip
monqctl release update content-packs --module=plugins --replace --file=content-packs/scom.zip
monqctl release update content-packs --module=plugins --replace --file=content-packs/prometheus.zip
monqctl release update content-packs --module=plugins --replace --file=content-packs/vcenter.zip
monqctl release update content-packs --module=plugins --replace --file=content-packs/zabbix.zip
monqctl release update content-packs --module=plugins --replace --file=content-packs/k8s.zip
monqctl release update content-packs --module=plugins --replace --file=content-packs/nagios.zip
Продолжать только при пустом выводе команды:
kubectl get pod -A | grep -v Running

Миграция данных Clickhouse

Перед запуском

Проверьте свободное место

Во время миграции объем занятого дискового пространства Clickhouse может временно увеличиться до 2 раз.
Через некоторое время после завершения лишнее место будет автоматически освобождено.

обязательно ознакомьтесь со статьей о миграции данных в Release Notes
Миграция состоит из двух частей:
  • команда migrate streams-preview - покажет как будут мигрированы потоки и данные в них
  • команда migrate streams - выполнит саму миграцию

Запустить предварительную проверку и ознакомиться с результатами

monqctl release update migrator --module=cl --command="migrate streams-preview"

Запустить миграцию данных

Миграция может занять продолжительное время

В процессе работы состояние миграции сохраняется в директории /tmp/monqctl/updates/<ваш_контекст>/monq/9.0.0/cl/artifacts. Если миграция будет прервана, повторный запуск продолжит ее с того же места.

monqctl release update migrator --module=cl --command="migrate streams"

Перезапустить микросервисы "автоматон v2"

monqctl instance restart microservice --microservice=pl-automaton-v2-service
monqctl instance restart microservice --microservice=pl-automaton-v2-processor-service
monqctl instance restart microservice --microservice=pl-automaton-v2-processor-service-compiler

Перезапустить координатор агентов

monqctl instance restart microservice --microservice=pl-agents-service-scheduler

Перезапустить микросервис исполнитель сценариев "автоматон v2"

monqctl instance restart microservice --microservice=pl-automaton-v2-processor-service-runner

Финальная конфигурация

количество реплик

Для микросервисов, записанных на этапе остановки Monq, вернуть прежнее значение реплик


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

В связи с изменением модели шеринга конфигурационных единиц на модель публикации, при обновлении Monq до версии 9.0 в блок-функциях работы с КЕ изменятся соответствующие пины и связи будут удалены.

Когда потребуются ручные правки

Если в сценариях автоматизации используются свойства SharedToWorkGroups и структуры SharedWorkGroup, WorkGroupGrantModel

Поиск затрагиваемых сценариев

Поиск затрагиваемых сценариев

Чтобы найти все сценарии, использующие устаревшие параметры шеринга, выполните запрос в БД PostgreSQL:

# ЕСЛИ В СИСТЕМЕ НЕ УСТАНОВЛЕН PSQL-КЛИЕНТ

sudo apt update && sudo apt install postgresql-client -y
read LOGIN PASS HOST PORT < <(
monqctl registry get services PostgreSQL | \
awk -F'\\|' 'NF>=6 && $1!~/-+/ && $1!~/Name/ { for(i=1;i<=NF;i++){gsub(/^ +| +$/,"",$i)} print $2,$3,$4,$5; exit }' )
prefix=$(monqctl registry get status | sed -nE 's|^EnvPrefix.*\"(.*)\"|\1|p')
PGPASSWORD="$PASS" psql "host=$HOST port=$PORT dbname=${prefix}_pl_automaton_v2_service user=$LOGIN" -c \
"SELECT sv.\"ScenarioId\", bs.\"OwnerWorkGroupId\" AS \"OwnerWGId\", bs.\"Enabled\", bs.\"Name\", bs.\"Description\" \
FROM \"ScenarioVersions\" sv LEFT JOIN \"BasicScenarios\" bs ON sv.\"ScenarioId\" = bs.\"Id\" \
WHERE ( sv.\"SourceCode\" LIKE '%SharedToWorkGroups%' OR sv.\"SourceCode\" LIKE '%SharedWorkGroup%' OR
sv.\"SourceCode\" LIKE '%WorkGroupGrantModel%' ) AND bs.\"OwnerWorkGroupId\" IS NOT NULL;"

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

Блок-функции, требующие обновления
Для найденных сценариев необходимо пересоздать и переподключить пины следующих блок-функций:

  • CreateConfigItem
  • CreateConfigItemExpanded
  • CreateConfigItemsBatch
  • GetConfigItem
  • GetConfigItemsBatch
  • UpdateConfigItem
  • UpdateConfigItemExpanded
  • FilterConfigItemsExtended
  • CreateSubordinationLink
  • DeleteSubordinationLink