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

Инструкция по обновлению 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