Nagios NRPE: コマンド「my_command」が定義されていません

Nagios NRPE: コマンド「my_command」が定義されていません

私はクライアントにインストールしNagios® Core™ 3.5.1、実行していますNRPE v2.14RHEL 6.3

Nagiosにこのエラーメッセージが表示される

NRPE: Command 'check_mysql_connections' not defined

私の場合はnrpe.cfgすでに以下を設定していますallowed_host, include_dir:

allowed_hosts=xx.xx.xx.xx
dont_blame_nrpe=1
include_dir=/etc/nagios/services

私の命令は/etc/nagios/services/check_mysql_connections.cfg

command[check_mysql_connections]=/usr/lib64/nagios/plugins/check_mysql_all -K connections -H myHOST -u myUSERNAME -p myPASSWORD

Nagios サーバーでは、すでにファイルを設定しておりnagios.cfg、次のような内容を追加しcommands-custom.cfgます/etc/nagios/objects

define command {
command_name    check_mysql_connections
command_line    $USER1$/check_nrpe -H $HOSTADDRESS$ -c check_mysql_connections
}

そして/etc/nagios/servers私は追加しましたmysql.cfg

## Define Host Group ##

define hostgroup {
hostgroup_name          mysql-databases
alias                   MySQL Databases
}

#######################
## Define Hosts ##

define host {
use             linux-server
host_name       bdgbnbpmydb02
alias           MySQL Database
address         xx.xx.xx.xx
hostgroups      mysql-databases
contact_groups  admins
check_command   check-host-alive
}

#######################
## Define Service ##

define service {
use                     generic-service
hostgroup_name          mysql-databases
service_description     MySQL Connections
check_command           check_mysql_connections
}

すでにNRPEプロセスを終了し、削除して/var/run/nrpe.pid、NRPEプロセスを再度開始しました。また、私のNRPEはxinet.dの下では実行されていません。

リモート ホスト上でローカルにコマンドを実行しようとすると、結果が返されます。また、次のコマンドを使用して Nagios サーバーから実行しようとすると、次のようになります。

/usr/lib64/nagios/plugins/check_nrpe -H xx.xx.xx.xx -c check_mysql_connections

結果も表示されます。他のコマンドはすべて正常に実行されているため、何が問題だったのかわかりません。

更新と解決

何年も経って、私はこの問題を解決する方法を思い出しました。

commands-custom.cfgのカスタム コマンド (Nagios サーバー上) を編集する必要がある/etc/nagios/objectsため、次のようになります。

define command {
command_name         check_nrpe
command_line         $USER1$/check_nrpe -H $HOSTADDRESS$ -c $ARG1$ 
}

「サービスの定義」の下には次の内容が記載されていました。

## Define Service ##

define service {
use                     generic-service
hostgroup_name          mysql-databases
service_description     MySQL Connections
check_command           check_nrpe!check_mysql_connections
}

要約すると、サービスを確認するコマンドを分離しcheck_nrpe、カスタムコマンドを呼び出す必要があります。check_nrpe!check_mysql_connections

参照: https://support.nagios.com/forum/viewtopic.php?f=7&t=33448

答え1

片方の端から始めて、後ろに向かって進みます。

  • コマンドラインでは「/usr/lib64/nagios/plugins/check_mysql_all -K connections -H myHOST -u myUSERNAME -p myPASSWORD」が機能するとおっしゃいました。
  • NRPE は他のコマンドとともにそのサーバー上で動作するとおっしゃいました。
  • nagios サーバーからのコマンド ラインでコマンドが失敗するとのことです。

これは、問題が NRPE サーバー上の定義にあることを示唆しています。myHOST、myUSERNAME、または myPASSWORD の難読化された変数に、NRPE によって非文字通りに解釈される文字が含まれている可能性はありますか? (タイプミスや重複した定義については既に確認済みであると想定しています)

答え2

リモート クライアント ディスク チェックを追加するには、次の手順に従ってください。これらの手順は、mysql のセットアップにも使用できます。

クライアント


vi /etc/nagios/nrpe.cfg

allowed_hosts=127.0.0.1,nagios_server_ip_here
dont_blame_nrpe=1
#checking root  partion
command[check_disk]=/usr/lib/nagios/plugins/check_disk -w 25% -c 20% -p /

サーバ


ファイルから/usr/local/nagios/etc/resource.cfg次のように与えられます$USER1$=/usr/local/nagios/libexec:

したがって、ターミナルでコマンドを実行します。

locate check_nrpe                              //find the location of check_nrpe
cp /usr/lib/nagios/plugins/check_nrpe /usr/local/nagios/libexec/
cd /usr/local/nagios/libexec/
chown nagios:nagios check_nrpe

ファイルを編集します /usr/local/nagios/etc/objects/commands.cfg:

define command{
    command_name    check_disk
    command_line    $USER1$/check_nrpe -H '$HOSTADDRESS$' -t 30 -c check_disk
     }

編集 /usr/local/nagios/etc/servers/clients.cfg

define service {
    use                             generic-service
    host_name                       BI Server
    service_description             Disk
    check_command                   check_disk
    notifications_enabled           1
    }

サービスを再起動する

/etc/init.d/nagios restart                          //server side
/etc/init.d/nagios-nrpe-server restart             //client side

nagiosユーザーとしてターミナルでコマンドを確認することもできます。

su - nagios
cd /usr/local/nagios/libexec/
./check_nrpe -H nagios_client_ip_here -t 30 -c check_mysql
./check_nrpe -H nagios_client_ip_here -t 30 -c check_disk

答え3

通常、そのプラグインの権限の問題が疑われます。手動テストは必ず nagios (または nrpe) ユーザーとして実行してください。

しかし、この場合、NRPE コマンドが定義されていないと主張しているため、実行に至っていません...

NRPE コマンド def を、インクルード ファイルではなく、nrpe.cfg に直接配置します。(その後、NRPE を再起動します。)

数年前に、同様の問題 (ただし EPEL の NRPE の場合) があったことを思い出します。何らかの理由で、nrpe.cfg に別のファイルがインクルードされませんでした。しかし、インクルード ファイルが機能しない理由はわかりませんでした。

答え4

私も同じ症状がありました。これで他の人の時間の節約になるかもしれません。私の問題は、include ディレクトリ内のファイルに .cfg 拡張子がなかったことです。

私のインクルードディレクトリはinclude_dir=/etc/nagios/nrpe.d

参考までに、このマシンはUbuntu 14.04を実行しており、NRPE v2.15を使用しています。

関連情報