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
}