canopsis

Node communautaire n8n pour l'hypervision Canopsis (événements, alarmes, pbehaviors, entités)

Package Information

Released: 3 mo ago
Downloads: 0 weekly / 0 monthly
Latest Version: 1.0.0
Author: Capensis

Documentation

n8n-nodes-canopsis

Node communautaire n8n pour l'hypervision Canopsis.
Fournit deux nodes :

  • Canopsis - node d'action pour piloter les alarmes, entités, événements et pbehaviors.
  • Canopsis Trigger - node déclencheur qui s'abonne automatiquement aux événements Canopsis via un scénario webhook (édition Pro requise).

Installation

Le projet embarque son propre Dockerfile et docker-compose.yml. La commande habituelle suffit :

docker compose build
docker compose up -d

n8n démarre avec la variable N8N_CUSTOM_EXTENSIONS=/opt/n8n-custom, ce qui lui fait charger le node sans passer par le registre de packages communautaires.

Mise à jour

Après toute modification du code source :

docker compose build --no-cache
docker compose up -d

Authentification - Credential "Canopsis API"

Créer un credential de type Canopsis API avec les champs suivants :

Champ Description
Base URL Racine de l'instance, sans /api/v4 (ex : https://canopsis.example.com)
Auth Type Méthode d'authentification (voir ci-dessous)
Ignore SSL Issues Cocher pour les instances avec certificat auto-signé

Méthodes d'authentification

API Key - méthode recommandée

Sélectionner API Key et renseigner la clé. Elle est transmise dans l'en-tête HTTP x-canopsis-authkey à chaque requête.
La clé se génère dans Canopsis : Profil -> Auth key.

Basic Auth

Sélectionner Basic Auth et renseigner username / password.

Node Canopsis - actions disponibles

Alarm

Action Appel API Description
Get Many GET /api/v4/alarms Liste les alarmes avec pagination automatique. Filtres : search, opened, paramètres libres en JSON.
Acknowledge PUT /api/v4/alarms/{id}/ack Acquitte une alarme. Option : acquitter aussi les ressources du composant.
Add Comment PUT /api/v4/alarms/{id}/comment Ajoute un commentaire à une alarme.
Snooze PUT /api/v4/alarms/{id}/snooze Met en veille une alarme pour une durée (valeur + unité : s, m, h, d, w, M, y).
Associate Ticket PUT /api/v4/alarms/{id}/assocticket Associe un ticket (numéro, URL, système tiers, données libres).
Ack Remove PUT /api/v4/alarms/{id}/ackremove Retire l'acquittement d'une alarme.
Cancel PUT /api/v4/alarms/{id}/cancel Annule une alarme.
Uncancel PUT /api/v4/alarms/{id}/uncancel Restaure une alarme annulée.
Change State PUT /api/v4/alarms/{id}/changestate Modifie le criticité (0 OK, 1 Minor, 2 Major, 3 Critical).
Remove Ticket PUT /api/v4/alarms/{id}/ticketremove Retire le ticket associé à une alarme.

Pour les actions sur alarme, le champ Alarm ID attend le _id retourné par Get Many. Utiliser l'expression {{ $json._id }} pour le mapper depuis un node précédent.

Entity

Opération Appel API Description
Get Many GET /api/v4/entities Liste les entités avec pagination automatique. Filtres : search, paramètres libres en JSON.

Event

Opération Appel API Description
Send POST /api/v4/event Envoie un événement check. Champs requis : Connector, Connector Name, Source Type, Component, State. Champs optionnels : Resource, Output, Long Output, Timestamp, champs libres en JSON.

Pbehavior

Opération Appel API Description
Create POST /api/v4/pbehaviors Crée une période de comportement. Champs requis : Name, Start Date, End Date, Type UUID. Optionnel : Reason UUID, RRule iCal, Entity Pattern.
Get Many GET /api/v4/pbehaviors Liste les pbehaviors avec pagination automatique.
Update PUT /api/v4/pbehaviors/{id} Remplace entièrement un pbehavior (PUT complet). Corps JSON à fournir.
Delete DELETE /api/v4/pbehaviors/{id} Supprime un pbehavior.

Node Canopsis Trigger

Nécessite l'édition Pro de Canopsis (API Scénarios).

Ce node se comporte comme un déclencheur n8n classique avec auto-wiring :

  • À l'activation du workflow : crée automatiquement un scénario dans Canopsis (POST /api/v4/scenarios) qui pointe vers le webhook n8n.
  • À la désactivation : supprime le scénario (DELETE /api/v4/scenarios/{id}).
  • À la réactivation : vérifie d'abord l'existence du scénario (GET /api/v4/scenarios/{id}) avant d'en créer un nouveau — idempotent.

L'identifiant du scénario est déterministe : n8n-wf-{workflowId}, ce qui évite les doublons.

Paramètres

Paramètre Description
Trigger Events Événements Canopsis à surveiller (multi-sélection). Voir liste ci-dessous.
Go Payload Template Template Go envoyé par Canopsis dans le corps du webhook. {{ . | json_unquote }} est un bon début
HTTP Headers Headers du webhook. Content-Type: application/json pré-rempli. Supports : Accept, Authorization, Content-Type (avec liste de MIME types), ou header personnalisé.
Options -> Priority Priorité du scénario Canopsis (0 = la plus haute).
Options -> Alarm Pattern Filtre JSON sur les alarmes au format OR/AND Canopsis.
Options -> Entity Pattern Filtre JSON sur les entités au format OR/AND Canopsis.
Options -> Skip TLS Verification Désactive la vérification du certificat TLS du webhook n8n.

Événements disponibles

Valeur Description
create Alarme créée
resolve Alarme résolue
activate Alarme activée
stateinc Criticité augmentée
statedec Criticité diminuée
changestate Criticité modifiée manuellement
ack Acquittement posé
ackremove Acquittement retiré
cancel Alarme annulée
uncancel Annulation levée
comment Commentaire ajouté
assocticket Ticket associé
snooze Alarme mise en veille
unsnooze Veille levée
pbhenter Entrée dans un pbehavior
pbhleave Sortie d'un pbehavior

Variables Go template (payload)

{{ .Alarm.ID }}                   - identifiant de l'alarme
{{ .Alarm.Value.Component }}      - composant
{{ .Alarm.Value.Resource }}       - ressource
{{ .Alarm.Value.State.Value }}    - criticité (0/1/2/3)
{{ .TriggerType }}                - type d'événement déclencheur
{{ . }}                           - contexte complet (alarme + entité)

Exemple de payload personnalisé

{
  "alarm_id": "{{ .Alarm.ID }}",
  "component": "{{ .Alarm.Value.Component }}",
  "resource": "{{ .Alarm.Value.Resource }}",
  "state": "{{ .Alarm.Value.State.Value }}",
  "trigger": "{{ .Trigger }}"
}

Exemple de filtre Alarm Pattern

[[{"field": "v.display_name", "cond": {"type": "regexp", "value": ".+"}}]]

Développement

npm install
npm run build      # compile TypeScript + copie les icônes dans dist/

Le build est exécuté automatiquement par le Dockerfile (stage builder). Il n'est pas nécessaire de builder localement avant un docker compose build.

Discussion