Aller au contenu

Guide de migration vers Canopsis 23.04.0

Ce guide donne des instructions vous permettant de mettre à jour Canopsis 22.10 (dernière version disponible) vers la version 23.04.0.

Prérequis

L'ensemble de cette procédure doit être lu avant son exécution.

Ce document ne prend en compte que Canopsis Community et Canopsis Pro : tout développement personnalisé dont vous pourriez bénéficier ne fait pas partie du cadre de ce Guide de migration.

Les fichiers de référence qui sont mentionnés dans ce guide sont disponibles à ces adresses

Édition Sources
Édition Community https://git.canopsis.net/canopsis/canopsis-community/-/releases
Édition pro https://git.canopsis.net/sources/canopsis-pro-sources/-/releases

Procédure de mise à jour

Réalisation d'une sauvegarde

Des sauvegardes sont toujours recommandées, qu'elles soient régulières ou lors de modifications importantes.

La restructuration apportée dans les bases de données pour cette version de Canopsis nous amène à insister d'autant plus sur ce point. Il est donc fortement recommandé de réaliser une sauvegarde complète des VM hébergeant vos services Canopsis, avant cette mise à jour.

Vérification MongoDB

Vérification

Avant de démarrer la procédure de mise à jour, vous devez vérifier que la valeur de featureCompatibilityVersion est bien positionnée à 4.4

CPS_EDITION=pro docker compose exec mongodb bash
mongo -u root -p root
> db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
> exit
mongo -u root -p root
> db.adminCommand( { getParameter: 1, featureCompatibilityVersion: 1 } )
> exit

Le retour doit être de la forme { "featureCompatibilityVersion" : { "version" : "4.4" }, "ok" : 1 } Si ce n'est pas le cas, vous ne pouvez pas continuer la mise à jour.

Arrêt de l'environnement en cours de lancement

Vous devez prévoir une interruption du service afin de procéder à la mise à jour qui va suivre.

CPS_EDITION=pro docker compose down
systemctl stop canopsis
systemctl stop mongod
systemctl stop postgresql-13
systemctl stop rabbitmq-server
systemctl stop redis

Mise à jour Canopsis

Information

Canopsis 23.04 est livré avec un nouveau jeu de configurations de référence. Vous devez télécharger ces configurations et y reporter vos personnalisations.

Si vous êtes utilisateur de l'édition community, voici les étapes à suivre.

Télécharger le paquet de la version 23.04.0 (canopsis-community-docker-compose-23.04.0.tar.gz) disponible à cette adresse https://git.canopsis.net/canopsis/canopsis-community/-/releases.

export CPS_EDITION=community
tar xvfz canopsis-community-docker-compose-23.04.0.tar.gz
cd canopsis-community-docker-compose-23.04.0

Si vous êtes utilisateur de l'édition pro, voici les étapes à suivre.

Télécharger le paquet de la version 23.04.0 (canopsis-pro-docker-compose-23.04.0.tar.gz) disponible à cette adresse https://git.canopsis.net/sources/canopsis-pro-sources/-/releases.

export CPS_EDITION=pro
tar xvfz canopsis-pro-docker-compose-23.04.0.tar.gz
cd canopsis-pro-docker-compose-23.04.0

À ce stade, vous devez synchroniser les modifications réalisées sur vos anciens fichiers de configuration docker-compose avec les fichiers docker-compose.yml et/ou docker-compose.override.yml.

À venir

Mise à jour de MongoDB

Dans cette version de Canopsis, la base de données MongoDB passe de la version 4.4 à 5.0.

Démarrez le conteneur mongodb :

CPS_EDITION=pro docker compose up -d mongodb

Entrez ensuite à l'intérieur de ce conteneur, afin de compléter la mise à jour vers MongoDB 5.0 :

CPS_EDITION=pro docker compose exec mongodb bash
mongo -u root -p root
> db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )
exit

Note

Si vous avez mis en place des exclusions dans le fichier /etc/yum.conf, veillez à la désactiver le temps de cette procédure.

Mise à jour des paquets mongodb :

echo '[mongodb-org-5.0]
name=MongoDB Repository
baseurl=https://repo.mongodb.org/yum/redhat/$releasever/mongodb-org/5.0/x86_64/
gpgcheck=1
enabled=1
gpgkey=https://www.mongodb.org/static/pgp/server-5.0.asc' | tee /etc/yum.repos.d/mongodb-org-5.0.repo
dnf makecache
dnf install mongodb-org-5.0.16 mongodb-org-database-5.0.16 mongodb-org-server-5.0.16 mongodb-org-mongos-5.0.16 mongodb-org-tools-5.0.16 mongodb-org-shell-5.0.16

Redémarrage de mongodb :

systemctl start mongod

Ensuite, complétez la mise à jour vers MongoDB 5.0 :

mongo -u root -p root
> db.adminCommand( { setFeatureCompatibilityVersion: "5.0" } )
exit

Mise à jour de TimescaleDB

Dans cette version de Canopsis, la base de données TimescaleDB passe de la version 2.7.2 à 2.9.3.

Relancez le conteneur timescaledb :

CPS_EDITION=pro docker compose up -d timescaledb

Puis mettez à jour l'extension timescaledb (La chaîne de connexion doit être adaptée à votre environnement)

CPS_EDITION=pro docker compose exec timescaledb psql postgresql://cpspostgres:canopsis@timescaledb:5432/canopsis
canopsis=# ALTER EXTENSION timescaledb UPDATE;

Ensuite, vérifiez que l'extension en elle-même est à présent bien à jour

\dx
...
timescaledb | 2.9.3   | public     | Enables scalable inserts and complex queries for time-series data
...
exit

Mise à jour des paquets timescaledb :

dnf install timescaledb-2-postgresql-13-2.9.3 timescaledb-2-loader-postgresql-13-2.9.3

Relancez le service timescaledb (géré par PostgreSQL) :

systemctl start postgresql-13

Puis mettez à jour l'extension timescaledb (La chaîne de connexion doit être adaptée à votre environnement)

sudo -u postgres psql postgresql://cpspostgres:canopsis@localhost:5432/canopsis
canopsis=# ALTER EXTENSION timescaledb UPDATE;

Avertissement

Si l'opération ALTER EXTENSION échoue avec le message
ERROR: must be owner of extension timescaledb
veuillez suivre les opérations suivantes :

su - postgres
psql -X
\c canopsis
canopsis=# ALTER EXTENSION timescaledb UPDATE;

Ensuite, vérifiez que l'extension en elle-même est à présent bien à jour

\dx
...
timescaledb | 2.9.3   | public     | Enables scalable inserts and complex queries for time-series data
...
exit

Mise à jour de RabbitMQ

Dans cette version de Canopsis, le bus rabbitMQ passe à la version 3.11.11.

Un passage par la version 3.10.20 est nécessaire lorsque votre installation part de la version 3.7.28.

Passage en version 3.10.20 puis lancement du conteneur rabbitmq :

sed -i "s/RABBITMQ_TAG=.*-management$/RABBITMQ_TAG=3.10.20-management/g" .env
CPS_EDITION=pro docker compose up -d rabbitmq

Il faut à présent activer la fonctionnalité FEATURE_FLAGS de rabbitmq :

CPS_EDITION=pro docker compose exec rabbitmq /bin/bash
rabbitmqctl enable_feature_flag all
Enabling all feature flags ...
exit

Passage en version 3.11.11 puis lancement du conteneur rabbitmq :

sed -i "s/RABBITMQ_TAG=.*-management$/RABBITMQ_TAG=3.11.11-management/g" .env
CPS_EDITION=pro docker compose up -d rabbitmq

Il faut commencer par activer la fonctionnalité FEATURE_FLAGS de rabbitmq :

systemctl start rabbitmq-server
rabbitmqctl enable_feature_flag all

Passage en version 3.11.11 puis lancement du service rabbitmq-server :

dnf install --repo rabbitmq_erlang --repo rabbitmq_server erlang rabbitmq-server-3.11.11
systemctl restart rabbitmq-server

Remise à 0 du cache Redis

Dans cette version de Canopsis, le cache de Canopsis doit repartir à 0.

CPS_EDITION=pro docker compose up -d redis
CPS_EDITION=pro docker compose exec redis /usr/local/bin/redis-cli flushall
OK
systemctl start redis
/bin/redis-cli flushall

Lancement du provisioning canopsis-reconfigure

Synchronisation du fichier de configuration canopsis.toml ou fichier de surcharge

Si vous avez modifié le fichier canopsis.toml (vous le voyez via une définition de volume dans votre fichier docker-compose.yml), vous devez vérifier qu'il soit bien à jour par rapport au fichier de référence.

Information

Pour éviter ce type de synchronisation fastidieuse, la bonne pratique est d'utiliser un fichier de surcharge de cette configuration.

Si vous avez utilisé un fichier de surcharge, alors vous n'avez rien à faire, uniquement continuer à le présenter dans un volume.

Reconfiguration de Canopsis

Attention

Si vous avez personnalisé la ligne de commande de l'outil canopsis-reconfigure, nous vous conseillons de supprimer cette personnalisation. L'outil est en effet pré paramétré pour fonctionner naturellement.

CPS_EDITION=pro docker compose up -d reconfigure

Information

Cette opération peut prendre plusieurs minutes pour s'exécuter.

Vous pouvez ensuite vérifier que le mécanisme de provisioning/reconfigure s'est correctement déroulé. Le conteneur doit présenté un "exit 0"

CPS_EDITION=pro docker compose ps -a|grep reconfigure
canopsis-pro-reconfigure-1            "/canopsis-reconfigu…"   reconfigure            exited (0)

La commande canopsis-reconfigure doit être exécutée après mise à jour de Canopsis dans le cadre d'installation par paquets RPM.

Migration des statistiques de remédiation

Historiquement, les statistiques de remédiation étaient stockées dans la base mongoDB.
À présent, c'est TimescaleDB qui porte ces statistiques.

Une migration des données est donc nécessaire.

Exécution de la commande migrate-instruction-metrics

docker run -e CPS_MONGO_URL='mongodb://cpsmongo:canopsis@mongodb/canopsis' -e CPS_AMQP_URL='amqp://cpsrabbit:canopsis@rabbitmq/canopsis' -e CPS_POSTGRES_URL='postgresql://cpspostgres:canopsis@timescaledb:5432/canopsis' --network=canopsis-pro_default -it --rm docker.canopsis.net/docker/pro/migrate-instruction-metrics:23.04.0
INF git.canopsis.net/canopsis/canopsis-pro/pro/go-engines-pro/cmd/migrate-instruction-metrics/main.go:48 > instruction metrics migration finished 8.777198ms

Exécution de la commande migrate-instruction-metrics

set -o allexport ; source /opt/canopsis/etc/go-engines-vars.conf
/opt/canopsis/bin/migrate-instruction-metrics
INF git.canopsis.net/canopsis/canopsis-pro/pro/go-engines-pro/cmd/migrate-instruction-metrics/main.go:48 > instruction metrics migration finished 8.777198ms

Mise à jour et démarrage final de Canopsis

Enfin, il vous reste à mettre à jour et à démarrer tous les composants applicatifs de Canopsis

CPS_EDITION=pro docker compose up -d

Vous pouvez ensuite vérifier que l'ensemble des conteneurs soient correctement exécutés.

CPS_EDITION=pro docker compose ps
NAME                                  COMMAND                  SERVICE                STATUS              PORTS
canopsis-pro-action-1                 "/engine-action -wit…"   action                 running             
canopsis-pro-api-1                    "/canopsis-api -docs"    api                    running (healthy)   0.0.0.0:8082->8082/tcp, :::8082->8082/tcp
canopsis-pro-axe-1                    "/engine-axe -publis…"   axe                    running             
canopsis-pro-che-1                    "/engine-che"            che                    running             
canopsis-pro-connector-junit-1        "/bin/sh -c /${CMD}"     connector-junit        running             
canopsis-pro-correlation-1            "/bin/sh -c /${CMD}"     correlation            running             
canopsis-pro-dynamic-infos-1          "/bin/sh -c /${CMD}"     dynamic-infos          running             
canopsis-pro-fifo-1                   "/bin/sh -c /${CMD}"     fifo                   running             
canopsis-pro-migrate-metrics-meta-1   "/bin/true /migrate-…"   migrate-metrics-meta   exited (0)          
canopsis-pro-mongodb-1                "docker-entrypoint.s…"   mongodb                running (healthy)   0.0.0.0:27027->27017/tcp, :::27027->27017/tcp
canopsis-pro-nginx-1                  "/bin/sh -c /entrypo…"   nginx                  running             80/tcp, 0.0.0.0:80->8080/tcp, :::80->8080/tcp, 0.0.0.0:443->8443/tcp, :::443->8443/tcp
canopsis-pro-pbehavior-1              "/bin/sh -c /${CMD}"     pbehavior              running             
canopsis-pro-rabbitmq-1               "docker-entrypoint.s…"   rabbitmq               running (healthy)   4369/tcp, 5671/tcp, 0.0.0.0:5672->5672/tcp, :::5672->5672/tcp, 15671/tcp, 15691-15692/tcp, 25672/tcp, 0.0.0.0:15672->15672/tcp, :::15672->15672/tcp
canopsis-pro-reconfigure-1            "/canopsis-reconfigu…"   reconfigure            exited (0)          
canopsis-pro-redis-1                  "docker-entrypoint.s…"   redis                  running (healthy)   0.0.0.0:6379->6379/tcp, :::6379->6379/tcp
canopsis-pro-remediation-1            "/bin/sh -c /${CMD}"     remediation            running             
canopsis-pro-service-1                "/engine-service -pu…"   service                running             
canopsis-pro-timescaledb-1            "docker-entrypoint.s…"   timescaledb            running (healthy)   0.0.0.0:5432->5432/tcp, :::5432->5432/tcp

Mise à jour de Canopsis

dnf install canopsis-pro-23.04.0 canopsis-webui-23.04.0

Reconfiguration de Canopsis

Attention

Si vous avez personnalisé la ligne de commande de l'outil canopsis-reconfigure, nous vous conseillons de supprimer cette personnalisation. L'outil est en effet pré paramétré pour fonctionner naturellement.

Si vous utilisez un fichier d'override du canopsis.toml, veuillez ajouter à la ligne de commande suivante l'option -override suivie du chemin du fichier en question.

set -o allexport ; source /opt/canopsis/etc/go-engines-vars.conf
/opt/canopsis/bin/canopsis-reconfigure -migrate-postgres=true -migrate-mongo=true -edition pro

Information

Cette opération peut prendre plusieurs minutes pour s'exécuter.

Vous pouvez ensuite vérifier que le mécanisme de reconfigure s'est correctement déroulé en lisant les logs sur la sortie standard de la commande.

Redémarrage de Canopsis

systemctl restart canopsis

Vous pouvez ensuite vérifier que l'ensemble des services soient correctement exécutés.

systemctl status canopsis

Par ailleurs, le mécanisme de bilan de santé intégré à Canopsis ne doit pas présenter d'erreur.

Healthcheck

Moteur SNMP et Linkbuilder

Toutes les parties Python de Canopsis ont été supprimées dans la version 22.10.
Les fonctionnalités SNMP et Linkbuilder n'ont pas encore été migrées en GO et réintégrées dans Canopsis.
Pour continuer à les utiliser, vous devez utiliser les packages des versions 4.x.
Cela est temporaire mais nécessaire.

Que ce soit sur une installation par paquets RPM ou par image Docker, nous vous livrons des configurations à exécuter avec Docker.

Vous devez simplement définir la variable d'environnement CPS_OLD_API dans /opt/canopsis/etc/go-engines-vars.conf pour une installation paquets ou compose.env en installation docker.

Avertissement

Les configurations docker-compose livrées ne doivent absolument pas être modifiées, notamment les versions d'images utilisées.
Par ailleurs, si vous utilisiez déjà la partie SNMP dans votre installation alors la collection schema existe très certainement dans mongoDB.
Si ce n'était pas le cas, vous allez devoir la créer avec ces instructions.

docker compose exec snmp /bin/bash
schema2db

Téléchargez l'archive suivante pour récupérer les configurations de références.

tar xvfz canopsis-pro-sources-release-23.04-pro-mock-external-services-snmp-docker.tar.gz
cd canopsis-pro-sources-release-23.04-pro-mock-external-services-snmp-docker
cd mock/external-services/snmp/docker

On remplace l'entrypoint pour être en mesure d'exécuter les commandes env2cfg et schema2db (Attention, vous avez 2 minutes pour exécuter ces commandes).

sed -i 's/#entrypoint/entrypoint/' docker-compose.yml
docker compose up -d oldapi
docker compose exec oldapi bash
env2cfg
schema2db

Vous devez alors voir des lignes similaires à celles-ci :

...
2023-02-17 08:30:13,122 INFO schema2db [schema2db 186] Saving: crecord.graphelt.vertice.toponode
2023-02-17 08:30:13,124 INFO schema2db [schema2db 186] Saving: context.ctxevent.ctxack
2023-02-17 08:30:13,126 INFO schema2db [schema2db 186] Saving: crecord.cservice
2023-02-17 08:30:13,127 INFO schema2db [schema2db 186] Saving: alarm_fields
2023-02-17 08:30:13,129 INFO schema2db [schema2db 186] Saving: cevent.comment
...

Enfin, on rétablit l'entrypoint d'origine et on démarre les services :

sed -i 's/entrypoint/#entrypoint/' docker-compose.yml
docker compose up -d

Vous pouvez vérifier que votre installation SNMP est fonctionnelle en vous rendant sur l'interface graphique dans le menu Exploitation->Règles SNMP.
Si vous aviez déjà des règles SNMP en place alors elles s'affichent dans la liste. Si l'interface vous déconnecte, alors la focntionnalité SNMP n'est pas déployée correctement. Dans ce cas, contactez notre support.


Dernière mise à jour: 2024-03-04
Retour en haut de la page