Инструкция по обновлению Monq до версии 9.0.0
В модуль лицензионной защиты Monq 9 был внесен ряд технологических изменений, а также изменена структура лицензионного ключа.
Monq 9 работает только с новой версией лицензионного ключа!Перед выполнением обновления получите новый лицензионный ключ:
- Если вы используете коммерческую версию - обратитесь к вашему персональному менеджеру
- Если вы используете бесплатную версию - отправьте заявку на адрес askformonq@monq.ru
В этом обновлении
Модуль | Новая версия |
---|---|
pl | 9.0.0 |
sm | 9.0.0 |
cl | 9.0.0 |
fm | 9.0.0 |
mcs | 9.0.0 |
plugins | 9.0.0 |
Уровень простоя
Во время обновления системы будет произведено удаление всех очередей rabbitmq, вследствие чего все необработанные сообщения будут удалены
Monq 9 не будет работать со старыми версиями агентов. Обновление всех используемых агентов до версии 3.0 - обязательно
Проведение миграции 8.9.2 → 9.0.0
Требования
Если у вас установлена другая версия Monq, сначала выполните последовательное обновление до 8.9.2 и только потом приступайте к этому обновлению
Для запуска обновления требуется скачать клиент управления 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
- повторить команды.
Ошибка может возникнуть, если микросервис "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 раз.
Через некоторое время после завершения лишнее место будет автоматически освобождено.
- команда
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