NagiosのサービスチェックにいくつかのPerlベースのスクリプトを使用していますが、Nagiosの結果として(Service check did not exit properly)
および(null)
が返されますが、スクリプトはコマンドラインで適切に機能します。
Nagios構成でenable_embedded_Perl=0
を設定するか、インタープリターへのパスを明示的に指定して、内部Perlインタープリターを無効にすることを提案するソリューションをオンラインで見ました。これは問題を解決しませんでした。
他に何ができますか?
Nagios Exchangeの一部のPerlスクリプトは、utils.pm
Perlモジュールを含めようとします。あなたはそれのどこかにこのような行を見つけるでしょう:
use lib "/usr/local/nagios/libexec";
NagiosをDebianにインストールする場合、utils.pm
ファイルのデフォルトの場所は/usr/lib/nagios/plugins/utils.pm
です。したがって、use lib
ディレクティブは次のようになります。
use lib "/usr/lib/nagios/plugins";
プラグインを編集している/usr/lib/nagios/plugins/
にいるため、コマンドラインからコマンドを実行するとうまくいく可能性があります。
Nagiosには独自の組み込みPerlインタープリターが含まれています。 プラグインはおそらくepnに準拠していません。
これをグローバルに無効にするか、スクリプトで無効にすることもできます。そのドキュメントページの下部に、これを行う方法が示されています。
基本的に、# nagios: -epn
スクリプトの最初の10行のどこかにある独自の行。これで問題が解決するはずです。
準拠させる を使用することもできますが、問題が発生することはほとんどありません。
コマンドの前に/usr/bin/Perl
を付けます。
この解決策はより回避策です。そうすることはおそらくお勧めできませんが、少なくともプラグインはターミナルから起動したときと同じように機能するはずです。
注:私の経験では# nagios -epn
はかなり頻繁に機能しますが、十分でない場合もあります。これが発生すると、障害のあるプラグインが多くの警告を報告することに気付きました(スクリプトがPerl -w
で呼び出された場合)。