Aller au contenu

Notes de version Canopsis 25.10.0

Canopsis 25.10.0 a été publié le 7 novembre 2025.

Procédure d'installation

Suivre la procédure d'installation de Canopsis.

Procédure de mise à jour

Canopsis 25.10.0 apporte des changements importants tant au niveau technique que fonctionnel.
À ce titre, le Guide de migration vers Canopsis 25.10.0 doit obligatoirement être suivi pour les installations déjà en place.

Changements entre Canopsis 25.04.2 et 25.10.0

Nouveautés fonctionnelles

Studio Templates

Studio Template

La fonctionnalité "Studio Templates" vous permet de vérifier le rendu de vos modèles (templates Go) avant d'enregistrer une règle ou un widget.
Plutôt que de tester vos modifications directement en production, vous pouvez :

  • Créer un jeu de test : associez un nom et sélectionnez des données de test (événement, entité, réponse webhook, etc.).
  • Prévisualiser le résultat : voyez instantanément comment vos modèles seront interprétés, avec les variables remplacées.
  • Identifier les erreurs : toute erreur de syntaxe ou donnée manquante est signalée immédiatement, avec mise en évidence du champ concerné.
  • Réutiliser vos tests : enregistrez, modifiez ou supprimez des jeux de tests et de données pour valider facilement vos futurs modèles.

Retrouvez toutes les informations nécessaires dans la documentation.

Jetons d'authentification externe

Un jeton d'authentification externe (ou external auth token) est un jeton délivré par un service d'authentification tiers et réutilisé par Canopsis pour authentifier des requêtes vers ce service (par exemple pour créer un ticket, interroger une CMDB, etc.).
La fonctionnalité permet de configurer la requête d'obtention du jeton, d'extraire le jeton depuis la réponse, et de définir la durée de vie du jeton afin que Canopsis sache quand en demander un nouveau.

Cas d'usage typiques :

  • Un outil qui renvoie un JWT en plaintext suite à une requête POST /api/jwt/login.
  • Un outil qui renvoie un objet JSON { "token": "xxx", "expires_in": 3600 }.
  • Un service qui requiert un header Authorization: pour la création d'un ticket.

La documentation vous permettra de connaitre tous les éléments de configuration.

Jeton

Données externes

Données externes

L'import CSV des données externes a été enrichi de deux évolutions majeures :

  1. Typage des colonnes à l'import

    Il est désormais possible de définir le type de chaque colonne lors de l'import d'un fichier CSV dans une source de données externe.
    Les types pris en charge incluent :

    • Chaîne de caractères
    • Booléen (true/false, yes/no, oui/non, 1/0)
    • Nombre (entier ou décimal)
    • Tableau (JSON ou liste délimitée)
    • Date/heure (formats ISO)
    • Horodatage (timestamp)
    • Expression régulière (regexp)

    Ce typage améliore la cohérence des données et la précision des enrichissements réalisés via les règles de filtrage d'événements.

  2. Calcul automatique de la priorité pour les colonnes regexp

Lorsqu'une ou plusieurs colonnes sont typées Expression régulière, Canopsis calcule automatiquement une colonne additionnelle priority représentant la spécificité de chaque enregistrement. Le score est déterminé selon la structure du motif :

Type de motif Exemple Score
Vide, .* ou .+ .* 0
Motif “général” (contient * au milieu) .*SUBSTR.* 1
Un seul ancrage (^ ou $) ^SUBSTR ou SUBSTR$ 2
Motif exact (commence par ^ et finit par $) ^SUBSTR$ 3

La priorité totale d'un enregistrement est la somme des scores de ses colonnes regexp.
Cette valeur peut être utilisée dans les règles d'enrichissement pour trier les enregistrements les plus précis (sort_by: priority, sort: desc).

La documentation vous précise tous les éléments de configuration.

Alias d'infos d'entité

Dans les versions précédentes de Canopsis, les données issues des informations d'entité (entity.infos) étaient identifiées uniquement par leur clé interne et par une valeur brute. Cela posait deux problèmes :

  • Lisibilité et recherche : les clés techniques ne sont pas toujours parlantes pour les utilisateurs. Par exemple, l'information entity.infos.customer.value peut être difficile à mémoriser. Les utilisateurs souhaitaient pouvoir créer un alias tel que Client afin de rechercher et filtrer cette information de manière plus intuitive.

  • Incohérence des types : les valeurs numériques étaient parfois interprétées comme des timestamps Unix et exportées dans des colonnes CSV sans conversion de date. Le système ne possédait pas de métadonnées permettant de distinguer un entier simple d'un timestamp.

La fonctionnalité d'alias résout ces deux problèmes en apportant :

  1. Une typologie des informations permettant de préciser si la valeur est une chaîne, un nombre, un booléen, un tableau de chaînes ou un timestamp. Cette typologie est ensuite utilisée dans les formulaires de recherche et d'export.

  2. La possibilité de définir un alias lisible pour chaque clé. L'alias est utilisé dans l'interface (menus, recherches, colonnes de table) et dans les exports CSV. L'alias peut contenir des espaces, des caractères spéciaux ou accentués et offre un accès plus simple aux informations.

alaias-information-entite

Règles d'enrichissement d'entités

L'objectif de cette fonctionnalité est de permettre de retracer, pour une alarme donnée, toutes les mises à jour d'infos d'entité qui l'ont impactée entre sa création et sa résolution. Cela est utile pour comprendre "qui a modifié quoi, quand" dans des contextes avec de nombreuses règles et processus d'enrichissement.

Les résultats de ce suivi sont visibles dans un nouvel onglet du bac à alarmes, Filtres d'événements.

Politique de retry des remédiations en echec

Lorsque vous définissez une consigne de remédiation, vous devez spécifier un Délai d'attente après exécution de la consigne.
Il s'agit du délai à partir duquel Canopsis considérera que l'exécution de la consigne a permis de résoudre une alarme ou au contraire ne l'a pas permis.

Passé ce délai, Canopsis regarde l'état de l'alarme.

  • Si l'alarme est résolue alors la remédiation a permis de résoudre l'alarme et le trigger "L'alarme est en état OK après toutes les consignes automatiques/autoinstructionresultok" est déclenché.
  • Sinon si l'alarme n'est pas résolue alors la remédiation n'a pas permis de résoudre l'alarme et le trigger "L'alarme n'est en état OK après toutes les consignes automatiques/autoinstructionresultfail" est déclenché.

Dans le second cas, il est à présent possible de définir une politique de retry.

delai_retry_consigne

Par ailleurs, lorsque le résultat de l'exécution d'une remédiation n'est pas concluant (l'alarme n'est en état OK après toutes les consignes automatiques), la remédiation peut être déclenchée à nouveau en fonction d'un trigger :

  • Criticité de l'alarme augmentée
  • Criticité de l'alarme diminuée
  • Criticité de l'alarme changée par l'action "Changer et verouiller la criticité"
  • Alarme sortie de veille
  • Comportement périodique démarré
  • Comportement périodique terminé
  • L'alarme a reçu un nouvel événement de type "check"

Notifications, première étape

Notifications

Canopsis introduit un système complet de notifications permettant aux utilisateurs d'être alertés des actions à réaliser ou des anomalies détectées dans la plateforme.
Ce nouveau module regroupe en un seul endroit les Consignes à approuver, les Consignes à évaluer, et les Échecs de filtres d'événements, chacun présenté dans un onglet dédié avec son compteur et un compteur global visible dans l'entête. D'autres types de notifications seront implémentés dans les prochaines versions.

Un menu de notifications affiche les dernières alertes, avec un accès direct aux pages ou modales concernées.

Plus d'informations sur la documentation.

Scenario multi url

Un même webhook peut à présent être exécuté sur plusieurs URLs.
L'attribut "URL" doit alors représenter une chaine de caractères utilisant la virgule comme séparateur d'URLs.
Un exemple complet est disponible sur la documentation des règles de déclaration de tickets

Filtres sur une colonne

Il est désormais possible d'activer un filtrage rapide au clic sur les valeurs de certaines colonnes de la liste des alarmes.
Grâce à une nouvelle option dans la configuration du widget Liste des alarmes (Colonnes -> Filtre au clic), chaque colonne peut devenir interactive : un simple clic sur une valeur applique automatiquement un filtre dans la recherche avancée.

Actions sur les alarmes

Actions rapides

Il est désormais possible de personnaliser l'ordre et la sélection des actions disponibles (unitaires ou en masse) sur les alarmes.

API

L'API Canopsis intègre des changements que vous devez prendre en compte :

Montées de version

Les outils suivants bénéficient de mises à jour :

Outil Version d'origine Version en 25.10
MongoDB 7.0.18 8.0.12
TimescaleDB 2.15.1-pg15 2.21.4-pg17
RabbitMQ 4.0.7 4.1.4
Yarn 1.22 4.9.1

Les instructions pour leur mise à jour sont précisées dans le guide de migration.

Nous avons migré le code Go de Canopsis vers la version v2 du driver MongoDB.
Ce qui ne change pas :

  • Aucun changement dans les paramètres de configuration, flags ou variables d'environnement.
  • Aucun impact significatif constaté sur les performances générales.
  • Les intégrations et composants existants continuent de fonctionner sans modification.

ReadPreference Mongo strictement définie par l'application

Nous avons désactivé la possibilité de surcharger le readPreference via l'URL de connexion Mongo.
La readPreference est maintenant définie par l'application elle-même et non modifiable depuis l'extérieur.

Par défaut, toutes les lectures sont effectuées depuis le nœud primaire.

Des exceptions existent dans certains composants, où la lecture depuis les secondaires est explicitement activée (cf. plus bas).
Cette décision a été prise pour éviter les erreurs fréquentes liées à un usage incorrect ou abusif du readPreference;
Cela causait des anomalies difficiles à diagnostiquer, comme des erreurs du type : "mongo: no documents in result."

Composants utilisant les lectures sur noeuds secondaires

Les lectures depuis les réplicas secondaires sont actuellement activées dans :

  • L'API des alarmes
  • L'API d'export des alarmes
  • Les moteurs engine-che et engine-dynamic-infos (dictionnaires d'info)
  • Le Prometheus exporter

Connecteurs

Les connecteurs email, snmp, et prometheus bénéficient de changements

Grafana :

Une documentation permettant d'interconnecter Grafana avec Canopsis est à présent disponible.

Grafana permet de générer des alertes basées sur les métriques visualisées dans les tableaux de bord.
Lorsqu'une condition d'alerte est remplie, Grafana envoie une notification via un contact point configurable.

Il est possible d'utiliser un webhook ou un Alertmanager Prometheus comme canal de notification :

  • Contact point Webhook : Grafana envoie directement l'alerte au connecteur Prometheus de Canopsis ;
  • Contact point Alertmanager : Grafana envoie l'alerte à l'Alertmanager, qui la transmet ensuite au connecteur Prometheus.

Améliorations

  • Général :

    • Le paramètre "readPreference" de mongodb ne peut plus être surchargé dans l'URI de connexion (#5698)
    • Suppression du type "null" pour les informations d'entité. Ce type était présent sur l'interface graphique mais non interprété par le backend (#5997)
  • Interface graphique :

    • Pour améliorer l'accesibilité de l'interface web de Canopsis, l'ensemble du jeu de couleurs a été entièrement revu (#5794)
    • Amélioration de la navigation : ouverture automatique du viewgroup actif et surlignage lors de l'accès direct à une vue (#5860)
    • Editeur de patterns :
      • Ajout des opérateurs temporels (agissant sur des dates) "Au cours des", "Plus ancien que", "Dans l'intervalle" (#5713)
    • Bac à alarmes :
      • Les "infopopup" de colonne bénéficient à présent d'un sélecteur de variables (#5862)
      • Amélioration des filtres de remédiation dans le bac à alarmes (#5275)
      • Les alarmes fermées/annulées mais non encore résolues sont à présent repérées par un picto dédié (#5858)
      • Il est désormais possible de personnaliser l'ordre et la sélection des actions disponibles (unitaires ou en masse) sur les alarmes (#5720)
      • L'action "Changer et verrouiller la criticité" est disponible en action de masse (#5940)
      • Lorsqu'une alarme est "dépliée", le rafraîchissement automatique des données de la page est suspendu (#5963)
      • A l'aide d'une configuration, les éléments d'une colonne peuvent être cliqués pour appliquer une recherche rapide (#5918)
      • Ajout d'un pictogramme permettant de spécifier qu'une remédiation aurait dû être exécutée mais que cela n'a pas été le cas (#5479)
      • Un modèle de template de fenêtre "Plus d'infos" est provisionné de base (#5923)
      • Le mode ̀Kiosque a été revue (#4735)
    • Comportements périodiques :
      • Ajout d'informations liées à la performance des comportements périodiques : temps de compilation du pattern (#5444)
    • Informations dynamiques :
      • Le type de valorisation des informations dynamiques peut être choisi parmi Constante, Template, Recopie (#5875)
    • Diffusion de messages :
      • Les messages de broadcast peuvent à présent être ciblés sur des vues en particuliers (#5937)
      • Les messages de diffusion peuvent être fermés par l'utilisateur (#5803)
    • Paramètres de stockage :
      • Refonte de la page des paramètres pour plus de clarté et distinction entre actions manuelles et programmées (#5747)
  • Rôles :

    • Le type d'un rôle ne peut à présent plus être modifié (#5848)
    • Les utilisateurs "non admin" ne sont plus en mesure d'affecter le rôle "admin" même si le droit est positionné (#5646)
    • Les utilisateurs avec un rôle "API" uniquement ne peuvent plus se logguer sur l'interface graphique (#5953)
  • Gestion des tags :

    • Une fois crée, le nom d'un tag ne peut plus être modifié (#5850)
  • Scénario / Règles de déclaration de tickets :

    • A présent, lorsque la fin de l'exécution d'un webhook se produit alors que l'alarme est déjà résolue, un step est quand même ajouté (#5949)
  • Consignes :

    • Ajout de la possibilité de ré exécuter des remédiations échouées en fonction d'un trigger (#5876)
    • Ajout de la possibilité de ré exécuter des remédiations échouées (#5877)
  • API :

    • Ajout des attributs maxState et initialstate aux alarmes (#5814)
    • Ajout de la fonction de pagination sur les tags, évitant ainsi des lenteurs sur l'interface dûes à des slow queries en base de données (#5951)
  • Authentification :

    • Oauth2 : Le paramètre insecure_skip_verify n'accepte plus que les certificats valides et auto-signés. Pour accepter tout type de certificat (y compris expirés ou invalides), utilisez désormais insecure_verify_any_cert: true
    • Prise en charge du paramètre AuthStyle pour les authentifications de type oauth2 (#5968)
  • Moteurs :

    • Ajout de la possibilité d'activer et de configurer le service de profiling Go (pprof) sur les moteurs : activation via CPS_DEBUG_WEB_PPROF_ENABLE, choix de l'hôte et du port via CPS_DEBUG_WEB_PPROF_HOST et CPS_DEBUG_WEB_PPROF_PORT (#330).
    • Webhook :
      • Il est à présent possible d'exécuter le même webhook sur plusieurs URL (#5774)
    • FIFO :
      • Ajout d'un mécanisme permettant d'interdir le lancement de plusieurs instances du moteur engine-fifo (#5904)
      • Ajout du flag "cleanUp" au moteur fifo qui permet de déclencher toutes les opérations d'archivage et de suppression du module "Paramètres de stockage" (#4059)
    • Import context graph :
      • Le pattern des services importés peut à présent être composé de plusieurs conditions (#5957)
  • Connecteurs :

    • Exporter Prometheus :
      • De nouvelles métriques sont disponibles : alarmes actives/inactives, messages FIFO par type, entités actives par type et nombre de règles d'instructions (#5853)
  • Documentation :

Corrections de bugs

  • Général :

    • Les permissions de base du répertoire /opt/canopsis/var/lib sont à présent correctement positionnées dans une installation à partir de paquets RPM (#5945)
    • Lors de l'export CSV, les champs de type date sont désormais correctement convertis (y compris ceux issus des infos d'entité), au lieu d'être exportés en timestamp brut (#5677)
  • Interface graphique :

    • Bac à alarmes :
      • Correction du Live Watching : canal WebSocket stabilisé, requêtes de détails corrigées (fin des 500) et logs de diagnostic ajoutés (#5879)
      • Correction de la recherche et de la complétion des méta-alarmes lorsque le nombre d'éléments dépasse 100 (#5871)
    • Filtres d'événements :
      • Correction d'un bug qui empêchait la création d'une règle de filtrage avec des données externes (#5946)
      • Correction d'une erreur survenant lors du changement de type d'action dans le filtre d'événements (#6021)
    • Données externes :
      • Correction d'une erreur survenant lors du redimensionnement des colonnes dans le widget de données externes (#5991)
    • Droits et rôles :
      • La création d'un rôle utilisant un modèle de rôle est à nouveau fonctionnelle (#5941)
      • Correction d'un bug d'alignement des options des droits lorsque ceux-ci sont dépliés (#5900)
      • Correction d'un bug qui rendait inopérante la duplication d'un rôle (#5964)
    • Calendrier :
      • Correction d'un bug qui entrainait un mauvais calcul du nombre d'alarmes sur une case mensuelle (#5892)
    • Remédiation/Consigne :
      • Les étapes d'une remédiation peuvent à nouveau être reordonnées par drag n drop (#5960)
      • Correction d'un bug qui empêchait la saisie d'un pattern (Consigne et Règles de résolution) s'il avait été oublié en première intention (#5961)
      • Correction d'un bug qui empêchait une consigne de s'éxécuter correctement lorsqu'un même job était affecté à plusieurs étapes (#5969)
      • Correction d'un bug qui entrainait le changement de type d'une consigne lorsqu'elle était en attente d'approbation (#5944)
      • La liste des remédiations est maintenant éligible au tri par priorité (#5943)
      • Correction d'un bug où une instruction avec stop_on_fail: true restait bloquée en chargement dans l'UI au lieu d'être marquée comme échouée (#5966)
  • API :

    • Correction d'un bug d'accès aux métriques suite au changement d'heure en France (#6046)
    • Correction d'un bug de la route GET /roles qui renvoyait systématiquement le flag "deletable" alors que certains rôles étaient affectés à des utilisateurs (#5942)
  • Authentification :

    • Correction d'un bug d'authentification SAML (erreur 403 lors de la validation d'assertion) (#6042)
    • Correction de la prise en charge des tableaux imbriqués dans le mapping des attributs OAuth2/OpenID, permettant désormais la récupération de plusieurs rôles (#6031)
  • Moteurs :

    • AXE :
      • Correction d'un bug qui entraînait l'erreur suivante lib/axe/message_processor.go:178","message":"cannot process event" (#5967)
    • Smart-feeder :
      • Correction d'un bug du smart-feeder qui n'utilisait plus les connecteurs listés dans "connectors" à partir d'un certain délai (#5975)