Comment puis-je résoudre les résultats «(Le contrôle de service ne s'est pas terminé correctement)» et «(null)» avec mes services?

10

J'utilise des scripts basés sur Perl pour les vérifications de service dans Nagios et j'obtiens (Service check did not exit properly)et (null)par conséquent dans Nagios, mais le script fonctionne très bien sur la ligne de commande.

J'ai vu des solutions en ligne suggérant de désactiver l'interpréteur Perl interne en définissant enable_embedded_perl=0dans la configuration Nagios ou en spécifiant explicitement le chemin vers un interpréteur. Cela n'a pas résolu le problème.

Quoi d'autre cela pourrait-il être?

Der Hochstapler
la source
Pouvez-vous montrer un exemple de la façon dont cela "fonctionne très bien" via CLI?
Keith

Réponses:

11

Nagios inclut son propre interpréteur perl intégré. Votre plugin n'est probablement pas compatible epn.

Vous voudrez peut-être le désactiver globalement, ou simplement le désactiver pour votre script. Le bas de cette page de documentation vous montre comment procéder.

Fondamentalement, ajoutez # nagios: -epnsa propre ligne quelque part dans les dix premières lignes de votre script. Cela devrait résoudre votre problème.

Vous pouvez également le rendre conforme , mais cela ne vaut certainement pas la peine.

Keith
la source
Ouais, merci pour la suggestion. Même si j'ai explicitement déclaré que cela n'avait aucun impact sur le problème spécifique auquel j'étais confronté.
Der Hochstapler
C'est une vraie résolution pour les nagios. sans -epn, le plugin est inclus et exécuté en interne par nagios. avec -epn, il est chargé en tant qu'exécutable externe, similaire aux binaires ou aux scripts bash. Voir la page: nagios.sourceforge.net/docs/3_0/embeddedperl.html et considérer la plainte
epn
1
Les deux points sont requis dans # nagios: -epn, selon la documentation et selon mes tests.
idupree
1
Curieusement, la version actuelle Ubuntu LTS (18.04) de nagios-plugins-standard (2.2-3ubuntu2) a ce problème. Les choses fonctionnent si je modifie les plugins affectés, par exemple, check_disk_smbet check_file_age, ou si je metsuse_embedded_perl_implicitly=0
Akom
Fixé pour moi! Merci ...
Oscar Bravo
3

Certains scripts Perl de Nagios Exchange essaieront d'inclure le utils.pmmodule Perl. Vous trouverez une ligne comme celle-ci quelque part:

use lib "/usr/local/nagios/libexec";

Lors de l'installation de Nagios sur Debian, l'emplacement par défaut du utils.pmfichier est /usr/lib/nagios/plugins/utils.pm. La use libdirective devrait donc être:

use lib "/usr/lib/nagios/plugins";

L'exécution de la commande à partir de la ligne de commande a probablement fonctionné parce que vous étiez en /usr/lib/nagios/plugins/train de modifier votre plugin.

Der Hochstapler
la source
2

Préfixez la commande avec /usr/bin/perl.

Cette solution est plus une solution de contournement, ce n'est probablement pas une bonne idée de le faire, mais au moins votre plugin devrait fonctionner de la même manière que lorsque vous le lancez à partir du terminal.

REMARQUE: D'après mon expérience, # nagios -epnfonctionne assez souvent, mais parfois cela ne semble pas être suffisant. J'ai remarqué que lorsque cela se produit, les plugins défectueux signalent de nombreux avertissements (lorsque le script est invoqué avec perl -w).

TIC Tac
la source