J'essaie de surveiller les URL réelles, et pas seulement les hôtes, avec Nagios, car j'exploite un serveur partagé avec plusieurs sites Web, et je ne pense pas que ce soit suffisant pour surveiller le service HTTP de base bas de cette question une petite explication de ce que j’envisage).
(Remarque: veuillez noter que Nagios est installé et fonctionne à l'intérieur d'un chroot sur un système CentOS. J'ai construit nagios à partir des sources et ai utilisé yum pour installer dans cette racine toutes les dépendances nécessaires, etc.).
J'ai d'abord trouvé check_url , mais après l'avoir installé dans/usr/lib/nagios/libexec, je n'arrivais pas à obtenir un code "Le code de retour de 255 est hors limite". C'est alors que j'ai décidé de commencer à écrire cette question (mais attendez! Il y a un autre plugin que j'ai décidé d'essayer en premier!)
Après avoir examiné Cette question qui avait pratiquement le même problème que moi avec check_url, j’ai décidé de poser une nouvelle question sur le sujet car A) Je n’utilise pas NRPE avec ce chèque. b) J'ai essayé les suggestions faites sur la question précédente à laquelle j'ai lié, mais aucune d'entre elles n'a fonctionné. Par exemple...
./check_url some-domain.com | echo $0
renvoie "0" (ce qui indique que la vérification a réussi)
J'ai ensuite suivi les instructions de débogage sur Nagios Suppor t pour créer un fichier temporaire appelé debug_check_url, et y ai mis le texte suivant (à appeler par ma définition de commande):
#!/bin/sh
echo `date` >> /tmp/debug_check_url_plugin
echo $* /tmp/debug_check_url_plugin
/usr/local/nagios/libexec/check_url $*
En supposant que je ne sois pas en "mode de débogage", ma définition de commande pour exécuter check_url est la suivante (dans command.cfg):
'check_url' command definition
define command{
command_name check_url
command_line $USER1$/check_url $url$
}
(Incidemment, vous pouvez aussi voir ce que j'utilisais dans mon fichier de configuration de service tout en bas de cette question)
Avant de publier cette question, cependant, j’ai décidé de donner un autre coup pour trouver une solution. J'ai trouvé le check_url_status plugin et j'ai décidé de tenter le coup. Pour ce faire, voici ce que j'ai fait:
Exécutez ce qui suit:
./check_user_status -U some-domain.com. Lorsque j'exécutais la commande ci-dessus, le message d'erreur suivant apparaissait:
bash-4.1 # ./check_url_status -U mydomain.com Impossible de localiser utils.pm dans @INC (@INC contient:/usr/lib/nagios/libexec// usr/local/lib/Perl5/usr/local/share/Perl5/usr/lib/Perl5/vendor_Perl/usr/share/Perl5/vendor_Perl/usr/lib/Perl5/usr/share/Perl5) à ./check_url_status, ligne 34. Échec de l'entrée de BEGIN --compilation interrompue à la ligne 34 ./check_url_status.
Donc, à ce stade, j'abandonne et pose quelques questions:
Au début de cette question, j'ai mentionné que j'inclurais une petite explication de ce que j'envisage. J'ai un fichier appelé services.cfg qui contient toutes les définitions de service (imaginez-le!).
Voici un extrait de mon fichier de définition de service, que j'ai écrit pour utiliser check_url (car à ce moment-là, je pensais que tout fonctionnait bien). Je construirai un service pour chaque URL que je veux surveiller:
###
# Monitoring Individual URLs...
#
###
define service{
Host_name {my-shared-web-server}
service_description URL: somedomain.com
check_command check_url!somedomain.com
max_check_attempts 5
check_interval 3
retry_interval 1
check_period 24x7
notification_interval 30
notification_period workhours
}
Je faisais les choses trop compliquées.
Le plugin intégré/installé par défaut, check_http, peut accomplir ce que je voulais et plus encore. Voici comment j'ai accompli ceci:
Ma définition de service:
define service{
Host_name myers
service_description URL: my-url.com
check_command check_http_url!http://my-url.com
max_check_attempts 5
check_interval 3
retry_interval 1
check_period 24x7
notification_interval 30
notification_period workhours
}
Ma définition de commande:
define command{
command_name check_http_url
command_line $USER1$/check_http -I $HOSTADDRESS$ -u $ARG1$
}
Le meilleur moyen de surveiller les URL est d'utiliser webinject, qui peut être utilisé avec nagios.
Le problème ci-dessous est dû à la raison pour laquelle vous n'avez pas le paquet Perl utils essayez de l'installer.
bash-4.1 # ./check_url_status -U mydomain.com Impossible de localiser utils.pm dans @INC (@INC contient:
Vous pouvez créer un plugin de script. C'est facile, il suffit de vérifier l'URL avec quelque chose comme:
`curl -Is $URL -k| grep HTTP | cut -d ' ' -f2`
$ URL est ce que vous transmettez à la commande de script par param.
Vérifiez ensuite le résultat: si vous avez un code supérieur à 399, vous avez un problème, sinon ... tout va bien! Ensuite, un mode de sortie à droite et le message pour Nagios.