このページでは、Xymonに独自の監視項目を追加する方法について説明します。
hosts.cfgで
IPアドレス ホスト名 #
に続いて記述する、監視項目を指定するキーワードや、それを実現するための動作やモジュールなどの概念をtestと呼びます。例えば
192.0.2.80 www.example.jp # http ssh
の場合は、http、sshがそれぞれtestです。
Xymonの画面上に現れる監視項目名はcolumnと呼びます。
例えばhttpやsshはtest名とcolumn名は同じですが、test名、column名、testモジュールのプログラム名は一致している必要はありませんし、一致させたければ、それはtestモジュールを作成する人の責任です。column名にはアルファベット、数字、'_'しか使うことができません。'/'や'.'などは使えないので'_'に書き換えるのが現実的なところではないでしょうか? また、画面上でのcolumnの順序は自動的にソートされてしまい、順序を指定する手段はないようです。どうしても順序を制御したければ、Ciscoのroute-mapやSysV initのように頭に番号でもつければ不細工ながら実現はできそうです。
この直後で紹介するHow can I create a custom test script?ではtestを実現する機能単位を指して
script or custom program
という表現が使われていますが、このコンテンツではtestモジュールと呼ぶことにします。
独自のtestを作ろうと思ったときに最初に見るべきなのは
です。Xymonを使っていれば、監視画面の上端のメニューバーのHelpでホバーしてポップアップしたメニューの中のTips and tricksを選択すると表示されます。
事の核心をひとことで言うと、必要な計測や判定をした後、xymonコマンドを起動して、その結果をXymonサーバに通知する、に尽きます。このときのxymonコマンドの引数はマニュアルのXYMON MESSAGE SYNTAXの項で述べられている中のstatusキーワードを使って
xymon
Xymonサーバstatus
監視対象のホスト名.test名 greenかyellowかred additional text
を与えます。ここでstatus
〜additional textはxymonコマンドには1つのargvとして引き渡さなくてはいけません。How can I create a custom test script?のサンプルコードでは、改行を含んでいて分かりづらいですが、この箇所を'"'でくくっていることに注目して下さい。xymonコマンドと、独自の監視項目を追加する(Xymonサーバ編)で触れるxymongrepコマンドを起動する以上のAPIは特に提供されていないので、環境変数が参照できてexec()やsystem()などの命令でこれらのOSコマンドが起動できる処理系であれば、testモジュールを記述する言語に制約はありません。現に前述のページに載っているサンプルは、これらの機能についてトップレベルにある処理系であるBourne shellのスクリプトで書かれています。
監視対象のホスト名(HOSTNAME)はマニュアルに
Where a HOSTNAME is specified, it must have any dots in the hostname changed to commas if the Xymon FQDN setting is enabled (which is the default).
と書かれているように、'.'を','に置換する必要があることに注意して下さい。理由はわかりませんが、status
メッセージの構文はで監視対象のホスト名(HOSTNAME)とテスト名(TESTNAME)を'.'で連接するので区別のためではないかと想像します。HOSTNAMEの'.'には触らずにTESTNAMEとの区切りを','にすりゃいいじゃないか、だいたい何でくっつけるんだ? と思うんですが、きっとBig Brother以来、脈々と引きずっているしがらみがあるんでしょう。しかし不思議なことに、次に説明するXymonクライアントの環境変数MACHINEには','ではなく'.'が含まれていて、これをそのままXymonサーバに送出してもうまく動いています。
additional textの部分は、監視画面に表示されます。connやdiskなどXymonの標準の監視項目ではタイムスタンプが表示されており、How can I create a custom test script?のサンプルコードではdateコマンドの結果を'`'で取り込んでいますが、これはXymonクライアントとXymonサーバの間のプロトコルの一部ではありません。極端なことを言えば、additional textはなくても構いません。additional textに&green、&yellow、&redのエンティティを含めると、それぞれの色のアイコンが表示されます。計測結果など何等かの数値をXymonサーバに通知して時系列グラフを描画させるためには、additional testの部分にさらに規則があるんですが、独自の監視項目を追加する(グラフ編)で触れることにします。
事の核心はxymonコマンドでstatusメッセージを送出することだと述べましたが、そこへ至る段取りというか取り巻きの部分がXymonクライアントで動作させるtestモジュールとXymonサーバで動作させるtestモジュールでは違います。