4

数百のノードで多数のテストを実行している Nagios 構成があります。これらの 1 つは のバリアントですcheck_http。--enable-embedded-perl (ePN) に設定されていませんが、すぐに変更する予定です。ePN が有効になっている場合でも、この Perl HTTP+SSL チェックの各実行が単一のターゲットのみを処理するモデルについて懸念しています。

複数のターゲットへの接続を同時に作成し、結果を読み取り、結果であるかのように Nagios で使用可能な形式で結果を吐き出す単純なselect() (またはpoll() / epoll() ) 駆動のデーモンを書きたいと思います。パッシブチェックから

これを達成する方法のガイドはありますか? Nagios に一括チェック更新を提供するためのインターフェイスまたは API は何ですか?

私が考えているハックの 1 つは、デーモンに Redis ストアを更新させ (各ターゲットのキーと短い有効期限で) check_http、キーのローカル Redis インスタンスの非常に小さく軽量な GET に置き換えることです (GET Nagios の実際の結果を取得するか、HTTP 接続がタイムアウトしたかのように扱われる "(nil)" 応答を取得します。

ただし、誰かがすでにこのようなものを持っていると思うので、私は自分の考えにも少し懐疑的です。

(ところで: Icinga、Zabbix、Zenoss、OpenNMS のようなものに切り替えることを確信する準備ができています...スケーリング向上するほとんどすべてのもの)。

4

1 に答える 1

2

Nagios にスケジューリングとチェックを処理させるかどうかについては、Nagios のバージョン (新しいバージョンではこれらのチェックを同時に実行できます) と、別のデーモンが必要な理由によって異なるため、お任せします。Nagios のバージョニングに関しては、バージョン 3 IIRC は同時チェックを使用するため、レポートよりも多くのノード数にスケーリングされます。

ただし、Web サイトの Postfix キュー統計と TTFB 追跡で行ったように、Redis ルートの概念に答えることができます。

curl および multiprocessing モジュールを使用して Python を使用してチェックを設定するのは、Redis にダンプするのと同様に非常に簡単です。の有効期限は、DB が成長しないようにするための堅実なアイデアであると言えます。古いチェック結果を取得しないように、この値をチェック間隔より大きくしない (または小さくする) ことをお勧めします。現在実行中のチェックが完了しておらず、Redis-to-Nagios チェックが実行され、前のチェックがプルされた場合、失敗したチェックを見逃す可能性があります。

Redis-To-Nagios チェックの場合、簡単な redis-cli+bash スクリプトまたは Python チェックを使用して、特定のホストのデータをプルします。データに応じて OK を返すか、そうでない場合はかなり簡単で、十分に速く実行されます。

Nagios チェック サーバーで Redis インスタンスを実行して、レイテンシを最小限に抑え、チェックで誤ったアラートを引き起こすネットワークの問題を回避することをお勧めします。また、Redis インスタンスとチェック デーモンで Nagios チェックを行うことをお勧めします。実行中の Redis および http_check デーモンに依存する check_http 置換チェックを作成します。したがって、次のような依存関係チェーンがあります。

Redis -> http_checkd -> http_check_replacement

これにより、問題が特定され、http_check_replacement での誤ったアラートが防止されます。たとえば、redis_checkd が停止した場合、200 以上の「http_check_replacement の失敗」ではなく、その警告が表示されます。

また、Redis のデータは定義上一時的なものであるため、ディスクの永続性を無効にします。データが常に回転している場合、ディスクに書き込む必要はありません。

余談ですが、libcurl を使用している場合は、接続を開くのにかかる時間とサーバーが応答するまでの時間 (最初のバイトまでの時間 - TTFB) に関する統計を libcurl から取得し、Nagios の機能を利用することをお勧めします。チェック統計を保存します。そのデータがあれば、トラブルシューティングやパフォーマンス分析に非常に役立つ時代が来るかもしれません。

これを実行してローカルの Redis インスタンスにアップロードする C で記述した CLI ツールがあります。高速です。URL を取得する時間よりもわずかに長くなります。Nagios スタイルの出力をかなり簡単に追加できます。実際、来週か 2 週間以内にそれを行うと思います。

于 2013-06-09T18:36:34.807 に答える