Table des matières
La performance de la supervision de Nagios peut être améliorée de manière significative en implémentant l'utilisation des contrôles mémorisés. Les contrôles mémorisés permettent à Nagios de passer l'exécution d'un contrôle d'hôte ou de service s'il détermine qu'un résultat de contrôle relativement récent a été fait plutôt.
Les contrôles d'hôte et de service régulièrement programmés ne verront pas d'amélioration de performance avec l'utilisation des contrôles mémorisés. Les contrôles mémorisés sont seulement utiles pour améliorer la performance lors d'un contrôle d'hôte et de service à la demande. Les contrôles programmés aident à garantir que l'hôte et les états de service sont actualisés régulièrement. Le résultat de ceux-là auront de grandes chances de servir pour l'utilisation de contrôles mémorisés plus tard.
Comme référence, le contrôle d'hôte à la demande se produit :
Quand un service associé à un hôte change d'état.
Quand il est nécessaire de vérifier l'accessibilité de l'hôte.
Quand il est nécessaire de réaliser un contrôle préventif des dépendances d'hôte .
Et le contrôle de service sur demande se produit…
Quand il est nécessaire de réaliser un contrôle préventif des dépendances de service .
À moins que vous ne profitiez des dépendances de service, Nagios ne sera pas capable d'utiliser des résultats de contrôles mémorisés afin d'améliorer la performance du contrôle de service. Ne vous en inquiétez pas - c'est normal. Le contrôle mémorisé des hôtes est là où il y a eu une plus grande amélioration de performance et chacun devrait y voir un avantage.
Quand Nagios a besoin d'exécuter un contrôle d'hôte ou de service à la demande, il déterminera s'il peut utiliser un résultat de contrôle se trouvant dans le cache ou s'il aura besoin d'exécuter un contrôle en passant par un plugin. Il fait ceci en comparant depuis combien de temps le dernier contrôle date aux valeurs des variables du cycle de mise en cache des contrôles d'hôte et de service.
Si le dernier contrôle exécuté se trouve dans cette période de temps (celle du cycle de contrôle du cache), Nagios utilisera le dernier résultat du contrôle de l'hôte ou du service et n'exécutera pas un nouveau contrôle. Si l'hôte n'a pas encore été contrôlé, ou si la période de temps dépasse la valeur du cycle de mise en cache, Nagios exécutera un nouveau contrôle d'hôte ou de service en passant par un plugin.
Nagios exécute des contrôles à la volée parce que il a besoin de connaitre l'état dans lequel se trouve l'hôte ou le service à un moment précis. En utilisant le contrôle mémorisé, vous autorisez à Nagios de considérer que l'état du contrôle antérieur est relativement correcte pour déterminer l'état actuel de vos hôtes. Pour cela il n'a pas besoin de contrôler via un plugin et de vraiment revérifier le statut de cet hôte ou de service.
Le cycle de mise en cache des contrôles dit à Nagios combien de temps il doit considérer qu'un état d'hôte ou de service est fiable. Par exemple, nous avons une valeur de cache à 30 secondes, ceci dira à Nagios que si l'état de l'hôte était contrôlé durant ces 30 secondes, il devrait prendre en considération le dernier contrôle mémorisé comme l'état actuel de l'hôte.
Le nombre de contrôle mémorisé que Nagios peut utiliser et comparer au nombre de contrôle à la demande qu'il doit vraiment exécuter peut être interprété sur forme de taux. En augmentant la valeur du cycle de mise en cache des contrôles à l'équivalence de celle du check_interval d'un hôte, nous pouvons théoriquement en conclure que le taux sera de 100%. Dans ce cas, tous les contrôles à la demande utiliseront les résultats des contrôles mémorisés. Quelle performance incroyable! Mais est-ce bien la réalité? Bien sûr que non.
La fiabilité de l'information d'un résultat diminue avec le temps. Un haut cœfficient de cache requière que vous ayez considéré que vos résultats sont restés inchangés depuis un long moment. Les choses peuvent changer rapidement dans certains scénario du réseau. Vous n'avez aucune garantie qu'un serveur sera toujours opérationnel 30 secondes plus tard. Il y a un échange - Fiabilité contre rapidité. Si vous mettez une valeur du cycle de contrôle du cache trop haute, vous risquez de voir la fiabilité de votre supervision en pâtir.
Nagios déterminera finalement l'état correct de tous les hôtes et des services, même si les résultats des contrôlés mémorisés peuvent s'avérer obsolètes. Nagios travaillera seulement avec les renseignements incorrects pour une période courte. Les périodes même courtes de renseignements de statut douteux peuvent s'avérer nuisantes pour les administrateurs car il est possible qu'ils reçoivent des notifications pour des problèmes qui n'ont pas existés très longtemps.
Il y a pas de valeur par défaut pour le cycle de mise en cache des contrôles ou de cœfficient acceptable pour chaque utilisateur de Nagios. Certains vont préférer une période de temps et un cœfficient bas alors que d'autres préféreront voir ces paramètres à la hausse. Certains utilisateurs peuvent même désactiver l'option du cache pour avoir une fiabilité s'approchant des 100%. Tester différentes périodes de temps, et voir leur effet est le seul moyen pour un utilisateur de trouver la bonne valeur adaptée à sa situation. Plus d'informations sur ce paramétrage vous est détaillé ci-dessous.
Les variables suivantes détermine l'intervalle de temps dans lequel un contrôle hôte ou de service antérieur peut être utilisé pour le contrôle mémorisé d'hôte ou de service:
La variable cached_host_check_horizon
commande le contrôle mémorisé d'hôte.
La variable cached_service_check_horizon
commande le contrôle mémorisé de service.
Dans l'ordre, pour optimiser l'utilisation du cache lors des contrôles, vous devez:
Planifier régulièrement des contrôles de vos hôtes
Utilisez MRTG pour grapher les statistiques des 1) contrôles à la demande et 2) des contrôles mémorisés
Ajuster la variable cached_host_check_horizon
en fonction de vos besoins.
Vous pouvez planifier des contrôles réguliers pour vos hôtes en précisant une valeur au-dessus de 0 pour la variable check_interval dans votre définition d'hôte . Si vous faites cela, assurez vous avoir une valeur plus grande que 1 pour la variable max_check_attempts
, ou ceci vous causera de gros problèmes de performance. Cette optimisation des performances est décrite en détails ici.
La bonne méthode pour déterminer votre valeur de l'option du cycle de mise en cache des contrôles est de comparer le nombre de contrôles à la volée que Nagios exécute par rapport au nombre de contrôles mémorisé équivalent. L'utilitaire nagiostats peut réaliser ces statistiques sur les controles mémorisés, que vous pouvez grapher avec MRTG. L'exemple de graph MRTG suivant compare les contrôles mémorisés et les contrôles à la demande.
L'installation de la supervision qui a réalisé les graphs ci-dessus avait:
Un total de 44 hôtes, tous contrôlés à intervalle régulier
En moyenne (contrôle régulier), le contrôle d'un hôte se fait toutes les 5 minutes
Une variable cached_host_check_horizon
réglée à 15 secondes
Le premier graph MRTG nous montre le nombre de contrôle régulier d'hôte comparé à celui que le contrôle mémorisé a produit. Dans cette exemple, en moyenne, nous avons 53 contrôles qui sont réalisés toutes les 5 minutes. 9 d'entres eux sont des contrôles à la demande.
Le second graph nous montre le nombre de contrôles mémorisés qui se produisent tout le temps. Dans cet exemple, en moyenne, 2 contrôles mémorisés d'hôtes sont réalisés toutes les 5 minutes.
Souvenez-vous, le contrôle mémorisé n'est valable que pour le contrôle à la demande. Si l'on se base sur une période de 5 minutes, Nous voyons que Nagios utilise les résultats de contrôles mémorisés 2 fois sur les 9 demandes de contrôles qui ont été exécuté. Ça ne vous paraît pas beaucoup, mais notre environement de supervision était minime. Considérons que 2 sur 9 font 22%, alors imaginez les performances que vous gagnerez dans des grands environnements de production. Ce pourcentage peut se voir à la hausse si vous augmentez la valeur de la variable du cycle de mise en cache des contrôles, mais ça réduira la fiabilité des informations sur l'état des hôtes.
Après avoir graphé pendant quelques heures ou jours, on s'aperçoit combien de contrôles d'hôte et de service sont réalisés par exécution d'un plugin comparés à ceux utilisés avec les résultats de contrôles mis en cache. Utilisez cette information pour ajuster à votre environnement, la valeur de vos variables du cycle de mise en cache des contrôles. Continuez à superviser avec des graphs MRTG pour voir l'évolution en fonction de vos changements. Répetez l'opération si nécessaire.