Xymonでは、testで計測した値をRRDtoolに取り込んで時系列グラフを描画することができます。それをしようと思ったら、最初に見るべきなのはHow to setup custom graphsです。
Xymonでグラフを描画するためには、testモジュールからXymonサーバに送出するadditional textに所定のフォーマットで値を埋め込まなくてはなりません。どのcolumnをどのフォーマットとして解釈するかは、~xymon/server/etc/xymonserver.cfgのTEST2RRDという行で設定されています。
TEST2RRD="cpu=la,disk,inode,...
に始まり寿限無寿限無のごとく延々と記述が続いています。その直前には、これまた結構長いコメントがついていますが、今、注目すべきところを抜粋してみると
# The format here is "COLUMN=RRDSERVICE". If you leave out the "=RRDSERVICE"
# part, it is assumed to be the same as the COLUMN value.
と書いてあります。このコメントを手がかりに上のTEST2RRD=
の行を解釈してみると
"=RRDSERVICE"
に該当する部分がないので、columnと同名のdiskというRRDSERVICEで解釈される。
ということがわかります。
ここでHow to setup custom graphsのArrange for the data to be collected into an RRD fileというセクションを読んでみるとTEST2RRD
の末尾にslab=ncv
という記述を追加しろと書いてあります。slabというのは、ここで例に取り上げているcolumnの名前です。NCVというのもRRDSERVICEの1つで、How to setup custom graphsの先頭に戻ってThe NCV(Name-Colon-Value) and SPLITNCV methodsで説明されていますが、testモジュールが送出してくるadditional textに含まれている
<データの系列名>スペースかTAB :か=<値 指数表示も可> その後は行末まで無視
というというフォーマットの行を解釈してRRDに取り込むRRDSERVICEです。testモジュールの立場で言えば、このフォーマットの行をadditional textに含めればXymonサーバがRRDに取り込んでくれます。
ここでHow to setup custom graphsのArrange for the data to be collected into an RRD fileに戻ると、TEST2RRD=
の行にslab=ncv
という記述を追加し、さらに
NCV_
column名="
データの系列名:
Data Source Type"
という行を追加しろと書いてあります。How to setup custom graphsに載っている例では律儀に
NCV_slab="inodecache:GAUGE,dentrycache:GAUGE"
と書いてありますが、情報源がわからなくなってしまったんですけれど、additional textの中のすべてのデータ系列が同じData Source Typeであればワイルドカード('*')を使って
NCV_
column名="*:GAUGE"
のように記述できます。
Data Source TypeというのはRRDtoolがデータを解釈する方法の種類で、rrdcreateのDSのセクションで説明されています。ここでは与えられた値を瞬時値として解釈するGAUGEが指定されていますが、累積値として解釈して単位時間あたりの差分を格納するCOUNTERなどがあります。
RRDtoolあるあるですが、COUNTERやDERIVEで計測している累積置が計測対象のrestartなどで0に戻るとグラフにスパイクが生じてしまうことがあります。もしrestartが検知できるなら、起動してからheartbeat(Xymonは10分でcreateする)の間はtestモジュールから数値をレポートするのを抑止すると、スパイクは回避できるでしょう。
NCVを使うと~xymon/data/rrd/ホスト名にcolumn名.rrd
というファイルが1つ生成され、その中にデータ系列名という名前のData Sourceが格納されます。それに対しSPLITNCVを使うと、~xymon/data/rrd/ホスト名の下にデータ系列名.rrd
というファイルが生成され、それぞれのRRDファイルにはlambda
という名前のData Sourceが1つだけ格納されます。SPLITNCVを使うときもTEST2RRD
に記述するキーワードはsplitncv
ではなくncv
です。
例えばwho | wc -lの結果を取り込んでログインユーザ数を計測するのであれば、運用中にDSが変動することはないのでNCVを使えばいいんですが、オートスケールするクラスタで各インスタンスのRTTを計測するのであれば、運用中にDSが変動するのでNCVではうまくいかずSPLITNCVを使うのが適切です。
多くのケースではNCVまたはSPLITNCVを使えば目的は達成できそうです。しかしTEST2RRDの内容を思い出してみると、NCVではないRRDSERVICEが、ずいぶんいろいろと登録されていました。これについてはNCV以外のRRDSERVICEで触れることにします。
How to setup custom graphsのArrange for the data to be collected into an RRD fileの末尾には、xymond_rrdというプロセスをkillしろ、と書いてありますが、どうも経験的にはXymonサーバ(ホストではなくプログラム)全体を再起動しないと設定がうまく反映されないようです。ともかくこれらの手順を踏むと、NCVであれば~xymon/data/rrd/ホスト名/column名.rrd、SPLITNCVであれば~xymon/data/rrd/ホスト名/column名,データ系列名.rrdというファイルが生成されます。Xymonサーバを再起動してからRRDファイルが生成されるのに、測ったことはありませんが10分〜15分ぐらいかかることがあるので、その程度は気長に待ってみて下さい。それでも生成されないようなら、xymonserver.cfgの設定が疑わしいように思います。
RRDファイルが無事に生成されたら、次は内容の確認です。How to setup custom graphsのCheck that the RRD collects dataでは
rrdtool dump ~xymon/data/rrd/HOSTNAME/slab.rrd
とやれ、と書いてありますが、個人的には
rrdtool fetch
RRDファイルAVERAGE -s -1h
とやった方がわかりやすいように思います。もしRRDファイルは生成されていても思わし値が格納されていないようなら、ブラウザでそのtestの監視画面にアクセスして、additional textの内容を確認してみて下さい。
いよいよ最後のステップ、RRDに格納された時系列データをグラフに描画して監視画面に埋め込むための設定をします。設定が必要なファイルは~xymon/server/etc/graphs.cfgです。実際にはdirectory命令を使ってgraphs.dなどのサブディレクトリに置かれたファイルを取り込むようになっていることが多いようです。
このファイルには
[
column名]
RRDtoolの設定
を記述します。RRDtoolの設定は
の各ページを参照して下さい。またSPLITNCVのときは加えて
FNPATTERN
ファイル名の正規表現
という行を書くことができ、正規表現のパターンにマッチしたファイル名が@RRDFN@に、その他@RRDIDX@、@RRDPARAM@、@COLOR@がよしなに(?)展開されます。
以上で独自の監視項目について時系列グラフを描画できるようになりました。