独自の監視項目を追加する(俯瞰編)

独自の監視項目を追加する(俯瞰編)

このページでは、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名 greenyellowred additional text

を与えます。ここでstatusadditional 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について

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モジュールでは違います。


index |俯瞰編 |Xymonクライント編 |Xymonサーバ編 |グラフ編 |NCV以外のRRDSERVICE
Copyright(c) 2020 Koh-ichi Ito, All rights reserved
Last update: $Date:: 2021-12-31 18:07:00 +0900#$