Aller au contenu

Guide de migration vers Canopsis 23.10.0

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

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

Environnement SNMP

Depuis la version 22.10, le moteur SNMP n'était plus intégré nativement dans Canopsis. Pour pouvoir continuer à l'utiliser, nous vous avions recommandé d'utiliser une version ancienne.
Cela n'est plus nécessaire, le moteur SNMP a été réintégré dans Canopsis 23.10.

Suppression de l'environnement obsolète

cd canopsis-pro-sources-release-23.04-pro-mock-external-services-snmp-docker
cd mock/external-services/snmp/docker
docker compose down

Intégration du nouvel environnement

Le moteur SNMP ainsi que la gestion des règles SNMP sont à présent nativement intégrés à Canopsis. Vous n'avez rien à faire.

Activation du service :

systemctl enable --now canopsis-engine-python-snmp.service

Conversion de MongoDB noeud unique en MongoDB replicaset

Canopsis 23.10 IMPOSE à présent d'utiliser MongoDB en replicaset.
Si votre installation utilise un noeud unique MongoDB, vous devez le migrer vers un replicaset.

Avesrtissement

Ce guide de migration vous propose une procédure vous permettant de convertir votre mongoDB standalone en replicaset à UN SEUL NOEUD.
En aucun cas vous ne devez utiliser cela sur votre système de production.

Voici les différentes étapes de la procédure

  1. Réalisation d'un dump MongoDB
  2. Suppression du volume accueillant les données MongoDB
  3. Démarrage de MongoDB en mode replicaset
  4. Import du dump précédemment réalisé

Démarrez le conteneur mongodb :

CPS_EDITION=pro docker compose start mongodb

Réalisez un dump dans le conteneur puis rappatriez-le :

CPS_EDITION=pro docker compose exec mongodb mongodump --uri $CPS_MONGO_URL --gzip --archive="/tmp/backup_mongodb_canopsis_23.04.gz"
CPS_EDITION=pro docker compose cp mongodb:/tmp/backup_mongodb_canopsis_23.04.gz /tmp
CPS_EDITION=pro docker compose stop mongodb
  • Supprimez le volume associé au conteneur MongoDB

On repère le conteneur qui utilise le volume et on le supprime

docker ps -a|grep mongodb

On utilise l'identifiant renvoyé et on exécute la commande de suppression du conteneur

docker rm 208fdd8ce5f3

Enfin, on identifie le volume et on le supprime

docker volume inspect canopsis-pro_mongodbdata
docker volume rm canopsis-pro_mongodbdata

Les opérations de démarrage de mongoDB en mode replicaset et d'import nécessitent de récupérer les configurations de références livrées avec Canopsis 23.10.
Elles sont décrites dans le chapitre suivant.

Voici les différentes étapes de la procédure

  1. Réalisation d'un dump MongoDB
  2. Initialisation de MongoDB en mode replicaset
  3. Vérifications

Dump MongoDB

Démarrez le service mongodb :

systemctl start mongod

Réalisez un dump :

set -o allexport; source /opt/canopsis/etc/go-engines-vars.conf
mongodump --uri $CPS_MONGO_URL --gzip --archive="/tmp/backup_mongodb_canopsis_23.04.gz"

Migration vers un replicaset

Création d'une clé :

openssl rand -base64 756 > /etc/mongodb-keyfile
chmod 400 /etc/mongodb-keyfile
chown mongod:root /etc/mongodb-keyfile

Adaptation du fichier de configuration mongoDB :

security:
  authorization: enabled
  keyFile: /etc/mongodb-keyfile

replication:
  oplogSizeMB: 1024
  replSetName: rs0 

Redémarrage du service :

systemctl restart mongod

Initialisation du replicaset :

mongo admin -u UTILISATEUR_ADMIN -p
> rs.initiate()

Vérifications

Le prompt suivant doit vous indiquer que vous êtes sur le noeud primaire rs0:PRIMARY :

> rs.status()

Vous devez pouvoir accéder à la base de données Canopsis :

> use canopsis
> show collections

Mise à jour Canopsis

Information

Canopsis 23.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.

Avertissement

Les changements notables les plus importants sont :

  • Suppression du moteur engine-service. Les calculs effectués par ce moteur sont à présent répartis entre engine-che et engine-axe.
  • Suppression du paramètre EnableLastEventDate du fichier canopsis.toml. Ce paramètre est désormais appliqué quoi qu'il arrive.
  • Les paramètres launch_job_retries_* et wait_job_complete_retries_* de la section Remédiation n'existent plus.

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

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

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

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

Lancement de MongoDB en mode Replicaset

Démarrez les conteneurs mongodb-rs-init et mongodb :

CPS_EDITION=pro docker compose up -d mongodb-rs-init

À ce stade, MongoDB est démarré en Replicaset. Il reste à importer le dump réalisé précédemment :

CPS_EDITION=pro docker compose cp /tmp/backup_mongodb_canopsis_23.04.gz mongodb:/tmp
CPS_EDITION=pro docker compose exec mongodb mongorestore --uri $CPS_MONGO_URL --drop --gzip --db canopsis --archive=/tmp/backup_mongodb_canopsis_23.04.gz

Non concerné car MongoDB a déjà été démarré en replicaset dans le chapitre précédent.

Mise à jour de RabbitMQ

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

Par ailleurs, Les exchanges suivants doivent être supprimés car ils ne sont plus utilisés par Canopsis :

  • canopsis.incidents
  • canopsis.alerts
  • canopsis

Vous pouvez effectuer cette opération en utilisant l'interface graphique de management de RabbitMQ.

Il suffit de démarrer le conteneur

CPS_EDITION=pro docker compose up -d rabbitmq

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

dnf install --repo rabbitmq_erlang --repo rabbitmq_server erlang rabbitmq-server-3.12.7
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 -a canopsis flushall
OK
systemctl start redis
/bin/redis-cli -a canopsis 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.

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-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-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.10.0 canopsis-webui-23.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-13
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 disable canopsis-engine-go@engine-service.service
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


Dernière mise à jour: 2023-11-22
Retour en haut de la page