Action

Le moteur action permet de déclencher conditionnellement des actions sur des alarmes.

Les actions sont définies dans la collection MongoDB default_action, et peuvent être ajoutées et modifiées avec l'API Action.

Utilisation

En édition core, la file du moteur est placée juste après le moteur Axe.

En édition CAT, la file du moteur est placée juste après le moteur Webhook.

Note

Depuis la version 3.39.0, les actions ack, ackremove, assocticket, declareticket, et cancel sont disponibles.
Par ailleurs il existe aussi la possibilité de déclencher les actions après un délai paramétré

Options de l'engine-action

  -d    debug
  -version
      version infos

Fonctionnement

Types d'action

Les types d'actions disponibles sont :

  • changestate, qui correspond à un évènement changestate : change et verrouille l'état de l'alarme dans une criticité donnée jusqu'à sa résolution
  • pbehavior : pose un PBehavior
  • snooze, qui correspond à un évènement snooze : pose un snooze automatique sur l'alarme
  • ack, qui correspond à un événement ack : pose un acquittement sur l'alarme
  • ackremove, qui correspond à un événement ackremove : supprime l'acquittement sur l'alarme
  • assocticket, qui correspond à un événement assocticket : associe un ticket à l'alarme
  • declareticket, qui correspond à un événement declareticket : déclarer un ticket pour l'alarme
  • cancel, qui correspond à un événement ackremove : annule l'alarme

Paramètres généraux

Une action est composée d'un JSON contenant les paramètres suivants :

{
"_id"        // identifiant de l'action , optionnel, s'il n'est pas fourni par l'utilisateur il sera généré automatiquement - le champ est de type `string`
"type"       // type du pbehavior (`changestate`, `pbehavior` ou `snooze`), obligatoire - le champ est de type `string`
"hook"       // conditions sur les champs des alarmes (`alarm_patterns`), des entités (`entity_patterns`) ou des évènements (`event_patterns`) dans lesquelles l'action doit être appelée, optionnel
"triggers"   // conditions de déclenchement sur la vie de l'alarme, si plusieurs triggers sont indiqués, au moins un de ces triggers doit avoir eu lieu pour que l'action soit appelée
"parameters" // paramétrage spécifique à chaque type d'action.
"delay"     // délai avant l'exécution de l'action 
}

Attention

Les triggers declareticketwebhook, resolve et unsnooze n'étant pas déclenchés par des évènements, ils ne sont pas utilisables avec les event_patterns.

Paramètres spécifiques

Changestate

{
"state":   // état dans lequel sera verrouillée l'alarme (0 - INFO, 1 - MINOR, 2 - MAJOR, 3 - CRITICAL), le champ est de type `integer`
"output":  // commentaire du changestate, optionnel - le champ est de type `string`
"author":  // auteur du changestate, optionnel - le champ est de type `string`
}

PBehavior

{
"rrule":     // règle de récurrence pour le pbehavior, optionnel - le champ est de type `string`
"enabled":   // détermine si le pbehavior est actif ou non, obligatoire - le champ est de type `boolean`
"author":    // auteur du pbehavior, obligatoire - le champ est de type `string`
"name":      // nom du pbehavior, obligatoire - le champ est de type `string`
"tstart":    // date de début du pbehavior, obligatoire - le champ est de type `integer` en UNIX timestamp
"tstop":     // date de fin du pbehavior, obligatoire - le champ est de type `integer` en UNIX timestamp
"type_":     // type du pbehavior, obligatoire - le champ est de type `string`
"reason":    // raison du pbehavior, obligatoire - le champ est de type `string`
"timezone":  // timezone du pbehavior, optionnel - le champ est de type `string`
"comments":  // commentaire du pbehavior, optionnel - le champ est de type `array`
[{           // début de l'array du commentaire
"author":  // auteur du commentaire, optionnel - le champ est de type `string`
"message": // commentaire du pbehavior, optionnel - le champ est de type `string`
}],
"exdate": []   // date d'expiration, peut être composé de plusieurs valeurs, optionnel - le champ est de type integer` en UNIX timestamp
}

Snooze

{
"message":   // commentaire du snooze, optionnel - le champ est de type `string`
"duration":  // durée du snooze en secondes, optionnel - le champ est de type `number`
"author":    // auteur du snooze, optionnel - le champ est de type `string`
}

Ack

{
"output":   // commentaire de l'ack, optionnel - le champ est de type `string`
"author":    // auteur de l'ack, optionnel - le champ est de type `string`
}

Ackremove

{
"output":   // commentaire de la suppression de l'ack, optionnel - le champ est de type `string`
"author":    // auteur de la suppression de l'ack, optionnel - le champ est de type `string`
}

Assocticket

{
"output":   // commentaire de l'association de ticket, optionnel - le champ est de type `string`
"author":    // auteur de l'association de ticket, optionnel - le champ est de type `string`
}

Declareticket

{
"output":   // commentaire de la déclaration de ticket, optionnel - le champ est de type `string`
"author":    // auteur de la déclaration de ticket, optionnel - le champ est de type `string`
}

Cancel

{
"output":   // commentaire de l'annulation de l'alarme, optionnel - le champ est de type `string`
"author":    // auteur de l'annulation de l'alarme, optionnel - le champ est de type `string`
}

Collection

Les actions sont stockées dans la collection MongoDB default_action (voir API Action pour la création d'actions). Le champ type de l'objet définit le type d'action. Par exemple, avec un pbehavior, le champ type vaut pbehavior :

{
    "_id" : "xyz",
    "type": "pbehavior",
    "hook": {
        "event_patterns": [
            {
                "resource": "CPU_2"
            },
            {
                "resource": "HDD_2"
            }
        ],
        "triggers": [
            "create"
        ]
    },
    "delay" : "1m",
    "parameters" : {
        "author" : "whalefact",
        "name" : "Big",
        "reason" : "Most whales are legally unemployed",
        "type" : "Pause",
        "rrule" : "",
        "tstart" : 0,
        "tstop" : 253402297199,
    }
}

Un exemple d'action concernant le snooze automatique (le type d'action est donc snooze). Il a lieu à la création de l'alarme et si le champ resource de l'évènement contient les termes CPU ou HDD.

Dans les parameters, on définit la durée du snooze (600 secondes, soit 10 minutes dans cet exemple), l'auteur et le message accompagnant le snooze.

{
    "_id": "temporisation-10m",
    "type": "snooze",
    "hook": {
        "event_patterns": [{
                "resource": {
                    "regex_match": "CPU"
                }
            },
            {
                "resource": {
                    "regex_match": "HDD"
                }
            }
        ],
        "triggers": [
            "create"
        ]
    },
    "parameters": {
        "author": "action",
        "message": "Temporisation de l'alarme pendant 10 minutes",
        "duration": 600
    }
}

Dernière mise à jour: 2020-03-17