独自の監視項目を追加する(グラフ編)

独自の監視項目を追加する(グラフ編)

testで計測した値をXymonサーバに取り込む

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=の行を解釈してみると

ということがわかります。

NCVとSPLITNCV

ここで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で触れることにします。

RRDを生成する

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@がよしなに(?)展開されます。

以上で独自の監視項目について時系列グラフを描画できるようになりました。


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