Nagiosを使用して、かなりの数(〜130)のサーバーを監視しています。 CPU、ディスク、RAMなど、各サーバーでいくつかのことを監視します。リモートサーバーで追加の構成をほとんどまたはまったく必要としないため、リモートコマンドを実行するために常にSSHを使用してきました、nagios-pluginsをインストールしてnagiosユーザーを作成し、SSHキーを追加するだけです。これらはすべて自動化してシェルスクリプトに組み込んだもので、NRPE経由でSSHを使用することによるパフォーマンスへの影響を考慮したことがありません。
Nagiosサーバーへの負荷ヒットについてはそれほど気になりません(おそらくそれが何をするかについては仕様が過剰であり、CPUが10%を超えることはありません)、各リモートチェックを30秒ごとに実行し、各サーバーには5つの異なるチェックがあります実行されました。 SSHはチェックごとにより多くのリソースを必要とすると思いますが、大きな違いはありますか? (つまり、NRPEへの切り替えを保証するのに十分な差異)。
それでも問題がなければ、物理サーバー(通常は8、12、または16の物理コア)とAmazon EC2中/大規模インスタンスの混合を監視します。
SSHの管理上の利点(私は Push_check を使用)が追加の負荷を上回ると常に信じてきました。最近のCPUは非常に高速であるため、少数のバイトを暗号化するコストはかなり最小限に抑えられるため、2つのプロセス(SSHとチェックスクリプト)と1つのプロセス(NRPEによって起動されるチェックスクリプト)を実行することになります。
インタープリター言語で記述されたチェックスクリプトの場合、インタープリター(Perl、Python、Bash)を起動するオーバーヘッドが、SSHセッションを開始するCPUコストを超えると予想します。最近のCPUを考えると、マシンはCPU制限ではなくディスクまたはメモリ制限である可能性が高くなります。
あなたのNagiosマシンが対処しているならば-それは毎秒20のSSH接続をセットアップしなければなりません-便宜上私は誤ります。
本当にあなたの質問への答えではなく、人生はそれを心配するには短すぎるというより多くの議論:)
NRPEはnagiosプラグインであり、簡単にインストールでき、プローブ設定ファイルでチェックアスクを管理します。 nrpeには1つだけ悪い点があります。監視するすべてのサーバーにインストールする必要があります。LinuxOSでは、それは本当にシンプルです。yum/ apt-get install nrpeですが、Windowsサーバーでは、.exeでインストールする必要があります。 、サーバーを再起動する必要がある場合があります。
SSHはnagiosを使用するための最も最適化された方法ではないと思います。 NRPEの方がはるかに効率的です。
ここnagiosのドキュメントにはこの文があります:
「SSHの使用はNRPEアドオンよりも安全ですが、監視マシンとリモートマシンの両方で(CPU)オーバーヘッドが大きくなります。これは、数百または数千のマシンの監視を開始するときに問題になる可能性があります。多くのNagios管理者は、 NRPEアドオンは、負荷が低いため、使用します。」
私は、使用が簡単なsnmpプロトコルを使用しており、サーバーにサードパーティをインストールする必要はありません。
他の回答で示された提案に加えて、nagiosの.ssh/configファイルでControlMaster
を有効にして ssh多重化 を最大限に活用することを検討していますか?
言い換えると、SSH接続は「継続」されるため、これが1回だけ発生するため、接続を確立するオーバーヘッドが最小限になります。これにより、暗号化によってプライバシーが保証され、サーバーのTCPポートを開いたままにしないようにすることができます(ファイアウォールが適用されています)。さらに、ユーザーがsshを介して実行することを 実行できるコマンドを制限する で制限できます。
私は、さまざまなOSでNRPEをコンパイルしようとする問題しかありませんでした。 SSHはスムーズかつ効率的に機能しており、スクリプトを作成する方がはるかに簡単です。