Gestion des exclusions de timeperiods

Gabès Jean ( 06 Jan 2010 ) blog Talk /

Et bien après une bataille qui avait des air de guerre épique, j'ai mis en place les exclusions de timeperiods.

Après une première version un peu ... bourrine, une nouvelle arrive qui passe les tests et qui en plus est rapide.

Cette partie du code n'est pas celle que je préfère, car il faut dire que les problèmes des dates et de calcul d'intervalle, c'est touffu, surtout lorsque l'intervalle ressemble à 'monday 3 - thursday 4 00:00-11:00,12:00-24:00' (soit entre le troisième lundi du mois et le 4ième jeudi).

Et puis le plus marrant dans ces définitions, c'est que c'est relatif par rapport au moment où vous calculer...

Mine de rien, c'est sûrement la partie la plus complexe de l'outil.

NOTE 2021: 12 ans après, je suis encore avec ça, c'est clairement ce qui m'a demandé le plus de taf et d'algorithmes

Bon je ne vais pas me plaindre, le module time de python a bien aidé. Bref, vous pouvez faire une déclaration du genre :

define timeperiod{
   timeperiod_name                 24x7
   alias                           24_Hours_A_Day,_7_Days_A_Week
   sunday                          00:00-24:00
   monday                          00:00-24:00
   tuesday                         00:00-24:00
   wednesday                               00:00-24:00
   thursday                                00:00-24:00
   friday                          00:00-24:00
   saturday                                00:00-24:00
   exclude                         workhours
}
# 'workhours' timeperiod definition
define timeperiod{
   timeperiod_name workhours
   alias           Normal Work Hours
   monday          09:00-17:00
   tuesday         09:00-17:00
   wednesday       09:00-17:00
   thursday        09:00-17:00
   friday          09:00-17:00
}

Donc ici 24x7 sera sans les workhours (bon bah c'est un exemple hein, à vous de trouver quelque chose de plus utile....).

Donc un check en 24x7 voulant être lancé vers 10h le sera à 17h en fait. Ceci gère aussi si les timeperiods dans exclude ont elles même des exclude bien sûr.

NOTE 2021: vous savez c'est quoi le pire: quelques années après, je me suis apperçu qu'en fait Nagios ne gérait pas du tout ça...

Archives