後記のサンプルコードは、指定した1つのホスト、そのホストにおける全サービス、最初のものとは異なるホストにおけるサービスの1つに対し、それぞれのチェックスケジュールを指定するスクリプトである。
#!/bin/sh
NOW='date +%s'
echo "[$NOW] SCHEDULE_HOST_CHECK;somehost;$NOW" \
>/var/nagios/rw/nagios.cmd
echo "[$NOW] SCHEDULE_HOST_SVC_CHECKS;somehost;$NOW" \
>/var/nagios/rw/nagios.cmd
echo "[$NOW] SCHEDULE_SVC_CHECK;otherhost;Service Name;$NOW" \
>/var/nagios/rw/nagios.cmd
exit 0
ここで用いたコマンドのうちSCHEDULE_HOST_CHECKとSCHEDULE_HOST_SVC_CHECKSでは、スケジュールする時刻およびチェック対象となるホスト名を指定する。これに対してSCHEDULE_SVC_CHECKコマンドのチェック対象指定としては、ホスト名だけでなくサービスも特定しなくてはならない。
このサンプルにて用いたような通常タイプのスケジュール指定でのチェックは、指定の時刻通りに実行されない可能性がある。つまりNagiosは、スケジュール指定された時刻だけを基に判断するのではなく、Nagiosの全体ないし特定のオブジェクトに対してチェックを無効化する指定が施されていないかという要件も考慮するのだ。
こうしたチェックをNagiosに強制実行させたい場合は、SCHEDULE_FORCED_HOST_CHECK、SCHEDULE_FORCED_HOST_SVC_CHECKS、SCHEDULE_FORCED_SVC_CHECKというコマンドを使用すればいい。これらの強制コマンドについては、Nagiosによる指定時刻の検証および対象となるオブジェクトがチェック可能かの確認がスキップされるだけで、実行されるチェックそのものに変化はない。いずれにせよこれらを使えば、Nagiosに関するそのほかのパラメータ設定に影響されることなく、確実にチェックを実行できるのである。
そのほかの有用な機能としては、Nagios 3で追加されたカスタム変数関連のコマンド群がある。これは、ホスト、サービス、コンタクトに関するカスタム変数を定義しておくことで、外部コマンドパイプを介して当該ファイルにおける値を変更可能にするというものだ。
こうした変数はチェックおよび通知用のコマンドやイベントハンドラから直接使用できるため、これらの属性を扱うほかのアプリケーションやイベントハンドラは、設定ファイルでの変更を介さずにその値を直接操作できる。
それでは、こうした機能は具体的にどう使用するのだろうか? 例えばGUIを介さないタイプのアプリケーションを介して、オフィスにおける特定ITスタッフの所在を登録する機構が存在するとしよう。そして各スタッフのオフィス在席情報として、このアプリケーションに通知されたIPアドレスの最新情報がNagiosに定期送信されるようになっていれば、通知用のコマンドにこの情報を渡すことで、当該ユーザーへのメッセージ送信用IPアドレスとして利用できるはずである。
例えばユーザー名がjdoeでカスタム変数名がDESKTOPIPだとすると、Nagiosの外部コマンドパイプに送信すべきメッセージは後記のようになる。
[1206096000] CHANGE_CUSTOM_CONTACT_VAR;jdoe;DESKTOPIP;12.34.56.78
実際にこれを実行した後に$_CONTACTDESKTOPIP$を使用すると、12.34.56.78という値が返されるはずである。
コンタクト、ホスト、サービスのカスタム変数を変更するには、Nagiosに用意されているCHANGE_CUSTOM_CONTACT_VAR、CHANGE_CUSTOM_HOST_VAR、CHANGE_CUSTOM_SVC_VARというコマンドを使用すればいい。
本稿で解説したコマンドは、Nagiosの外部コマンドパイプに装備されている機能のごく一部を取り上げただけにすぎない。使用可能な全コマンドの一覧については、「External Command List」のページで確認できる。
あなたのシステムをさらに高度なものするアイデアが詰まった「Leverage OSS」コーナーにどうぞ
Copyright © 2010 OSDN Corporation, All Rights Reserved.