クライアント側の監視のためにNRPEを設定する方法
NRPE、またはNagios Remote Plugin Executorは、監視設定のクライアントサイドサービスです。監視サーバーはクライアントにコマンドを送信し、クライアントは作業がないときに受動的に待機します。受信したコマンドがあると、nrpeはローカル設定を確認し、コマンドに構成されたプラグインを実行し、結果をサーバーに戻して処理します。サーバーサイドのインストールについてはNagiosのインストールガイドを参照できますが、このガイドはクライアントサイドに焦点を当てます。
このチュートリアルでは、あなたは学びます:
- Debian/Red Hat ベースのディストリビューションに NRPE をインストールする方法
- NRPEを設定してサーバーからのコマンドを受け入れる方法
- サーバーとクライアント側でカスタムチェックを構成する方法
NRPE - Nagiosリモートプラグインエグゼキュータ
ソフトウェアの要件と使用される規約
Debian/Red HatベースのディストリビューションにNRPEをインストールする
必要なソフトウェアのインストールは簡単です。Ubuntu、openSUSE、Fedora、そしてRHELについて説明します。
UbuntuにNRPEをインストールする
Ubuntuでは、このプロセスはワンライナーです。nrpeデーモンのパッケージ、nagios-nrpe-serverはデフォルトのリポジトリにあります。
apt-get install nagios-nrpe-serverUbuntuの場合、主な設定ファイルは/etc/nagios/nrpe.cfgです。デフォルトで含まれているディレクトリは/etc/nagios/nrpe.d/で、ドロップイン設定に使用できます。このパッケージは便利のために空のローカル設定ファイル/etc/nagios/nrpe_local.cfgも追加します。この最後のファイルはrpmベースのディストリビューションには含まれていません。
openSUSEにNRPEをインストールする
最近のopenSUSEバージョンでは、nrpeソフトウェアもデフォルトのリポジトリにパッケージされています。したがって、インストールは1つのLinuxコマンドで行えます。
zypper in nrpe他のディストリビューションとは異なり、openSUSEはメインの設定ファイルをパス/etc/nrpe.cfgに配置します。
FedoraにNRPEをインストールする
フェドラプロジェクトはnrpeもパッケージ化しているため、デフォルトのリポジトリからアクセスできるはずです。インストールにはdnfを使用するだけです。
dnf install nrpe主要な設定ファイルは/etc/nagios/nrpe.cfgであり、デフォルトの含まれるディレクトリは/etc/nrpe.d/です。
Red Hat Enterprise Linux に NRPE をインストールする
RHELの場合、nrpeパッケージはデフォルトのリポジトリにはありません。そこからパッケージをインストールするには、EPELリポジトリを有効にする必要があります。
ガイドに記載されている手順に従ってEPELリポジトリを有効にするか、内部ソフトウェア配布のある閉じた環境でEPELリポジトリの内容をインポートして公開することができます。どちらの場合でも、リポジトリがクライアントマシンで利用可能になった後のインストールプロセスは、上記とほぼ同じです。
yum install nrpe設定ファイルは、Fedoraの場合と同じ場所にあります。
新しいリポジトリを本番環境で有効にする前に、必ず慎重なテストを行ってください。この場合、EPELにはRed Hatパッケージの更新と見なされる可能性のあるパッケージが含まれており、フルアップデートを実行する際にシステム上で予期しないソフトウェアの変更が発生する可能性があります。
サーバーからのコマンドを受け入れるためにNRPEを構成する
クライアントサービスを設定するには、主要な設定ファイルを使用することもできますが、カスタムファイルを使用し、メイン設定ファイルに含まれるディレクトリに配置することをお勧めします。このようにすることで、nrpe.cfgのパッケージアップグレードからの更新を、カスタム設定に変更を加えることなく適用できます。
私たちは、カスタムパッケージに独自のカスタム構成ファイルを含めることもでき、これによってクライアント監視の構成を中央集権的かつ自動的に更新できます。それを考慮に入れて、次の例ではすべてのディストリビューションの/etc/nrpe.d/custom.cfgでクライアントを構成します。
NRPEはデフォルトでlocalhost以外のコマンドを受け付けません。これはセキュリティ上の理由です。サーバーからコマンドを実行できるようにするには、サーバーのIPアドレスを許可されたアドレスとして設定する必要があります。私たちの場合、サーバーはNagiosサーバーで、IPアドレスは10.101.20.34です。次の設定をクライアントの構成に追加します:
allowed_hosts=10.101.20.34複数のアドレスまたはホスト名をコンマで区切って追加できます。上記のロジックは、監視サーバーには静的アドレスが必要であることに注意してください。ここでIPアドレスを使用している場合、監視サーバーでdhcpを使用すると、確実に設定が壊れてしまいます。ホスト名を使用するシナリオにも同様のことが当てはまり、クライアントがサーバーのホスト名を解決できない場合でも同様です。
サーバーとクライアント側でカスタムチェックを設定すること
私たちの監視設定の能力を示すために、ローカルのpostfixシステムがユーザーrootのクライアントにメールを配信するかどうかを知りたいとしましょう。そのメールにはcronjobの出力、何らかのレポート、またはSTDERRに書き込まれる何かが含まれており、デフォルトでメールとして配信されます。たとえば、abrtは、プロセスがクラッシュしたときにデフォルトでrootにクラッシュレポートを送信します。私たちはメールリレーを設定していませんが、メールが届くかどうかを知りたいと考えています。それを監視するためのカスタムチェックを書きましょう。
パズルの最初のピースは、チェックそのものです。次のシンプルなbashスクリプト
check_unread_mailを考えてみてください:#!/bin/bash USER=root if [ "$(command -v finger >> /dev/null; echo $?)" -gt 0 ]; then echo "UNKNOWN: utility finger not found" exit 3 fi if [ "$(id "$USER" >> /dev/null ; echo $?)" -gt 0 ]; then echo "UNKNOWN: user $USER does not exist" exit 3 fi ## check for mail if [ "$(finger -pm "$USER" | tail -n 1 | grep -ic "No mail.")" -gt 0 ]; then echo "OK: no unread mail for user $USER" exit 0 else echo "WARNING: unread mail for user $USER" exit 1 fiこの簡単なチェックは、
fingerユーティリティを使用して、ユーザーrootの未読メールを確認します。finger -pmの出力はバージョンやディストリビューションによって異なる場合があるため、いくつかの調整が必要な場合があります。- このチェックを動作させるには
fingerが必要です。パッケージの名前はすべてのディストリビューションで同じなので、apt、zypper、dnf、またはyumを使用してインストールできます。 チェック実行可能ファイルを設定する必要があります。
chmod +x check_unread_mail- チェックを
/usr/lib64/nagios/pluginsディレクトリに配置します。これはnrpeチェックの一般的な場所です。後でこれを参照します。 私たちはコマンドを
check_mail_rootと呼びます。受け入れるコマンドと、特定のコマンドが到着したときに何を行う必要があるかをnrpeに伝えるカスタムクライアント設定に別の行を追加しましょう:command[check_mail_root]=/usr/lib64/nagios/plugins/check_unread_mail-
これでクライアントの設定は完了です。
systemdを使用して、クライアントでサービスを開始できます。サービス名はDebian系ではnagios-nrpe-serverであり、他のディストリビューションでは単にnrpeです。systemctl start nagios-nrpe-server systemctl status nagios-nrpe-server ● nagios-nrpe-server.service - Nagios Remote Plugin Executor Loaded: loaded (/lib/systemd/system/nagios-nrpe-server.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2019-09-10 13:03:10 CEST; 1min 51s ago Docs: http://www.nagios.org/documentation Main PID: 3782 (nrpe) Tasks: 1 (limit: 3549) CGroup: /system.slice/nagios-nrpe-server.service └─3782 /usr/sbin/nrpe -c /etc/nagios/nrpe.cfg -f szept 10 13:03:10 mail-test-client systemd[1]: Started Nagios Remote Plugin Executor. szept 10 13:03:10 mail-test-client nrpe[3782]: Starting up daemon szept 10 13:03:10 mail-test-client nrpe[3782]: Server listening on 0.0.0.0 port 5666. szept 10 13:03:10 mail-test-client nrpe[3782]: Server listening on :: port 5666. szept 10 13:03:10 mail-test-client nrpe[3782]: Listening for connections on port 5666 さて、サーバーサイドを設定できます。まだ持っていない場合は、コマンドを定義して、リモートの
nrpeインスタンスを、コマンドを唯一の引数として呼び出すことができます。this command runs a program $ARG1$ with no arguments define command { command_name check_nrpe_1arg command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -t 60 -c $ARG1$ 2>/dev/null }クライアントをホストとして定義します:
define host { use linux-server host_name mail-test-client alias mail-test-client address mail-test-client }上記のホストでNagiosサイドコマンドとクライアントサイドコマンドを使用してサービスを定義できます:
define service { use generic-service host_name mail-test-client service_description OS:unread mail for root check_command check_nrpe_1arg!check_mail_root }新しいNagios設定を確認します。
nagios -v /etc/nagios/nagios.cfg「状況が問題なければ」、サーバーの再読み込みで設定を適用できます:
systemctl reload nagios
例えば、Fedora 30では、finger -pm <username>の出力の最後の行は「No mail.」ですが、openSUSE Leap 15.1では「No Mail.」になります(大文字のMailに注意)。この場合、grep -iがこの違いに対処してくれますが、異なるディストリビューションやバージョンで作業する際には、追加の作業が必要になる場合があることを示しています。
アドレスはIPアドレスまたはホスト名である可能性があります。後者の場合、監視サーバーによって解決できることを確認する必要があります。
これらの調整は、Nagiosサーバーが起動時に読み込む任意の設定ファイルに配置できますが、設定ファイルを整頓しておくことは良い慣習です。
結論
すべてが正常に動作すれば、数分以内に新しいクライアントがNagiosのウェブページに表示されるはずです。その新しいサービスは「OS: root用の未読メール」で、状態は緑の「OK」と表示されます(つまり、rootに未読メールがなければ)。
上記のスクリプトは、新しいメールが故意に届いた場合のみ警告を報告します:例の環境では、重要な問題とは見なされず、アプリケーションクラッシュはメールが届くずっと前に重大なエラーを生成する必要があります。バックグラウンドでは、Nagiosサーバーが「check_mail_root」コマンドをクライアントに送信し、そこでnrpeが私たちのカスタムスクリプトを実行し、「OK: ユーザーrootには未読メールがありません」と出力し、終了コード0(これはNagiosによって「OK」状態として翻訳されます)を返します。
この簡単なセットアップは、Nagios+nrpe構成におけるコマンドとデータの流れを示すことを目的としており、監視機能を拡張する基本的な手段を説明します。一般的な用途のために、ログファイルの解析、データベースのチェック、ウェブサーバのステータス情報など、さまざまな言語で数え切れないほどのチェック(プラグインと呼ばれる)が書かれています。
多くのものは上記のリポジトリにパッケージ化されており、さらに公式のNagiosページでも見つけることができます。これらは新しいものを監視する必要があるときに素晴らしいリソースですが、最初から自分の必要に合った機能をそのまま実行すると思ってはいけません。この場合も設定の調整や慎重なテストが必要ですし、少しの修正が素晴らしい機能やバグ修正を追加するかもしれないと感じた場合は、遠慮せずに監視コミュニティに貢献してください。結局のところ、これは最初に作られる方法です。
