- PR -

Nagios-NRPEを使用したプロセス監視について

投稿者投稿内容
@beginner
会議室デビュー日: 2008/08/13
投稿数: 19
投稿日時: 2008-10-28 13:23
Naios┬----------->ReplicationServer_Master
  └-------------->ReplicationServer_Slave

######## Nagios Server ########
OS:CentOS5
Nagios ver3.0.3
Nagios_Plugins ver.1.4.12
NRPE ver2.12


########## Client ###########
OS:Ubuntu ver.6.10
Nagios_Plugins ver.1.4.12
NRPE ver2.12

nrpe.cfg------
〜省略〜
#Process数が“0”でCRITICAL
command[check_apache2]=/usr/local/nagios/libexec/check_procs -a 'apache2' -c 1:
〜省略〜


上記構成にてNRPEを使用しProcessの監視を検証しています。
しかし、ReplicationServer_Slaveに関してのみ以下のような現象が発生しています。

ReplicationServer_Slave--->
# ps -ef | grep apache2
root 13749 13398 0 11:42 pts/1 00:00:00 grep apache2

# /usr/local/nagios/libexec/check_procs -a 'apache2' -c 1:
PROCS CRITICAL: 0 processes with args 'apache2'

“ps -ef”で参照した値とNagiosPlugin(check_proc)で取得した値に差異が無いことが確認できます。

Nagios Server--->
#/usr/local/nagios/libexec/check_nrpe -H [SlaveServerIP] -c check_apache2
PROCS OK: 1 process with args 'apache2'

先にSlaveのLocal内で確認した値とNagiosから要求し取得した値に差異が出てしまします。

・Master側では同事象は無く正常に値が取得出来ます。
・他のProcessでも同様にLocalで確認した値とNaigosから取得した値では全て{実稼動プロセス数+1}となってしまいます。
・tcpdumpにてPacketの流通を双方から確認したところ間違いなく対象のServerに対し要求していることを確認しています。
・Process数をStop or Startで手動で変化させてもNagiosServerで参照される値は“0+1”もしくは“n+1”です。
・DISK等の他のNRPEを使用しての監視項目については取得する値の差異等、問題は見受けられませんでした。

以上より本事象の解決方法をお分かりになる方がいらっしゃいましたらご教示下さい。
何卒、宜しくお願い致します。
あるかな
大ベテラン
会議室デビュー日: 2003/11/04
投稿数: 245
投稿日時: 2008-10-28 20:15
こんばんは。

> /usr/local/nagios/libexec/check_procs -a 'apache2' -c 1

リモート実行した場合に単純に上記プロセスも拾っているからじゃないでしょうか?
実行プロセスの絶対パスで指定可能ならそちらを試されては?
あるかな
大ベテラン
会議室デビュー日: 2003/11/04
投稿数: 245
投稿日時: 2008-10-28 20:17
あとマルチポストの意味は十分にご理解ください。

http://oshiete1.goo.ne.jp/qa4436418.html
@beginner
会議室デビュー日: 2008/08/13
投稿数: 19
投稿日時: 2008-10-29 11:32
あるかいなさん

マルチポストなんてあるんですね。
ご教示ありがとうございます。

前回にも記載させていただきましたがMaster側では同様の事象はみられませんでした。

> ・Master側では同事象は無く正常に値が取得出来ます。
> ・他のProcessでも同様にLocalで確認した値とNaigosから取得した値では全て{実稼動プロセス数+1}となってしまいます。
> ・tcpdumpにてPacketの流通を双方から確認したところ間違いなく対象のServerに対し要求していることを確認しています。
> ・Process数をStop or Startで手動で変化させてもNagiosServerで参照される値は“0+1”もしくは“n+1”です。
> ・DISK等の他のNRPEを使用しての監視項目については取得する値の差異等、問題は見受けられませんでした。


宜しくお願い致します。
JET
ベテラン
会議室デビュー日: 2004/02/18
投稿数: 76
投稿日時: 2008-10-29 18:08
check_procs がバイナリでどのようなことをしているのか分かりませんが、
n+1は単に「grep apache2」コマンド自体も含んでいるということはないですよね。
確認のためps -ef | grep [a]pache2 | wc -lで確認しても良いかと思います。
またプロセス数によってエラーを出すと分かっているのであれば、プラグイン自体を
自作するほうが早いと思います。以下のような感じでシェルを簡単に書けるかと思います。

Apache2=`ps -ef | grep [a]pache2 | wc -l`

if [ $Apache2 = "0" ]; then
echo "CRITICAL Aapache Service Down"
exit 1
fi

echo "OK Apache Service Up"
exit 0
Mattun
ぬし
会議室デビュー日: 2004/08/10
投稿数: 1391
投稿日時: 2008-10-29 18:44
引用:

command[check_apache2]=/usr/local/nagios/libexec/check_procs -a 'apache2' -c 1:


引用:

#/usr/local/nagios/libexec/check_nrpe -H [SlaveServerIP] -c check_apache2


切り分けですが、nrpeに定義するコマンド名を、文字列"apache2"を含まない
形式に変更してみたらどうなりますか?

現状だと、SlaveServer側のチェックはnrpeを介さずに
check_nrpeを直接呼び出してますよね。

grep nrpeとかって部分じゃなく、
nrpeが"check_apache2"なる引数伴って起動してるのが検知されてるのでは。

Master側では見られない、とのことですが、
まずはslaveでnrpeの呼び出し方に問題があるのか、程度は切り分けないと、
MasterとSlaveの差異を詰めていくとっかかりがないですし。


そういやプロセス監視でcheck_procsって使ったことがないです。
snmpのチェックプラグイン使って拾っちゃってます。
あるかな
大ベテラン
会議室デビュー日: 2003/11/04
投稿数: 245
投稿日時: 2008-10-29 21:14
Master/Slave の中身の差は、質問者本人にしかわかりません。
ましてリモートで実行されているのだから負荷の差諸々もあるでしょう。
構成/設定が全て同一と過程すると、あとは地道に可能性を潰すしかないと思いますが。

check_procs の中身までは追ってませんが、他の方もご指摘の通りに apache 本体以外に
apache が含まれるプロセス(瞬間的と考えて恐らく監視系)が含まれている結果をまずは疑うべきです。
Master/Slave の差でいうなれば、grep で絞り込んだ場合に grep 自身がヒットする/しないと同じ事象では?
そういう潰し作業が面倒であれば、JET 様が提示されているような代替手段を探すのも手と思います。

過去の投稿を見ましたが、ここは Nagios サポートではないのですから、
事象が起こっている自身の環境で試さないことには、何も先には進めないと思いますよ。
@beginner
会議室デビュー日: 2008/08/13
投稿数: 19
投稿日時: 2008-10-30 15:54
皆様

ご回答ありがとうございます。

当初の私の書き込みで上手く状況が伝わらなかったようなのでもう一度、改めて説明させていただきますf^^;
まず、NaiosのNRPEを利用した監視を行った場合、概要では以下のような動作だと理解をしています。

1-要求
┌-----------NagiosServer------------┐   ┌--------------ReplicationServerSlave-----------┐
[NagiosProcess]--@呼び出し-->[check_nrpe]---Aチェック要求--->[nrped]--B呼び出し-->[Plugin]--Cチェック-->[リソース]

2-応答
┌--------------NagiosServer-----------------┐   ┌----------------ReplicationServerSlave-------------┐
[NagiosProcess]<--Gチェック結果の処理--[check_nrpe]<---F結果の応答---[nrped]<--E結果の応答--[Plugin]<--D結果の応答--[リソース]


上記のようにリソースの情報を取得するのはNagiosから要求をした場合であってもCの動作によってです。

今回、問題視しているのは単純にC(手動実行)の動作を実行した場合の値と
A〜F(手動実行)の結果にリソースに対して要求するPluginは同じなのに差異が生じるというものです。

ReplicationServer_Slave--->
# ps -ef | grep apache2
root 13749 13398 0 11:42 pts/1 00:00:00 grep apache2

# /usr/local/nagios/libexec/check_procs -a 'apache2' -c 1:
PROCS CRITICAL: 0 processes with args 'apache2'

“ps -ef”で参照した値とNagiosPlugin(check_proc)で取得した値に差異が無いことが確認できます。

Nagios Server--->
#/usr/local/nagios/libexec/check_nrpe -H [SlaveServerIP] -c check_apache2
PROCS OK: 1 process with args 'apache2'

ですので、grepが含まれる含まれないとは別の話しになります。

JETさん

改変・作成に伴うライセンス規約の問題もありますので出来ればNagiosで公開されていて実績のあるものを使用したいのですが、
その問題が解決出来るようであれば最終的には作り込みも考えてみたいと思います。

ただ、今は昨日から私的理由で申し訳無いのですが仕様できなくなってしまいましたので、
復活次第にご教示いただいた内容でどのような動作をするのか試してみたいと思いますf^^;

Mattunさん

切り分けですが、nrpeに定義するコマンド名を、文字列"apache2"を含まない
形式に変更してみたらどうなりますか?

現状だと、SlaveServer側のチェックはnrpeを介さずに
check_nrpeを直接呼び出してますよね。

grep nrpeとかって部分じゃなく、
nrpeが"check_apache2"なる引数伴って起動してるのが検知されてるのでは。

Master側では見られない、とのことですが、
まずはslaveでnrpeの呼び出し方に問題があるのか、程度は切り分けないと、
MasterとSlaveの差異を詰めていくとっかかりがないですし。

nrpedの呼び出しかたはMaster/Slaveで同様ですf^^;


そういやプロセス監視でcheck_procsって使ったことがないです。
snmpのチェックプラグイン使って拾っちゃってます。

そうですね。check_snmpも良いかとは思いますが、
SNMPですとスワップアウトされたプロセスの監視出来なくなってしまうんですねf^^;
つまりは“ps -e”で表記されてるもののみの監視となってしまう訳です。。。

宜しくお願い致します。

スキルアップ/キャリアアップ(JOB@IT)