web-dev-qa-db-ja.com

ランダムサービスのNagios(リターンコード141は範囲外です)

しばらくの間、問題なくサーバーの1つでNagiosを実行していましたが、最近取得しました(リターンコード141は範囲外です)。

サービスをオンラインにしたためにサーバーの負荷が上昇しましたが、それでもそれほど高くはありません(負荷平均最大:0.7)。発売前は、Nagiosのすべてが正常に機能しています。

画像を参照してください。CurrentLoadはコード141を返します。2分前にBeancountersVZが141を返しました。これは不規則に発生します。 HTTPとPINGだけが141を返さず、nrpeで中継しません。

http://pic-hoster.net/view/45030/ScreenShot2012-05-28at5.31.35PM.png

問題のあるクライアントに対してNagiosホストからコマンドを実行すると、リターンが失われることがあることに気付きました。

root@xxx23:/usr/local/nagios/libexec# ./check_nrpe -H 123.123.123.123 -c check_apt 
APT OK: 0 packages available for upgrade (0 critical updates). 
root@xxx23:/usr/local/nagios/libexec# ./check_nrpe -H 123.123.123.123 -c check_apt 
root@xxx23:/usr/local/nagios/libexec# ./check_nrpe -H 123.123.123.123 -c check_apt 
APT OK: 0 packages available for upgrade (0 critical updates). 

クライアントで直接実行した場合、これは発生しません。

私がしたこと:

  • このコンテナのOpenVZメモリとCPUUnitを増やしました。
  • 最新のNagios3.4.1に更新しました(ソースから)
  • 私はnrpeを介してNagiosチェックをローカルで実行しました-141などを取り戻すことはありませんでした

私は数ヶ月前に他のサーバーで同じ問題を抱えていました。問題が見つからず、サーバーを再インストールしました。現在動作しています。

アイデアを持っている人はいますか?

[〜#〜]更新[〜#〜]

私はそれを見つけたと思います、1時間起こっていません。

SIGPIPEは良いヒントでした、私はnagiosではなくシステムで何かを想定しました。

Openvzの構成と制限を調整しました。安定していれば報告します。

5
PortKnox.net

同様の問題が発生し、コンテナ内のNRPEを介してチェックされた1つのサービスが予期されたWARNINGを返し、数分後に同じサービスが141/SIGPIPEエラーでCRITICALを返しました。次のチェックでは、WARNINGCRITICALWARNINGというように返されました。

エラーのトラフィックキャプチャを実行したところ、 Nagiosの問題#305 で、観察した内容を非常に正確に説明していることがわかりました。これは、SSL(SSL_shutdown())を使用しているときにNRPEサーバー側で接続が閉じられたために、クライアントにTCP RST)が送信され、中止されたことが原因のようです。読んで、したがってSIGPIPE。

パッチの適用nrpe-ssl_shutdown-2.patch NRPEソースへの問題レポートに添付され、再構築および再インストール/再起動すると、問題の繰り返しが停止したように見え、警告は通常、重大なエラーなしで報告されます。

この問題は何度か発生しました。プラグインが予期せず終了したことが原因のようです。

私たちが取った行動:

  1. Nagiosのプラグインタイムアウトを120に増やします
  2. 一部の複雑なPerlプラグインで、EPNを無効にしました(スクリプトの2行目に追加#nagios:-epn)
  3. チェックでNRPEを使用した場合、NRPEが/ dev/urandomを使用していたことを確認し、エントロピーの欠如をブロックしないようにします。
  4. Nrpe.cfgに適切なcommand_timeout(30秒)を設定します
  5. Nagiosサーバーに、同時に実行する必要のあるすべてのチェックを実行するのに十分なメモリ/ CPUがあることを確認します。

それらの間で、これらは問題を解決したようでした。

1
Steve Shipway

終了コード141は、シグナル141-128 = 13に対応します。man7シグナルは、シグナル13がSIGPIPEであることを示します(つまり、話していたプロセスが終了しました)。これがOpenVZが以前のシグナルを送信しないことに関連しているというバグレポートがあります https://bugzilla.openvz.org/show_bug.cgi?id=1901

0
Des Cent