Nagios や Icinga の標準的プラグインでは、Total Processes や Zombie Processes などのプロセス数の履歴を残せない。check_procs プラグインが「パフォーマンスデータ」を返さないからだ。

Nagios/Icinga のプラグインが返すデータは

<pre>PING ok - Packet loss = 0%, RTA = 0.80 ms
percent_packet_loss=0, rta=0.80
</pre>
のようになっている。パイプ(
)の前が人間が読むデータ、後ろが RDDtool などの別プログラムによって履歴が保存されるパフォーマンスデータだ。Nagios/Icinga は、パイプを見るだけで、その前も、後ろも気にしない。パフォーマンスデータのフォーマットも処理を任せるプラグイン次第ということになっているが、上記のように key=value, key=value, … 形式とすれば標準的なパフォーマンスデータ処理ツールがそのまま使える。

check_procs プラグインは次のようなデータを返す。パフォーマンスデータがない。

<pre>$ /usr/lib64/nagios/plugins/check_procs
PROCS OK: 103 processes
</pre>
これを、以下のような形式を返すようにしてやればいい。

<pre>PROCS OK: 104 processes
procs=104
</pre>
ラッパースクリプトを書くか、check_procs.c を変更してビルドすれば実現できる。今回はラッパースクリプトで楽することにした。

<pre>#!/bin/bash
LINE=/usr/local/nagios/libexec/check_procs $*
RC=$?
COUNT=echo $LINE | awk '{print $3}'
echo $LINE | procs=$COUNT
exit $RC
</pre>http://www.nagios-portal.org/wbb/index.php?page=Thread&postID=100529&l=2

これで Total Processes と Zombie Processes のヒストリが残るようになった。