私はクライアントにインストールし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
結果も表示されます。他のコマンドはすべて正常に実行されているため、何が問題だったのかわかりません。
更新と解決
何年も経って、私はこの問題を解決する方法を思い出しました。
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を使用しています。