web-dev-qa-db-ja.com

「(サービスチェックが正しく終了しませんでした)」および「(null)」の結果をサービスで解決するにはどうすればよいですか?

NagiosのサービスチェックにいくつかのPerlベースのスクリプトを使用していますが、Nagiosの結果として(Service check did not exit properly)および(null)が返されますが、スクリプトはコマンドラインで適切に機能します。

Nagios構成でenable_embedded_Perl=0を設定するか、インタープリターへのパスを明示的に指定して、内部Perlインタープリターを無効にすることを提案するソリューションをオンラインで見ました。これは問題を解決しませんでした。

他に何ができますか?

10
Der Hochstapler

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/にいるため、コマンドラインからコマンドを実行するとうまくいく可能性があります。

3
Der Hochstapler

Nagiosには独自の組み込みPerlインタープリターが含まれています。 プラグインはおそらくepnに準拠していません。

これをグローバルに無効にするか、スクリプトで無効にすることもできます。そのドキュメントページの下部に、これを行う方法が示されています。

基本的に、# nagios: -epnスクリプトの最初の10行のどこかにある独自の行。これで問題が解決するはずです。

準拠させる を使用することもできますが、問題が発生することはほとんどありません。

11
Keith

コマンドの前に/usr/bin/Perlを付けます。

この解決策はより回避策です。そうすることはおそらくお勧めできませんが、少なくともプラグインはターミナルから起動したときと同じように機能するはずです。

注:私の経験では# nagios -epnはかなり頻繁に機能しますが、十分でない場合もあります。これが発生すると、障害のあるプラグインが多くの警告を報告することに気付きました(スクリプトがPerl -wで呼び出された場合)。

2
tiktak