web-dev-qa-db-ja.com

Nagios:NRPE:出力を読み取ることができません。理由がわかりませんか?

Nagiosサーバーと監視対象サーバーがあります。監視対象サーバー:

[root@Monitored ~]# netstat -an |grep :5666
tcp        0      0 0.0.0.0:5666                0.0.0.0:*                   LISTEN      
[root@Monitored ~]# locate check_kvm
/usr/lib64/nagios/plugins/check_kvm
[root@Monitored ~]# /usr/lib64/nagios/plugins/check_kvm -H localhost
hosts:3 OK:3 WARN:0 CRIT:0 - ab2c7:running alpweb5:running istaweb5:running
[root@Monitored ~]# /usr/lib64/nagios/plugins/check_nrpe -H localhost -c check_kvm
NRPE: Unable to read output
[root@Monitored ~]# /usr/lib64/nagios/plugins/check_nrpe -H localhost
NRPE v2.14
[root@Monitored ~]# ps -ef |grep nrpe
nagios   21178     1  0 16:11 ?        00:00:00 /usr/sbin/nrpe -c /etc/nagios/nrpe.cfg -d
[root@Monitored ~]#

Nagiosサーバーで:

[root@Nagios ~]# /usr/lib64/nagios/plugins/check_nrpe -H 1.1.1.159 -c check_kvm
NRPE: Unable to read output
[root@Nagios ~]# /usr/lib64/nagios/plugins/check_nrpe -H 1.1.1.159
NRPE v2.14
[root@Nagios ~]#

同じコマンドを使用してネットワーク内の別のサーバーをチェックすると、機能します。

[root@Nagios ~]# /usr/lib64/nagios/plugins/check_nrpe -H 1.1.1.80 -c check_kvm
hosts:4 OK:4 WARN:0 CRIT:0 - karmisoft:running ab2c4:running kidumim1:running travel2gether1:running
[root@Nagios ~]#

Nagiosアカウントを使用してローカルでチェックを実行する:

[root@Monitored ~]# su - nagios
-bash-4.1$ /usr/lib64/nagios/plugins/check_kvm
hosts:3 OK:3 WARN:0 CRIT:0 - ab2c7:running alpweb5:running istaweb5:running
-bash-4.1$

Nagiosアカウントを使用してNagiosサーバーからリモートでチェックを実行する:

-bash-4.1$ /usr/lib64/nagios/plugins/check_nrpe -H 1.1.1.159 -c check_kvm
NRPE: Unable to read output
-bash-4.1$ /usr/lib64/nagios/plugins/check_nrpe -H 1.1.1.159
NRPE v2.14
-bash-4.1$

Nagiosアカウントを使用して、ネットワーク内の別のサーバーに対して同じcheck_kvmを実行します。

-bash-4.1$ /usr/lib64/nagios/plugins/check_nrpe -H 1.1.1.80 -c check_kvm
hosts:4 OK:4 WARN:0 CRIT:0 - karmisoft:running ab2c4:running kidumim1:running travel2gether1:running
-bash-4.1$ 

権限:

-rwxr-xr-x. 1 root root 4684 2013-10-14 17:14 nrpe.cfg (aka /etc/nagios/nrpe.cfg)
drwxrwxr-x. 3 nagios nagios 4096 2013-10-15 03:38 plugins (aka /usr/lib64/nagios/plugins)

/etc/sudoers:

[root@Monitored ~]# grep -i requiretty /etc/sudoers
#Defaults    requiretty

iptables/selinux:

[root@Monitored xinetd.d]# service iptables status
iptables: Firewall is not running.
[root@Monitored xinetd.d]# service ip6tables status
ip6tables: Firewall is not running.
[root@Monitored xinetd.d]# grep disable /etc/selinux/config 
#     disabled - No SELinux policy is loaded.
SELINUX=disabled
[root@Monitored xinetd.d]#

/etc/nagios/nrpe.cfgのコマンドは次のとおりです。

[root@Monitored ~]# grep kvm /etc/nagios/nrpe.cfg 
command[check_kvm]=Sudo /usr/lib64/nagios/plugins/check_kvm

nagiosユーザーが/etc/sudoersに追加されます:

nagios  ALL=(ALL) NOPASSWD:/usr/lib64/nagios/plugins/check_kvm
nagios  ALL=(ALL) NOPASSWD:/usr/lib64/nagios/plugins/check_nrpe

check_kvmは、次のようなシェルスクリプトです。

#!/bin/sh

LIST=$(virsh list --all | sed '1,2d' | sed '/^$/d'| awk '{print $2":"$3}')

if [ ! "$LIST" ]; then
  EXITVAL=3 #Status 3 = UNKNOWN (orange) 
  echo "Unknown guests"
  exit $EXITVAL
fi

OK=0
WARN=0
CRIT=0
NUM=0

for Host in $(echo $LIST)
do
  name=$(echo $Host | awk -F: '{print $1}')
  state=$(echo $Host | awk -F: '{print $2}')
  NUM=$(expr $NUM + 1)

  case "$state" in
    running|blocked) OK=$(expr $OK + 1) ;;
    paused) WARN=$(expr $WARN + 1) ;;
    shutdown|shut*|crashed) CRIT=$(expr $CRIT + 1) ;;
    *) CRIT=$(expr $CRIT + 1) ;;
  esac
done

if [ "$NUM" -eq "$OK" ]; then
  EXITVAL=0 #Status 0 = OK (green)
fi

if [ "$WARN" -gt 0 ]; then
  EXITVAL=1 #Status 1 = WARNING (yellow)
fi

if [ "$CRIT" -gt 0 ]; then
  EXITVAL=2 #Status 2 = CRITICAL (red)
fi

echo hosts:$NUM OK:$OK WARN:$WARN CRIT:$CRIT - $LIST

exit $EXITVAL

編集(13年10月22日):これらすべてに続いて、スクリプトから何らかの応答を得ることができます。

[root@Monitored ~]# /usr/lib64/nagios/plugins/check_nrpe -H localhost -c check_kvm
Unknown guests
[root@Monitored ~]# /usr/lib64/nagios/plugins/check_nrpe -H localhost
NRPE v2.14
[root@Monitored ~]# /usr/lib64/nagios/plugins/check_kvm
hosts:3 OK:3 WARN:0 CRIT:0 - ab2c7:running alpweb5:running istaweb5:running
[root@Monitored ~]# su - nagios
-bash-4.1$ /usr/lib64/nagios/plugins/check_kvm
hosts:3 OK:3 WARN:0 CRIT:0 - ab2c7:running alpweb5:running istaweb5:running
-bash-4.1$ /usr/lib64/nagios/plugins/check_nrpe -H localhost -c check_kvm
Unknown guests
-bash-4.1$ /usr/lib64/nagios/plugins/check_nrpe -H localhost
NRPE v2.14

問題は、check_nrpeコマンドにどのように関連しているか、サーバーのnrpeインストールに関連しているようです。

編集12/2/13:問題のあるサーバーの動作に関するその他のチェック: enter image description here

5
Itai Ganot

細かい書き上げがいいですね!構成の複雑さを軽減して、機能するかどうかを確認しましたか?

まず、nrpe.cfgの行を

command[check_kvm]=/usr/lib64/nagios/plugins/check_kvm

/ usr/lib64/nagios/plugins/check_kvmスクリプトを一時的に次のような本当に単純なものに変更します。

#!/bin/sh
echo Hi
exit 0

それが機能する場合は、複雑さを増やし始めることができます。おそらく、nagiosユーザーにスクリプトへのSudoアクセスを与える代わりに、virshコマンドへのアクセスが本当に必要であり、nrpe.cfgコマンドラインでSudoの部分を省略できます。

4
KJH

私は同じ問題を抱えていましたが、(監視対象のマシンで)nagiosプロセスを強制終了することで解決できました:

ps -ef | grep nagios
kill -9 [NagiosProcessNumber]
/etc/init.d/nagios-nrpe-server start

その後はすべてうまくいきました。

1
user428879

http://forums.gentoo.org/viewtopic-t-806014-start-0.html で、あなたに似たGentooサーバーで問題が発生しました。

問題をデバッグするための素晴らしい方法があります。

その投稿のユーザーはcheck_diskに問題があり、あなたとまったく同じエラーメッセージを受け取りました。

彼は次のコマンドを実行するように言われました:

ssh remote_ip /usr/lib/nagios/plugins/check_disk -w 10 -c 5 -p "/"  2>&1

2>&1はstderrを出力し、正確なエラーを明らかにする可能性があります。

したがって、あなたの場合は、remote_ipをサーバーのIPアドレスに置き換えて、check_nrpe onを実行できません。そして、check_diskコマンドを、check_kvmが実行することになっている完全なコマンドに置き換えます。パラメータなしで実行すると、実行して実行できます

  ssh <remote_ip> /usr/lib64/nagios/plugins/check_kvm 2>&1

うまくいけば、問題に関する情報が明らかになるでしょう。

幸運を!

1
ufk

リモートサーバー(nrpeエージェントが実行されているサーバー)でselinuxがオンになっているかどうかを確認します。 [root@dl1-ap-ldap1 plugins]# getenforce Enforcingはいの場合は、オフにするか、設定してください[root@dl1-ap-ldap1 plugins]# setenforce 0

0
autumn wang