Chapitre 40. Contrôle de la fraîcheur des résultats d'hôtes et de services

Introduction

Nagios propose une fonctionnalité de vérification de la fraîcheur des résultats de contrôles d'hôtes et de services. Cette fonctionnalité est utile pour vous assurer que des contrôles passifs sont reçus à la fréquence que vous souhaitez.

Le but du contrôle de fraîcheur est de s'assurer que les contrôles d'hôte et de service sont soumis régulièrement de manière passive. Ceci est très utile dans les environnements de supervision distribuée ou hautement disponible.

Comment fonctionne le contrôle de la fraîcheur ?

Freshness Nagios contrôle régulièrement la fraîcheur des résultats de tous les services dont le contrôle de fraîcheur est activé.

  • Un seuil de fraîcheur est calculé pour chaque hôte et service.

  • Pour chaque hôte/service, l'heure du dernier contrôle est comparée avec le seuil de fraîcheur.

  • Si l'heure du dernier contrôle est supérieure au seuil de fraîcheur, le résultat du contrôle est considéré comme périmé.

  • Si le résultat du contrôle est déclaré périmé, Nagios va forcer un contrôle actif de l'hôte ou du service en exécutant la commande précisée dans la définition de l'hôte ou du service.

Un contrôle actif est exécuté même si les contrôles actifs sont désactivés au niveau global ou au niveau service/hôte.

Par exemple, si vous donnez la valeur 60 au paramètre freshness_threshold de l'un de vos services, Nagios considérera que le service est périmé si le dernier résultat obtenu date de plus de 60 secondes (1 minute).

Activer le contrôle de la fraîcheur

Voici ce dont vous avez besoin pour activer le contrôle de la fraîcheur…

  • Activez le contrôle de fraîcheur par les paramètres check_service_freshness et check_host_freshness du fichier de configuration principal.

  • Utilisez les paramètres service_freshness_check_interval et host_freshness_check_interval pour indiquer à Nagios l'intervalle auquel il doit contrôler la fraîcheur des résultats d'hôtes et de services.

  • Activer le contrôle de la fraîcheur d'un hôte ou d'un service en particulier en passant le paramètre check_freshness à 1 dans le fichier de définition de l'hôte ou du service.

  • Configurez les seuils de fraîcheur en réglant le paramètre freshness_threshold dans le fichier de définition de l'hôte ou du service.

  • Configurez le paramètre check_command dans votre fichier de définition d'hôte ou de service pour indiquer la commande valide à utiliser pour contrôler activement le service ou l'hôte lorsque celui-ci est déclaré périmé.

  • Le paramètre check_period dans votre fichier de définition d'hôte ou de service est utilisé quand Nagios doit déterminer lorsqu'un hôte ou service doit être contrôlé au niveau fraîcheur, aussi assurez-vous de le régler sur une période de temps valide.

Si vous ne spécifiez pas de valeur pour le paramètre freshness_threshold (ou si vous le mettez à zéro), Nagios calculera automatiquement un seuil de fraîcheur à utiliser en se basant sur la fréquence de contrôle utilisé pour cet hôte ou service. Je vous recommande d'explicitement préciser un niveau de fraîcheur plutôt que de laisser Nagios en décider un à votre place.

Exemple

Un exemple de service purement passif pourrait être un rapport d'état de vos travaux de sauvegarde de nuit. Vous avez peut-être un script externe qui soumet les résultats du travail de sauvegarde à Nagios une fois que la sauvegarde est terminée. Dans ce cas, tous les résultats des contrôles pour ce service sont fournis par une application externe, en utilisant des contrôles passifs. Pour vous assurer que l'état des travaux de sauvegarde est bien remonté chaque jour, vous activerez le contrôle de fraîcheur pour ce service. Si le script externe ne soumet pas les resultats du travail de sauvegarde, vous pouvez faire en sorte que Nagios simule un résultat critique de la manière suivante…

Voici ce à quoi la définition du service pourrait ressembler (certains paramètres obligatoires ont été omis)…

define service{
    host_name               backup-server
    service_description     ArcServe Backup Job
    active_checks_enabled   0           ; active checks are NOT enabled
    passive_checks_enabled  1           ; passive checks are enabled (this is how results are reported)
    check_freshness         1
    freshness_threshold     93600       ; 26 hour threshold, since backups may not always finish at the same time
    check_command           no-backup-report    ; this command is run only if the service results are "stale"
    ...other options...
}
        

Notez que les contrôles actifs sont désactivés pour ce service. En effet les résultats du service sont uniquement fournis par une application externe, en utilisant des contrôles passifs. Le contrôle de fraîcheur est activé et le seuil de fraîcheur a été positionné à 26 heures. C'est un peu plus de 24 heures parce que la durée des travaux de sauvegarde varie selon les jours (en fonction du volume de données à sauvegarder, de l'encombrement du réseau, etc.). La commande no-backup-report est exécutée seulement si les résultats du service sont considérés comme périmés. La définition de la commande no-backup-report pourrait ressembler à ceci…

define command{
    command_name    no-backup-report
    command_line    /usr/local/nagios/libexec/check_dummy 2 "CRITICAL: Results of backup job were not reported!"
}
        

Si Nagios détecte que les résultats du service sont périmés, il va lancer la commande no-backup-report comme un contrôle actif de service. Cela exécute le plugin check_dummy qui retourne un état critique à Nagios. Le service passe en état critique (s'il n'y était pas déjà) et quelqu'un sera probablement notifié du problème.