Moteur pbehavior (Python, Core)¶
Les comportements périodiques (pbehaviors, pour periodical behaviors) sont des évènements de calendrier récurrents qui permettent de mettre en pause la surveillance d'une alarme pendant une période donnée (pour des maintenances ou des astreintes, par exemple).
Ils permettent de créer des « downtimes », à savoir indiquer qu'une entité est en pause.
Les comportements sont définis dans la collection MongoDB default_pbehavior, et peuvent être ajoutés et modifiés avec l'API PBehavior.
Fonctionnement¶
Ce moteur doit toujours être présent, que vous utilisiez des moteurs Go ou non.
Un comportement périodique contient un filtre (filter) qui est appliqué sur une entité.
Chaque minute, le moteur calcule les comportements périodiques et leur application sur les entités.
Définition d'un comportement périodique¶
Un comportement périodique se caractérise par les informations suivantes.
| Champ | Type | Description | |
|---|---|---|---|
_id |
string | Identifiant unique du comportement, généré par MongoDB lui-même. | |
eids |
liste | Liste d'identifiants d'entité qui correspond au filtre précédent. | |
name |
string | Type de comportement périodique. downtime est la seule valeur acceptée. |
|
author |
string | Auteur ou application ayant créé le comportement périodique. | |
enabled |
bool | Activer ou désactiver le pbehavior, pour qu’il puisse être ignoré, même sur une plage active. | |
comments |
liste | null ou une liste de commentaires. |
|
rrule |
string | Règle de récurrence, champ texte défini par la RFC 2445. | |
tstart |
int | Timestamp fournissant la date de départ, recalculée à partir de la rrule si présente. |
|
tstop |
int | Timestamp fournissant la date de fin, recalculée à partir de la rrule si présente. |
|
type_ |
string | Optionnel. Type de comportement périodique (pause, maintenance…). | |
reason |
string | Optionnel. Raison pour laquelle ce comportement périodique a été posé. | |
timezone |
string | Fuseau horaire dans lequel le comportement périodique doit s'exécuter. | |
exdate |
array | La liste des occurrences à ignorer sous forme de timestamps |
Un exemple d'évènement pbehavior brut :
{
"_id" : string,
"name" : string,
"filter" : string,
"comments" : [ {
"_id": string,
"author": string,
"ts": timestamp,
"message": string
} ],
"tstart" : timestamp,
"tstop" : timestamp,
"rrule" : string,
"enabled" : boolean,
"eids" : [ ],
"connector" : string,
"connector_name" : string,
"author" : string,
"timezone" : string,
"exdate" : [
timestamp
]
}
Filtrage d'entités (filter)¶
Le champ filter permet de filtrer les entités sur lesquelles le comportement périodique est appliqué.
Il peut prendre en charge les conditions or et and mais nécessite de les échapper.
Exemple :
{
"author": "root",
"name": "Pbehavior test 2",
"tstart": 1567439123,
"tstop": 1569599100,
"filter": {
"$or": [{
"impact": {
"$in": ["pbehavior_test_1"]
}
}, {
"$and": [{
"type": "component"
}, {
"name": "pbehavior_test_1"
}]
}]
},
"type_": "Hors plage horaire de surveillance",
"reason": "Problème d'habilitation",
"rrule": null,
"comments": [],
"exdate": []
}
C'est un filtre appliqué directement sur les champs des entités contenues dans la collection default_entities de MongoDB.
Règles de récurrence (rrule)¶
C'est une règle de récurrence du comportement périodique.
Dans le cas où la rrule est absente, tstart et tstop font office de plage d’activation, sans récurrence.
Dans le cas où la rrule est présente, tstart et tstop seront recalculés afin de refléter la récurrence.
Dates d'exclusion (exdate)¶
Il est possible d'empêcher l'exécution d'une occurrence d'un comportement périodique, à l'aide du champ exdate.
exdate est une liste de timestamps correspondant au début d'une occurence à empêcher.
Fuseau horaire (timezone)¶
L'exécution de chaque comportement périodique se fait dans un fuseau horaire particulier.
Lorsqu'un comportement périodique ne contient pas de champ timezone, le fuseau utilisé sera celui défini dans le fichier /opt/canopsis/etc/pbehavior/manager.conf sous le champ default_timezone.
Si le fichier de configuration n'existe pas ou si le champ default_timezone n'existe pas, le fuseau Europe/Paris sera utilisé.
Si le fuseau horaire choisi comporte des heures d'hiver et d'été, celles-ci seront respectées tout au long de l'année. Ainsi, un comportement périodique devant se déclencher à 16 heures s'exécutera à 16 heures en heure d'été et à 16 heures en heure d'hiver.
Collection MongoDB associée¶
Les comportements périodiques sont stockés dans la collection MongoDB default_pbehavior (voir API PBehavior).
Un exemple de comportement périodique appliqué pour une plage de maintenance sans rrule avec la raison Problème d'habilitation et le type Maintenance aux alarmes dont le composant est pbehavior_test_1.
{
"_id" : "145331d4-d536-4c58-8e6d-229d5d8f3f10",
"filter" : "{\"$or\": [{\"impact\": {\"$in\": [\"pbehavior_test_1\"]}}, {\"$and\": [{\"type\": \"component\"}, {\"name\": \"pbehavior_test_1\"}]}]}",
"name" : "Pbehavior test 2",
"author" : "root",
"enabled" : true,
"type_" : "Hors plage horaire de surveillance",
"comments" : [],
"connector" : "canopsis",
"reason" : "Problème d'habilitation",
"connector_name" : "canopsis",
"eids" : [
"pbehavior_test_1",
"disk2/pbehavior_test_1"
],
"tstart" : 1567439123,
"tstop" : 1569599100,
"timezone" : "Europe/Paris",
"exdate" : [],
"rrule" : null
}