Introduction
Shinken supports a feature that does freshness checking on the results of host and checks. The purpose of freshness checking is to ensure that host and service checks are being provided passively by external applications on a regular basis.
Freshness checking is useful when you want to ensure that passive checks are being received as frequently as you want. This can be very useful in distributed and failover monitoring environments.
How Does Freshness Checking Work?
Shinken periodically checks the freshness of the results for all hosts services that have freshness checking enabled.
- A freshness threshold is calculated for each host or check.
- For each host/service, the age of its last check result is compared with the freshness threshold.
- If the age of the last check result is greater than the freshness threshold, the check result is considered “stale".
- If the check results is found to be stale, Shinken will force an active check of the host or check by executing the command specified by in the host or check definition.
An active check is executed even if active checks are disabled on a program-wide or host- or check-specific basis.
For example, if you have a freshness threshold of 60 for one of your checks, Shinken will consider that check to be stale if its last check result is older than 60 seconds.
Enabling Freshness Checking
Here's what you need to do to enable freshness checking.
- Enable freshness checking on a program-wide basis with the check_service_freshness and check_host_freshness directives.
Enterprise inclut une fonctionnalité qui permet de vérifier la fraîcheur des tests sur les hôtes et les checks. L'objectif de la vérification de fraîcheur est de vérifier que les hôtes et les checks sont fournis passivement régulièrement.
Cette fonctionnalité est très utile lorsque vous avez besoin de vérifier que des checks passifs sont bien reçus aussi souvent que nécessaire, comme par exemple dans des environnement distribués.
Comment fonctionne la vérification de fraîcheur ?
Shinken Enterprise vérifie régulièrement la fraîcheur lorsque celle-ci est activée dans le paramétrage.
- un seuil est calculé pour chaque hôte et check.
- Pour chaque hôte/service, le temps où le check a été réalisé est comparé au seuil
- si ce temps est supérieur au seuil, le résultat est alors considéré comme dépassé .
- Si le résultat du check est considéré comme dépassé, Shinken Enterprise forcera un check actif en exécutant la commande spécifiée dans la définition de l'hôte te du check.
Dans ce cas, un ckeck actif est exécuté même si celui-ci est désactivé dans globalement
Par exemple, si votre seuil de fraîcheur est à 60 pour un check, Shinken Enterprise considérera que le check est dépassé si le dernier résulta date de plus de 60 secondes.
Activer la vérification de fraîcheur
Voici ce que vous devez faire pour l'activer :
- Activer globalement en utilisant les paramètres check_service_freshness et check_host_freshness
- Utiliser l'option Use service_freshness_check_interval and host_freshness_check_interval options to tell Shinken how often it should check the freshness of service and host results.
- Enable freshness checking on a host- and check-specific basis by setting the "check_freshness" option in your host and service definitions to a value of 1.
- Configure freshness thresholds by setting the freshness threshold option in your host and check definitions.
- Configure the check command option in your host or check definitions to reflect a valid command that should be used to actively check the host or service when it is detected as stale.
- The check period option in your host and check definitions is used when Shinken determines when a host or check can be checked for freshness, so make sure it is set to a valid timeperiod.
If you do not specify a host- or check-specific freshness threshold value (or you set it to zero), Shinken will automatically calculate a threshold automatically, based on a how often you monitor that particular host or service. I would recommended that you explicitly specify a freshness threshold, rather than let Shinken pick one for you.
Example
An example of a check that might require freshness checking might be one that reports the status of your nightly backup jobs. Perhaps you have a external script that submit the results of the backup job to Shinken once the backup is completed. In this case, all of the checks/results for the service are provided by an external application using passive checks. In order to ensure that the status of the backup job gets reported every day, you may want to enable freshness checking for the check. If the external script doesn't submit the results of the backup job, you can have Shinken fake a critical result by doing something like this.
Here's what the definition for the check looks like:
- pour préciser à Shinken Enterpirse à quelle fréquence lancer la vérification .
- Activer spécifiquement sur un hôte ou un check en saisissant la valeur 1 dans l'option "check_freshness" dans la définition de l'élément.
- Configurer le seuil avec l'option disponible dans la définition de l'élément
- Configurer l'option "check command" dans la définition de l'élément afin de refléter une commande valide qui serait utilisée pour vérification lorsque l'élément est détecté comme dépassé .
- L'option "check period" est utilisée lorsque Shinken Enterprise determine quand un élément doit être vérifié pour sa fraîcheur, vérifiez donc que la valeur est dans une période de temps valide.
Si vous ne spécifiez pas de valeur particulière de "freshness threshold" (ou vous la laissez à zéro), Shinken Enterprise va calculer automatiquement un seuil en fonction de la fréquence de vérification de l'élément .Nous vous recommandons de saisir une valeur, plutôt que de laisser l'outil le faire pour vous.
Exemple
Un exemple d'utilisation de la fonction de vérification de fraîcheur peut être le check qui reporte le statut d'un backup de nuit. Vous pouvez avoir un script externe qui soumet les résultats des tâches de backup vers Shinken Enterprise lorsque c'est terminé. Dans ce cas, tous les résultats sont fournis par une application externe utilisant des checks passifs. Pour être sûr que les statut est bien remonté tous les jours, vous pouvez avoir besoin d'utiliser la vérification de fraîcheur du dernier check.
Voici à quoi ressemblerait la définition du check :
| Propriété | Valeur | Property | Value | Note |
|---|---|---|---|---|
| Description | Backup Job | |||
| Active checks enabled | FalseActive checks are NOT enabled | Checks actifs non activés | ||
| Passive checks enabled | True | Passive checks are enabled (this is how results are reportedChecks passifs activés (c'est comme ça que les résultats sont remontés ) | ||
| Check freshness | True | |||
| Freshness threshold | 93600 | seuil de 26 hour threshold, since backups may not always finish at the same timeheures, car tous les backups peuvent ne pas se terminer à le même heure | ||
| Check command | no-backup-report | This command is run only if the service results are “stale" |
...
| Cette commande n'est lancée que si le résultat est "dépassé" |
Notez que les checks actifs sont volontairement désactivés car on n'utilise que des checks passifs via une application externe. La commande no-backup-report est lancée seulement si le résultat est à "dépassé".La commande est la suivante :
| Propriété | Valeur |
|---|---|
| Nom | |
| Property | Value |
| Name | no-backup-report |
| Command LineLigne de commande | /var/lib/shinken/libexec/check_dummy 2 "CRITICAL: Results of backup job were not reported!" |
If Shinken detects that the service results are stale, it will run the Si Shinken Enterprise détecte un service en "dépassé, il lancera la commande no-backup-report command as an active check. This causes the check_dummy plugin to be executed, which returns a critical state to Shinken. The check will then go into to a Critical state (if it isn't already there) and someone will probably get notified of the problem. comme un check passif. Cela lancera la sonde "check_dummy" qui retournera un état CRITIQUE à Shinken Enterprise. Le check passera alors en état CRITICAL (si il ne l'est pas déjà et quelqu'un sera certainement notifié.