ロード バランサー上の nginx サービスを監視するように Nagios を設定しようとしていますが、サービスが稼働中であると表示されません。コマンドとサービス定義は以下のとおりです。ルートによって生成されていないプロセスは、実行中として表示されないようです。nginx プロセスは www-data によって実行されています。別のユーザーで実行していた「トップ」プロセスをチェックするという単純な方法も試しました。以下に示す方法は、ルートによって実行されているプロセスを選択する限り、問題なく機能します。プロセスが他のユーザーによって生成された場合は、クリティカルとして表示され、機能しません。何かご意見はありますか?
define command {
command_name check_nginx
command_line $USER1$/check_procs -c 1: -C nginx
}
define service {
use local-service
host_name my_host
service_description Load Balance Service
check_command check_nginx
}
答え1
check_proc プラグインに含まれるさまざまなオプションをすべて試しても何も解決しなかったため、別の方法を試すことにしました。次の Python スクリプトを作成し、プラグイン ディレクトリに含めました。Python スクリプトの名前は check_service.py です。別の名前を付ける場合は、それに応じて以下のサービスとコマンドを変更する必要があります。
import os
status = os.system('systemctl is-active --quiet nginx')
if status == 768:
print('Critical, Service is not running')
exit(2)
elif status == 0:
print('OK, Service is Running')
exit(0)
次に、commands.cfg ファイルに次のコマンドを追加しました。$ARG1$ は、現在作業中のスクリプトの将来のバージョン用です。必須ではありません。
define command{
command_name check_service
command_line $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_service $ARG1$
}
サービスを次のように定義しました
define service {
use local-service
host_name debian
service_description Load Balance Service
check_command check_service
}
次にクライアントでこのコマンドをnrpe.cfgファイルに追加しました
command[check_service]=python3 /usr/lib/nagios/plugins/check_service.py
これが将来どこかの誰かの役に立つことを願っています。