独自の監視項目を追加する(Xymonサーバ編)

独自の監視項目を追加する(Xymonサーバ編)

testモジュールの作成

Xymonクライアントで動作するtestモジュールは自機の情報だけをXymonサーバに通知すればいいのに対して、Xymonサーバで動作するtestモジュールは、一般には複数の監視対象を検査・判定しなければなりません。Xymonでは、hosts.cfgを走査して監視対象を抽出するのはXymonサーバ本体ではなくtestモジュールの役割です。その工程を支援するユーティリティとしてxymongrepが提供されています。xymongrepコマンドは~xymon/server/binにインストールされています。マニュアルには$XYMONHOMEという表記が登場しており、これはXymonサーバがtestモジュールを起動するときに実際に引き渡してくる環境変数なんですが、/usr/local/www/xymonではなく、もう1階層下の/usr/local/www/xymon/serverを指しているので気をつけて下さい。

実行例はマニュアルEXAMPLEに載っていますが、ちょっと別の例をご覧いただきましょう。hosts.cfgに

192.0.2.1 server.example.jp # link:fxp0
192.0.2.254 gw.example.jp # link:wan link:lan link:dmz

と書かれているときに

$ /usr/local/www/xymon/server/bin/xymongrep MyExcellentService

を実行すると

192.0.2.1 server.example.jp # MyExcellentService

という応答が、また

$ /usr/local/www/xymon/server/bin/xymongrep 'link:*'

を実行すると

192.0.2.1 server.example.jp # link:fxp0
192.0.2.254 gw.example.jp # link:wan link:lan link:dmz

という応答が返ってきます。

*を使えば標準のtestのssh:8022やdns=hostnameと同じスタイルのパラメータがついた設定を記述・解釈できます。マニュアルに

Tags may be given with a trailing asterisk '*'

と書かれているように、test名の末尾のワイルドカードとしては指定できますが、先頭や途中にはマッチしません。また、上の例のgw.example.jpのように1ノードでlink:wanlink:lanlink:dmzと複数の監視項目にマッチするときも各項目1行ずつではなく全部を1行にまとめた応答が返ります。

サンプルコードはのServer-side scriptsを見ていただきたいんですが、xymongrepで得られた結果分ループして、それぞれについてXymonクライアントで動作するtestモジュールと同様に

というのが処理の流れです。

Xymonサーバで動作するtestモジュールはXymonクライアントで動作するtestモジュールとは違って1プロセスで一般にはxymongrepで得られた複数の監視対象について処理しなければなりません。タイムアウト待ちが発生し得るような監視項目のときは、あまり時間がかかるとpurple判定されてしまうことがあります。リソースに注意しながらfork()して各監視対象について並行処理するとか、試したことはありませんがPrometheusのexporterからの連想で、情報収集は別プロセスで非同期に行っておき、testモジュールは情報収集モジュールと通信するだけにするといった対策があるでしょう。

testモジュールのインストールとXymonサーバの設定

Xymonサーバで動作するtestモジュールはXymonクライアントと違って任意の場所に置くことができる代わりにtasks.cfgという設定ファイルにエントリを追加しなければいけません。実際にはtasks.cfgに直接記述するのではなくtasks.cfgの中でdirectory命令を使って、例えばtasks.dといったサブディレクトリに設定を置くことができるようになっていることが多いようです。

内容は

[test名]
ENVFILE xymonserver.cfgのfull path
CMD testモジュールのfull path

あと、必要に応じてLOGFILE、INTERVALなどを指定して下さい。tasks.cfgにエントリを追加すれば、特にXymonサーバにHUPを送ったり再起動したりしなくてもtestモジュールが起動されるようになります。Xymonクライアントで動作するtestモジュールと同様に、特にcolumnを追加する設定も必要ありません。誤ったcolumnができてしまったときの対処は独自の監視項目を追加する(Xymonクライアント編)をご覧下さい。


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