Nagios® Core™ 3.5.1
を実行しているクライアントにNRPE v2.14
とRHEL 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
それも結果を与えます。他のコマンドはすべて正常に実行されているため、何が問題だったかわかりません。
更新および解決済み
何年も後、この問題を解決する方法を思い出します。
(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
片方の端から始めて、前に戻ります。
これは、問題がNRPEサーバーの定義にあることを示唆しています。 myHOST、myUSERNAME、またはmyPASSWORDの難読化された変数に、NRPEによって文字どおりに解釈されない文字が含まれている可能性はありますか? (私はあなたがタイプミスと重複した定義をすでにチェックしていると思います!)
リモートクライアントのディスクチェックを追加するには、次の手順に従います。これらのステップは、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
通常、私はそのプラグインの権限の問題を疑っています。手動テストは必ずnagios(またはnrpe)ユーザーとして実行してください。
しかし、この場合、NRPEコマンドが定義されていないとさえ主張しているため、実行するまでには至っていません...
NRPEコマンドdefをインクルードファイルではなくnrpe.cfgに直接配置します。 (その後、NRPEを再起動します。)
数年前に同様の問題があったことを思い出しますが(EPELからのNRPEで)、何らかの理由でnrpe.cfgに別のファイルが含まれませんでした。ただし、インクルードファイルが機能しない理由はわかりません。
実装した新しいチェックの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.
私も同じ症状でした。だから多分これは誰か他の時間を節約するでしょう。私の問題は、インクルードディレクトリのファイルに.cfg拡張子がないことでした。
私のインクルードディレクトリはinclude_dir=/etc/nagios/nrpe.d
マシンは、NRPE v2.15を使用して、参照用にUbuntu 14.04を実行しています。