Nagios 3 était attendu. Il est disponible depuis le jeudi 13 mars 2008. Certains avaient évoqué la fin décembre 2007 comme date de disponibilité. Il aura fallut 5 versions alpha, 7 versions béta et 3 RC. À titre de comparaison, la version 2 est née après 6 betas et 2 RC. Sera-t'elle plus stable que la version 2.0?

L'une des avancées les plus importantes est la gestion des exceptions lors de la définition des périodes temporelles. Jusqu'à maintenant, il n'était pas possible de configurer une période temporelle évoquant "le premier dimanche du mois". Par exemple, si un service applicatif est arrêté pendant 3 heures, tous les 1er dimanche de chaque mois pour une sauvegarde à froid, il faut prendre ce paramètre en compte dans la supervision. Avec la version 2, ce cas n'était pas possible. Du moins pas simplement. Il était possible de programmer des DOWNTIME récurrents mais ce n'était pas évident. Dans cette version 3, c'est géré.

define timeperiod{
  timeperiod_name     Mysql-servers-check
  alias               Check period of MySQL servers
  sunday 1            00:00-03:00,06:00-24
  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
}

Et voilà! Dans cette période temporelle, j'ai défini les heures de test de MySQL. MySQL sera donc testé tous les jours, de 00h00 à 23h59:59 sauf le premier dimanche du mois (3e ligne de la définition). Magique non? Cela apporte en effet une grande fonctionnalité à Nagios. Oui mais... les congés des équipes? Comment sont-ils gérés?

Les congés n'étaient pas gérés dans la version 2. Mais ils le sont dans cette version 3. Un exemple?

define timeperiod{
  timeperiod_name     team1
  alias               Notification period of Team #1
  monday              07:00-16:00
  tuesday             07:00-16:00
  wednesday           07:00-16:00
  thursday            07:00-16:00
  friday              07:00-16:00
  saturday        
  sunday                  
  2008-07-21 - 2008-08-01 
}


define timeperiod{
  timeperiod_name     team2
  alias               Notification period of Team #2
  monday              11:00-20:00
  tuesday             11:00-20:00
  wednesday           11:00-20:00
  thursday            11:00-20:00
  friday              11:00-20:00
  saturday        
  sunday                  
  2008-08-04 - 2008-08-14 
}

Dans mon exemple, j'ai défini deux périodes de notifications. La première est visiblement associée à l'équipe 1. Celle ci est notifiée uniquement de 7h à 16h tous les jours. Sauf durant la période du 21 juillet au 1er aout où elle n'est pas notifiée car tous les membres de l'équipe sont en congés. La deuxième équipe est notifiée de 11h à 20h sauf durant la période du 04 août au 14 août où elle n'est pas notifiée car en congés. Simple non?

Cette nouvelle fonctionnalité pouvait paraître anodine. Elle ne l'est pas: elle permet d'exprimer la vie d'un Système d'Information. Rappelons toujours que ce qui est couteux dans une solution de Supervision est la configuration et la maintenance de celle-ci. Cette fonctionnalité facilite la vie car elle représente clairement ce qui se passe réellement aux niveaux des équipes et au niveau de la supervision. Merci Nagios!