Nagios check_procs がルートによって生成されていないプロセスを報告しない

Nagios check_procs がルートによって生成されていないプロセスを報告しない

ロード バランサー上の 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

これが将来どこかの誰かの役に立つことを願っています。

関連情報