カスタム スクリプトを作成について

お疲れ様です。
テンプレートを使っての監視ではなく、
スクリプトを使っての監視について質問させて頂きます。
よろしくお願いします。

例えばの話ですが、cisco3550のinterface状況の値を取って、
正常な値の状況と比較し、
違う場合はメール通知ができるようにしたいと思います。

環境:centOS5,zabbix1.4.5
.............................................
# vi /var/lib/zabbix/cisco3550-status.sh
#!/bin/sh
SNMPORG=/var/lib/zabbix/3550_OKstatus.txt
STATE="1.3.6.1.2.1.2.2.1.8"

snmpwalk -v2c -c public 192.168.0.254 $STATE >$SNMPLOG
CHECKORG=`cat $SNMPORG`
CHECK=`cat $SNMPLOG`
if [ "${CHECK}" = "$CHECKORG" ] ; then
?
else
?
fi
exit 0  。。。。。。。。。。。。。。。。。

カスタムスクリプトを/var/lib/zabbixの下に配置し、
メディア(script)とアイテムの設定し、
トリガーの設定は、{ホストネーム:cisco3550-status.sh.last(0)}=0にし、0じゃない場合は、障害になるようにすればいいかと思いますが、
問題は、0じゃない場合を障害にするため、スクリプトのif文以下のどのように、作成するばいいか、
途方にくれています(泣)。

すみませんが、適切なコメントをお願いします。

キム

アクションの設定を行いたいと思いますが、

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー KAZ の写真

yes2000cさん

「カスタム スクリプトを作成について」と言う質問で宜しいですよね?

下記で良いかと思いますが…
<code>
if [ "${CHECK}" = "$CHECKORG" ] ; then
# OK
echo 0
else
# NG
echo 1
fi
</code>

ちなみに、「例えばの話ですが、cisco3550のinterface状況の値を…」を実現したい場合は、カスタムスクリプトを使用しなくても監視が可能になります。

下記は私が設定したLinuxサーバのlinkdownのitem設定です。

■item
[img]http://homepage2.nifty.com/KazuoIto/zabbix/2009-05-14_172517.png[/img]

■trigger
[img]http://homepage2.nifty.com/KazuoIto/zabbix/2009-05-14_173521.png[/img]

ユーザー yes2000c の写真

ご返信ありがとうございます。
確かにoidを利用しテンプレートを使っての監視もありますが、あえてスクリプトで監視してみたいと思いました。
例えば、これが成功すれば、同じパタンのスクリプトを使って、
管理するノードのWebログインチェックの成功有無を監視したい時、成功(echo 0)の際はそのままで、失敗(echo 1)の際は、障害のメールを通知するパタンの監視をしたいと思ったからです。
KAZさんのご助言通り、
if [ "${CHECK}" = "$CHECKORG" ] ; then
# OK
echo 0
else
# NG
echo 1
fi
という形でテストをして、うまく行かず、昨日は投稿しました。

質問の要は、NGの際の echo 1の値の結果をzabbixサーバが認識して、echo 1の際、トリガーを使って「失敗のメール通知」をさせたいですが、
上記のスクリプトを使った場合、テンプレートのトリガーをどのように作成するばいいでしょうか。
単純に、メディア(script)とアイテムの設定し、
トリガーを、{ホストネーム:cisco3550-status.sh.last(0)}=0にし、0じゃない場合は、障害になるようにするだけではダメでしょうか? 申し訳ございませんが、よろしくお願いします。

ユーザー KAZ の写真

yes2000cさん

質問の要は、NGの際の echo 1の値の結果をzabbixサーバが認識して、echo 1の際、トリガーを使って「失敗のメール通知」をさせたいですが、
上記のスクリプトを使った場合、テンプレートのトリガーをどのように作成するばいいでしょうか。
単純に、メディア(script)とアイテムの設定し、
トリガーを、{ホストネーム:cisco3550-status.sh.last(0)}=0にし、0じゃない場合は、障害になるようにするだけではダメでしょうか? 申し訳ございませんが、よろしくお願いします。

まずは、zabbix_agentd.confの最後に「UserParameter=アイテム名,cisco3550-status.sh」と追加が必要です。

その後、アイテム登録で該当のホストに「type=ZABBIX Agent、key=アイテム名、Type of infomation=Numeric(integer 64bit)」を登録します。

最後に、トリガー登録で「{ホストネーム:アイテム名.last(0)}=0」とすればOKです。

詳しくは「ZABBIX Manual v1.4 Release012」の109頁「5.13 UserParameters」を参照してみて下さい。

下記はZABBIX本家のドキュメントのURLです。
[url=http://www.zabbix.com/documentation.php]Homepage of ZABBIX Documentation[/url]

ユーザー kodai の写真

こんにちは。

スクリプトの登録方法が誤っているように思います。まずはZABBIXが利用するスクリプトには以下の3種類あることをご確認ください。

<ol><li>1.ユーザスクリプト: KAZさんが回答されている方法で、ZABBIXエージェントの監視機能を拡張するための機能です。</li><li>2.外部チェック(ExternalCheck): ZABBIXサーバがスクリプトを実行して監視を行う機能です。</li><li>3.アラートスクリプト: 障害通知(アクション)から実行できる機能です。</li></ol>
キムさんがスクリプトを登録しているのは3つ目のアラートスクリプトではないかと思います。この機能から監視を行うことはできませんので、1.か2.の機能を利用してスクリプトを登録するようにしてください。

ユーザー yes2000c の写真

KAZさま kodaiさま
ご説明、ありがとうございました。
的確で、分かりやすいご対応、本当に参考になりました。
ありがとうございました。これからもよろしくお願いします。