Aller au contenu

Guide de migration vers Canopsis 24.10.0

Ce guide donne les instructions vous permettant de mettre à jour Canopsis 24.04 (dernière version disponible) vers la version 24.10.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 à 7.0

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

A venir

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

A venir

Mise à jour Canopsis

Information

Canopsis 24.10 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 24.10.0 (canopsis-community-docker-compose-24.10.0.tar.gz) disponible à cette adresse https://git.canopsis.net/canopsis/canopsis-community/-/releases.

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

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

Télécharger le paquet de la version 24.10.0 (canopsis-pro-docker-compose-24.10.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-24.10.0.tar.gz
cd canopsis-pro-docker-compose-24.10.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.

Non concerné car ces configurations sont livrées directemement dans les paquets RPM.

A venir

Mise à jour de TimescaleDB

Dans cette version de Canopsis, la base de données TimescaleDB passe de la version 2.14.2 à 2.15.1.
En plus de la mise à jour de TimescaleDB lui-même, le système de gestion de base de données PostreSQL doit être mis à jour de la version 13 à la version 15.

Deux étapes sont à suivre :

  1. Mise à jour de PostgreSQL de 13 vers 15
  2. Mise à jour de TimescaleDB 14.2 à 2.15.1

Cas de la base de données des métriques techniques

Certaines commandes ci-dessous concernent la fonctionalité métriques techniques. Si vous n'avez pas mis en oeuvre cette fonctionnalité pour le moment, vous pouvez ignorer ces commandes.

Modifiez la variable TIMESCALEDB_TAG du fichier .env de cette façon :

-TIMESCALEDB_TAG=2.15.1-pg15
+TIMESCALEDB_TAG=2.14.2-pg13

Sauvegarde de la base de données

CPS_EDITION=pro docker compose up -d timescaledb
CPS_EDITION=pro docker compose exec timescaledb pg_dump postgresql://cpspostgres:canopsis@timescaledb:5432/canopsis -Ft -f /tmp/postgres_dump_archive.tar
CPS_EDITION=pro docker compose exec timescaledb pg_dump postgresql://cpspostgres:canopsis@timescaledb:5432/canopsis_tech_metrics -Ft -f /tmp/postgres_dump_archive_techmetrics.tar
CPS_EDITION=pro docker compose cp timescaledb:/tmp/postgres_dump_archive.tar /tmp
CPS_EDITION=pro docker compose cp timescaledb:/tmp/postgres_dump_archive_techmetrics.tar /tmp

Arrêtez le conteneur et supprimez les volumes associés

CPS_EDITION=pro docker compose down -v timescaledb

Modifiez la variable TIMESCALEDB_TAG du fichier .env de cette façon :

-TIMESCALEDB_TAG=2.14.2-pg13
+TIMESCALEDB_TAG=2.14.2-pg15

Démarrer le conteneur timescaledb

CPS_EDITION=pro docker compose up -d timescaledb

Restaurez le dump précédemment effectué

CPS_EDITION=pro docker compose cp /tmp/postgres_dump_archive.tar timescaledb:/tmp/postgres_dump_archive.tar
CPS_EDITION=pro docker compose cp /tmp/postgres_dump_archive_techmetrcis.tar timescaledb:/tmp/postgres_dump_archive_techmetrics.tar
CPS_EDITION=pro docker compose exec timescaledb pg_restore --dbname=postgresql://cpspostgres:canopsis@timescaledb:5432/canopsis --no-owner -Ft -v /tmp/postgres_dump_archive.tar
CPS_EDITION=pro docker compose exec timescaledb pg_restore --dbname=postgresql://cpspostgres:canopsis@timescaledb:5432/canopsis_tech_metrics --no-owner -Ft -v /tmp/postgres_dump_archive_techmetrics.tar

Arrêtez le conteneur

CPS_EDITION=pro docker compose stop timescaledb

Modifiez la variable TIMESCALEDB_TAG du fichier .env de cette façon :

-TIMESCALEDB_TAG=2.14.2-pg15
+TIMESCALEDB_TAG=2.15.1-pg15

Démarrer le conteneur timescaledb et mettez à jour l'extension

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

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

\dx
...
timescaledb | 2.15.1   | public     | Enables scalable inserts and complex queries for time-series data (Community Edition)
...
exit

Arrêter Canopsis

systemctl stop canopsis-engine-go@engine-action.service \
                   canopsis-engine-go@engine-axe.service \
                   canopsis-engine-go@engine-che.service \
                   canopsis-engine-go@engine-fifo.service \
                   canopsis-engine-go@engine-pbehavior.service \
                   canopsis-service@canopsis-api.service \
                   canopsis.service

Sauvegarder les bases de données

set -o allexport ; source /opt/canopsis/etc/go-engines-vars.conf
sudo -iu postgres pg_dump $(eval echo "$CPS_POSTGRES_URL") --no-owner -Fc -v -f /tmp/canopsis-$(date +"%Y-%m-%d")-canopsis-dump.sql.gz
sudo -iu postgres pg_dump $(eval echo "$CPS_POSTGRES_TECH_URL") --no-owner -Fc -v -f /tmp/canopsis-$(date +"%Y-%m-%d")-canopsis_tech_metrics-dump.sql.gz

Stopper l'instance postgresql

systemctl stop postgresql-13.service
systemctl disable postgresql-13.service

Autoriser dnf à réaliser la montée de version

dnf versionlock delete timescaledb-2-loader-postgresql-13 timescaledb-2-postgresql-13

Installer la version 15 de postgreSQL et la version 2.14 de TimescaleDB

dnf install timescaledb-2-postgresql-15-2.14.2 timescaledb-2-loader-postgresql-15-2.14.2

Initialiser la nouvelle base

postgresql-15-setup initdb
timescaledb-tune -yes --pg-config=/usr/pgsql-15/bin/pg_config
echo "timescaledb.telemetry_level=off" >> /var/lib/pgsql/15/data/postgresql.conf
systemctl enable --now  postgresql-15.service

Créer la base de donnée cpspostgres avec les mêmes informations d'identification.

sudo -iu postgres psql
postgres=# CREATE database canopsis;
postgres=# \c canopsis
canopsis=# CREATE EXTENSION IF NOT EXISTS timescaledb;
canopsis=# SET password_encryption = 'scram-sha-256';
canopsis=# CREATE USER cpspostgres WITH PASSWORD 'canopsis';
canopsis=# exit

Créer la base de donnée canopsis_tech_metrics avec les mêmes informations d'identification.

sudo -iu postgres psql
postgres=# CREATE database canopsis_tech_metrics;
postgres=# \c canopsis_tech_metrics
canopsis_tech_metrics=# CREATE EXTENSION IF NOT EXISTS timescaledb;
canopsis_tech_metrics=# SET password_encryption = 'scram-sha-256';
canopsis_tech_metrics=# exit

Modifier les droits de l'utilisateur cpspostgres pour réaliser les imports

sudo -iu postgres psql
postgres=# ALTER ROLE cpspostgres WITH LOGIN SUPERUSER CREATEDB CREATEROLE REPLICATION BYPASSRLS;

Importer les dumps

sudo -iu postgres pg_restore --no-owner -Fc -v -d $(eval echo "$CPS_POSTGRES_URL") /tmp/canopsis-YYYY-MM-DD-canopsis-dump.sql.gz
sudo -iu postgres pg_restore --no-owner -Fc -v -d $(eval echo "$CPS_POSTGRES_TECH_URL") /tmp/canopsis-YYYY-MM-DD-canopsis_tech_metrics-dump.sql.gz

Réinitialiser les droits des utilisateurs

sudo -iu postgres psql
postgres=# ALTER ROLE cpspostgres WITH LOGIN NOSUPERUSER NOCREATEDB NOCREATEROLE NOREPLICATION NOBYPASSRLS;

Installer la version 2.15.1 de TimescaleDB

dnf install timescaledb-2-postgresql-15-2.15.1 timescaledb-2-loader-postgresql-15-2.15.1

Se connecter sur l'instance pgsql pour mettre à jour l'extention TimescaleDB:

sudo -iu postgres psql -X
postgres=# \c canopsis
postgres=# ALTER EXTENSION timescaledb UPDATE;
postgres=# \c canopsis_tech_metrics
postgres=# ALTER EXTENSION timescaledb UPDATE

vérouiller la version pour éviter des mises à jour non souhaitées

dnf versionlock add timescaledb-2-loader-postgresql-15 timescaledb-2-postgresql-15

Supprimer la version 13 de TimescaleDB

dnf remove timescaledb-2-loader-postgresql-13-2.14.2 timescaledb-2-postgresql-13-2.14.2

A venir

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.

A venir

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                             IMAGE                                                                       COMMAND                  SERVICE           CREATED          STATUS                    PORTS
canopsis-pro-action-1            docker.canopsis.net/docker/develop-pro/engine-action:24.10.0            "/engine-action"         action            41 seconds ago   Up 28 seconds             
canopsis-pro-api-1               docker.canopsis.net/docker/develop-pro/canopsis-api-pro:24.10.0         "/bin/sh -c /${CMD}"     api               41 seconds ago   Up 28 seconds (healthy)   0.0.0.0:8082->8082/tcp, :::8082->8082/tcp
canopsis-pro-axe-1               docker.canopsis.net/docker/develop-pro/engine-axe:24.10.0               "/engine-axe -publis…"   axe               41 seconds ago   Up 28 seconds             
canopsis-pro-che-1               docker.canopsis.net/docker/develop-pro/engine-che:24.10.0               "/engine-che"            che               41 seconds ago   Up 28 seconds             
canopsis-pro-connector-junit-1   docker.canopsis.net/docker/develop-pro/connector-junit:24.10.0          "/bin/sh -c /${CMD}"     connector-junit   41 seconds ago   Up 28 seconds             
canopsis-pro-correlation-1       docker.canopsis.net/docker/develop-pro/engine-correlation:24.10.0       "/bin/sh -c /${CMD}"     correlation       41 seconds ago   Up 28 seconds             
canopsis-pro-dynamic-infos-1     docker.canopsis.net/docker/develop-pro/engine-dynamic-infos:24.10.0     "/bin/sh -c /${CMD}"     dynamic-infos     41 seconds ago   Up 28 seconds             
canopsis-pro-fifo-1              docker.canopsis.net/docker/develop-pro/engine-fifo:24.10.0              "/bin/sh -c /${CMD}"     fifo              41 seconds ago   Up 28 seconds             
canopsis-pro-mongodb-1           mongo:7.0.14-jammy                                                          "docker-entrypoint.s…"   mongodb           2 minutes ago    Up 2 minutes (healthy)    0.0.0.0:27017->27017/tcp, :::27017->27017/tcp
canopsis-pro-nginx-1             docker.canopsis.net/docker/develop-community/nginx:24.10.0              "/bin/sh -c /entrypo…"   nginx             41 seconds ago   Up 28 seconds             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         docker.canopsis.net/docker/develop-community/engine-pbehavior:24.10.0   "/bin/sh -c /${CMD}"     pbehavior         41 seconds ago   Up 28 seconds             
canopsis-pro-rabbitmq-1          rabbitmq:3.12.13-management                                                 "docker-entrypoint.s…"   rabbitmq          2 minutes ago    Up 2 minutes (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-recorder-1          docker.canopsis.net/docker/develop-pro/events-recorder:24.10.0          "/bin/sh -c /${CMD}"     recorder          41 seconds ago   Up 28 seconds             
canopsis-pro-redis-1             redis:6.2.14-bookworm                                                       "docker-entrypoint.s…"   redis             2 minutes ago    Up 2 minutes (healthy)    0.0.0.0:6379->6379/tcp, :::6379->6379/tcp
canopsis-pro-remediation-1       docker.canopsis.net/docker/develop-pro/engine-remediation:24.10.0       "/bin/sh -c /${CMD}"     remediation       41 seconds ago   Up 28 seconds             
canopsis-pro-snmp-1              docker.canopsis.net/docker/develop-pro/engines-python:24.10.0           "/bin/sh -c /entrypo…"   snmp              41 seconds ago   Up 28 seconds             
canopsis-pro-timescaledb-1       timescale/timescaledb:2.15.1-pg15                                           "docker-entrypoint.s…"   timescaledb       2 minutes ago    Up 2 minutes (healthy)    0.0.0.0:5432->5432/tcp, :::5432->5432/tcp
canopsis-pro-webhook-1           docker.canopsis.net/docker/develop-pro/engine-webhook:24.10.0           "/bin/sh -c /${CMD}"     webhook           41 seconds ago   Up 28 seconds

Mise à jour de Canopsis

dnf install canopsis-pro-24.10.0 canopsis-webui-24.10.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.

systemctl start postgresql-15
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

A venir

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

Healthcheck