web-dev-qa-db-ja.com

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/serversmysql.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

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

更新および解決済み

何年も後、この問題を解決する方法を思い出します。

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

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

「Define Service」の下では、次のようになりました。

## 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

3
buzzing_bee

片方の端から始めて、前に戻ります。

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

これは、問題がNRPEサーバーの定義にあることを示唆しています。 myHOST、myUSERNAME、またはmyPASSWORDの難読化された変数に、NRPEによって文字どおりに解釈されない文字が含まれている可能性はありますか? (私はあなたがタイプミスと重複した定義をすでにチェックしていると思います!)

1

リモートクライアントのディスクチェックを追加するには、次の手順に従います。これらのステップは、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
1
Amol

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

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

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

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

0
Keith

実装した新しいチェックの1つに同じ問題がありました。 Nagiosサーバーから手動でチェックを実行してみました

[[email protected]]$ /usr/lib64/nagios/plugins/check_nrpe -H db1.example.com -c check_mysql
NRPE: Command 'check_mysql' not defined

Nagiosクライアントサーバー上のNagios NRPEデーモンは、nrpe.dからプログラムメモリにすべてをソースするため、再起動する必要があることがわかりました

[[email protected]]$ Sudo  /etc/init.d/nrpe restart
Shutting down Nagios NRPE daemon (nrpe):                   [  OK  ]
Starting Nagios NRPE daemon (nrpe):                        [  OK  ]

チェックを再度実行し、今回は成功しました

[[email protected]]$ /usr/lib64/nagios/plugins/check_nrpe -H db1.example.com -c check_mysql
OK: MySQL is running fine.
0

私も同じ症状でした。だから多分これは誰か他の時間を節約するでしょう。私の問題は、インクルードディレクトリのファイルに.cfg拡張子がないことでした。

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

マシンは、NRPE v2.15を使用して、参照用にUbuntu 14.04を実行しています。

0
Justin Fortier