Aller au contenu

Données externes

Définition

Les règles de filtrage d'événements permettent d'enrichir les alarmes ainsi que les entités sur lesquelles portent les alarmes depuis une source de données externes.

La fonctionnalité "Données externes" permet de gérer ces données depuis l'interface graphique.

données externes description

Gérer les sources de données

Ajouter une source de données externes depuis l'interface graphique

Les données externes peuvent être stockées dans MongoDB (collection) ou dans PostgreSQL (table).

Lorsque vous ajoutez une source, vous pouvez saisir les éléments suivants :

Paramètre Description
Base de données Type de base de données à utiliser : MongoDB ou PostgreSQL
Nom Nom de la source de données externes
Description Description de la source de données externes

Information

Les tables PostgreSQL sont ajoutées dans le schéma externaldata.
Les commandes suivantes permettent de lister les schémas et vous positionner dans le schéma adéquat :

canopsis=> \dn
               List of schemas
           Name           |       Owner       
--------------------------+-------------------
 _timescaledb_cache       | postgres
 _timescaledb_catalog     | postgres
 _timescaledb_config      | postgres
 _timescaledb_debug       | postgres
 _timescaledb_functions   | postgres
 _timescaledb_internal    | postgres
 externaldata             | cpspostgres
 public                   | pg_database_owner
 timescaledb_experimental | postgres
 timescaledb_information  | postgres
(10 rows)

canopsis=> set schema 'externaldata';

Ajouter une source de données externes depuis le fichier de configuration toml

Si vous avez déjà mis en oeuvre des collections de données et que vous souhaitez les manipuler dans l'interface de Canopsis, vous devez les renseigner dans le fichier de configuration canopsis.toml

Par exemple, si vous souhaitez gérer les collections HNO et Consignes, veuillez renseigner la section Canopsis.external_data comme ceci :

[Canopsis.external_data]
Collections = ["HNO", "Consignes"]

Information

Un lancement de la commande "canopsis-reconfigure" est nécessaire pour la prise en compte de tout changement.
Exécuter canopsis-reconfigure

Importer des données

Une fois la source de données externes créée, vous pouvez importer des données depuis un fichier CSV.
Lorsque le fichier CSV a été sélectionné, vous aurez accès à une pré visualisation des données sous forme de colonnes.

données externes import

Au moment de l'import, l'interface vous propose de "typer" les colonnes du fichier csv.
Les types pris en charge sont les suivants :

Type Description
Chaîne de caractères Valeur texte libre stockée telle quelle. A utiliser pour des champs "simples" (ex. component, team). Si vous avez besoin de motifs, utilisez plutôt Expression régulière
Booléen Valeur logique true / false (insensible à la casse), prend aussi en charge : yes/no, y/n, oui/non, 1/0. Souvent utilisée pour hno, escalade
Nombre Valeur numérique (entier ou décimal). Le séparateur de milliers peut être configuré (ex. 1500, 1 500, 12.34)
Tableau Permet de stocker plusieurs valeurs dans un même champ. Deux modes sont disponibles lors de l'import :
1. JSON ([v1, v2, v3]): la liste est parsée telle quelle
2. Analyse par séparateur : les valeurs sont extraites d'une chaîne délimitée (v1,v2,v3, v1;v2;v3, etc.) selon le séparateur choisi.
Exemple : "Dev,Ops,QA" devient ["Dev", "Ops", "QA"]"
Date/heure Représente une date et une heure normalisées. Les valeurs doivent respecter l'un des formats suivants :
  • 1990-12-31T00:00:00.000Z
  • 1990-12-31T00:00:00:00:00
  • 1990-12-31T00:00:00Z
  • 1990-12-31T00:00:00+00:00
Horodatage Timestamp (généralement epoch en secondes)
Expression régulière Expression régulière normalisée. Une colonne calculée "priority" est ajoutée automatiquement si au moins une colonne est de type "Expression régulière"

Expressions régulières et calcul automatique de la priorité

Principe général

Lorsqu'une ou plusieurs colonnes sont typées Expression régulière (regexp), Canopsis :
1. Interprète chaque valeur comme une expression régulière, qu'elle contienne ou non des symboles spéciaux.
2. Normalise automatiquement les motifs (^ ajouté au début, $ à la fin, sauf pour .).
3.
Évalue leur "spécificité" pour calculer une priorité automatique (priority) par ligne.
4. Cette priorité peut ensuite être utilisée dans les règles d'enrichissement (sort_by: priority, sort: desc) pour faire ressortir
l'enregistrement le plus précis*.

Règle de calcul de la priorité

Chaque valeur de colonne regexp reçoit un score selon son niveau de précision :

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

Conclusion

La priorité d’une ligne correspond à la somme des scores de toutes les colonnes regexp.

Normalisation automatique des motifs

Canopsis applique une normalisation avant l'évaluation :

Entrée originale Normalisation appliquée Interprétation
SUBSTR ^SUBSTR$ correspondance exacte
SUBSTR$ SUBSTR$ ancré en fin
^SUBSTR ^SUBSTR ancré en début
.*SUBSTR ^.*SUBSTR$ motif général
.SUBSTR. ^.SUBSTR.$ motif général (le plus large)
.* .* motif passe-partout (score 0)

Ainsi, tout texte est traité comme une expression régulière, même s’il n’en contient pas.

Gestion des caractères spéciaux

Certains caractères ont un sens particulier en regex : [ ] ( ) { } . * + ? ^ $ \ |

  • Si vous souhaitez les utiliser littéralement, échappez-les avec un antislash.
    Exemple :

    • Valeur littérale souhaitée : [ABC]
    • A saisir dans le CSV : \[ABC\]
  • Si la valeur contient une erreur de syntaxe (regex invalide, parenthèse non fermée, \ manquant...), elle est traitée comme texte exact, sans avertissement dans les logs.

Responsabilité du traitement

Étape Responsable Détails
Ajout automatique de ^ et $ Canopsis API Fait automatiquement côté serveur.
Calcul du score de priorité Canopsis API Automatique lors de la prévisualisation
Échappement des caractères spéciaux ([ABC]) Utilisateur Le fichier CSV doit déjà contenir les antislashs nécessaires.

Exemple concret

A partir de ce fichier CSV :

component,resource,message,localisation,hno,escalade,severity,team
database,DB-Connections,Too many connections to the database,Sarahhaven,False,True,critical,(Dev|Ops)
webserver,CPU,Failed to connect to database user_db,New Williamburgh,True,False,critical,DevOps
cache,Disk,Service is unreachable,South Nicole,False,True,high,Support
loadbalancer,Net.*,Connection timed out for host api.internal,Lake Cody,True,False,critical,Network

Le traitement effectué par Canopsis (valeurs regexp normalisées et priorités calculées) est le suivant :

component resource (normalisé) message (normalisé) priority severity team
database ^DB-Connections$ ^Too many connections to the database$ 6 critical (Dev
webserver ^CPU$ ^Failed to connect to database user_db$ 6 critical DevOps
cache ^Disk$ ^Service is unreachable$ 6 high Support
loadbalancer ^Net.*$ ^Connection timed out for host api.internal$ 4 critical Network

Gérer les enregistrements

Dès lors qu'un import de données a été réalisé, vous pouvez effectuer les opérations suivantes sur chaque enregistrement :

  • Editer
  • Supprimer
  • Dupliquer

Vous pouvez également importer de nouveaux enregistrements et/ou insérer un enregistrement "manuellement" depuis l'interface graphique.

Pour rappel, ces tables ont vocation a être utilisées dans des règles d'enrichissement à 2 niveaux :

  1. Comme un filtre permettant de sélectionner un enregistrement : données externes filter

  2. Comme une information enrichie : données externes action

Pour faciliter la visualisation ainsi que la destination des données, l'interface propose de définir les colonnes comme étant destinées au Filtre ou Contexte selon la situation.

données externes type

Widget "Données externes"

L'interface de Canopsis met à disposition un Widget Données externes qui permet aux utilisateurs de consulter et de manipuler les données qui servent aux enrichissements externes.