Aller au contenu

Export d'alarmes au format CSV (Pro)

L'utilitaire export-alarms permet d'exporter des alarmes Canopsis au format CSV via l'API.

Il est conçu pour être exécuté automatiquement (via un ordonnanceur de tâches) afin de produire des exports réguliers destinés à :

  • Du reporting
  • De l'archivage
  • Des traitements externes
  • L'alimentation d'outils de BI

Principe de fonctionnement

export-alarms utilise l'API Canopsis pour :

  1. Créer une tâche d'export d'alarmes
  2. Attendre la génération du fichier
  3. Récupérer les données
  4. Écrire le résultat dans un fichier CSV local

Chaque export est défini dans un fichier de configuration YAML.

Un fichier CSV est généré par export configuré.

Le nom du fichier suit le format :

<label>-<timestamp>.csv

Exemple :

opened-alarms-2026-03-01T12-00-00.csv

Lancement de la commande

L'utilitaire peut être lancé directement :

export-alarms --config /opt/canopsis/share/config/export-alarms/config.yml

Options disponibles :

Option Description
-c, --config Chemin du fichier de configuration
-d, --debug Active le mode debug
--logger Destination des logs (stderr, journald)
-v, --version Affiche la version
-h, --help Affiche l'aide

Configuration

La configuration de l'outil est définie dans un fichier YAML.

Section API

Cette section définit la connexion à l'API Canopsis.

api:
  host: http://localhost:8082
  http_timeout: 5s
  export_timeout: 1m
  username: ""
  password: ""
  insecure_skip_verify: false

Warning

Il est recommandé d'utiliser les variables d'environnement pour les identifiants.

Variables d'environnement supportées :

Variable Description
CPS_API_USERNAME Identifiant API
CPS_API_PASSWORD Mot de passe API
CPS_API_URL URL de l'API (surcharge api.host)
CPS_API_HTTP_TIMEOUT Timeout HTTP (surcharge api.http_timeout)
CPS_API_EXPORT_TIMEOUT Timeout export (surcharge api.export_timeout)
CPS_API_INSECURE_SKIP_VERIFY Désactive la vérification TLS du certificat serveur

Section CSV

Cette section configure la génération des fichiers CSV.

csv:
  separator: comma
  dir: /tmp/cps/export
  time_format: "YYYY-MM-DDThh:mm:ss"

Paramètres disponibles :

Paramètre Description
separator Séparateur CSV (comma, semicolon, tab, space)
dir Répertoire de sortie
time_format Format des dates dans le CSV

Définition des exports

Les exports sont définis dans la clé exports, imbriquée dans la section csv.

Chaque export correspond à un fichier CSV généré.

Exemple :

csv:
  separator: comma
  dir: /tmp/cps/export
  time_format: "YYYY-MM-DDThh:mm:ss"

  exports:
    - label: newest
      open: true
      interval: 15m
      time_field: v.creation_date

      fields:
        - name: v.display_name
          label: Display name
        - name: v.state.val
          label: State
        - name: v.output
          label: Output
        - name: v.creation_date
          label: Creation

Paramètres disponibles :

Paramètre Description
label Préfixe du nom du fichier
open true = alarmes ouvertes, false = alarmes résolues
interval Fenêtre temporelle (15m, 1h, 1d, 1w, 1M, 6M)
time_field Champ utilisé pour le filtrage temporel
fields Liste des colonnes exportées

Exemple : export des alarmes résolues

- label: last_resolved
  open: false
  interval: 15m
  time_field: v.resolved

  fields:
    - name: v.display_name
      label: Display name
    - name: v.state.val
      label: State
    - name: v.output
      label: Output
    - name: v.creation_date
      label: Creation
    - name: v.resolved
      label: Resolved
    - name: v.duration
      label: Duration

Filtres avancés

Les filtres avancés utilisent le langage de patterns Canopsis, qui permet de définir des règles de filtrage sur les alarmes, les entités ou les comportements périodiques.

Ce langage repose sur une structure de conditions combinées avec des opérateurs logiques (ET / OU) appliquées sur les différents attributs des objets Canopsis.

La description complète du langage, des champs disponibles et des types de conditions est disponible dans la page suivante :

Langage des filtres et patterns

Note

Les filtres (alarm_pattern, entity_pattern, pbehavior_pattern, search) sont définis par export. Ils ne s'appliquent pas à tous les exports du fichier de configuration.

Alarm pattern

alarm_pattern:
  - - field: v.state.val
      cond:
        type: eq
        value: 3

Entity pattern

entity_pattern:
  - - field: type
      cond:
        type: eq
        value: resource

Pbehavior pattern

pbehavior_pattern:
  - - field: pbehavior_info.canonical_type
      cond:
        type: eq
        value: active

Recherche texte

search: "database"

Gestion des fichiers

L'utilitaire ne gère pas la rotation ni la suppression des fichiers générés.

La gestion de la rétention doit être assurée par :

  • Un script externe
  • Un cron dédié
  • Un outil de gestion de fichiers

Exécution

RPM

Si vous avez installé Canopsis via les paquets RPM, l'outil export-alarms est disponible directement sous forme de binaire.

Un fichier d'exemple de configuration est fourni dans le paquet (/opt/canopsis/share/config/export-alarms/config.yml.example).

Copiez-le en /opt/canopsis/share/config/export-alarms/config.yml et adaptez-le à vos besoins.

Important

Assurez-vous que le répertoire de destination existe (par défaut /tmp/export-alarms). Dans le cas contraire, le créer.

Exécution manuelle

Pour lancer l'export manuellement, utilisez la commande suivante :

/opt/canopsis/bin/export-alarms

Si l'exécution réussit, les fichiers CSV seront générés dans le répertoire configuré (par défaut /tmp/export-alarms).

Exécution automatique

Pour automatiser l'export, vous pouvez utiliser cron ou tout autre ordonnanceur de tâches afin d'exécuter la commande à intervalles réguliers.

Par exemple, pour planifier un export quotidien à 8h00 via un fichier crontab :

cat <<EOF > /etc/cron.d/export-alarms
0 8 * * * root /opt/canopsis/bin/export-alarms
EOF

Info

Les fichiers seront créés en root, pensez à adapter les permissions ou à exécuter la commande avec un utilisateur spécifique si nécessaire.

Docker

Dans votre fichier docker-compose.override.yml, une section export-alarms est normalement préconfigurée comme suit :

export-alarms:
  <<: *initial_config_base
  user: "${UID}:${GID}"
  profiles:
    - support
  image: ${DOCKER_REPOSITORY}${CPS_EDITION}/export-alarms:${CANOPSIS_IMAGE_TAG}
  volumes:
    - ./files-pro/export-alarms/csv:/tmp/export-alarms
    - ./files-pro/export-alarms/config.yml:/opt/canopsis/share/config/export-alarms/config.yml
  command: /export-alarms

Exécution manuelle

Pour lancer le conteneur manuellement, exécutez la commande suivante :

docker compose --profile support up export-alarms -d

Une fois le service démarré, les fichiers CSV seront générés dans le répertoire hôte configuré, ici ./files-pro/export-alarms/csv.

Exécution automatique

Pour automatiser cette tâche, vous pouvez configurer un cron sur l'hôte pour piloter le conteneur Docker.

Exemple pour un export quotidien à 8h00 (pensez à adapter le chemin vers votre projet Canopsis) :

cat <<EOF > /etc/cron.d/export-alarms
0 8 * * * root cd /opt/canopsis && docker compose --profile support up export-alarms --force-recreate
EOF

Helm

Lors d'une installation via Helm, le service export-alarms est géré nativement via un CronJob Kubernetes. Il n'y a pas d'exécution manuelle directe ; l'outil est conçu pour fonctionner de manière planifiée.

Configuration de l'automatisation

Pour activer et planifier l'export, modifiez ou surchargez votre fichier values.yaml :

exportAlarms:
  enabled: true
  schedule: "0 8 * * *" # à adapter selon la fréquence souhaitée
  storageClassName: "" # à renseigner pour persister et récupérer les CSV sur un volume partagé

Important

Avant le déploiement, assurez-vous que la configuration de l'outil est correctement définie dans votre config.yml ou via un ConfigMap dédié.

Dépannage

Problème Cause probable Solution
job status=failed avec un intervalle long (1M, 6M) sur un volume élevé d'alarmes Timeout MongoDB dépassé lors de la génération de l'export Augmenter export_timeout dans la section api du fichier de configuration (ex. 3m ou plus). Si insuffisant, augmenter également ExportMongoClientTimeout dans la configuration de l'API Canopsis ([Canopsis.api] du fichier TOML).
Erreur d'accès en écriture sur le répertoire de sortie (Docker) Le répertoire monté appartient à root Ajouter user: "${UID}:${GID}" dans le service Docker Compose