3.1 グラフの作り方

公式ドキュメントのhelp/howtograph.html を参考にしています.

3.1.1 カスタムグラフを設定する方法

3.1.1.1 カスタムグラフを設定する方法

このドキュメントはXymonインストールにおける,カスタムグラフの設定を説明します. Xymonは多くの監視項目用のグラフ設定が最初から入っていますが, 設定をすることで,グラフ表示される監視項目を増やすこともできます 多くの種類の監視を行い,グラフでそれらを見るのは楽しいです. このドキュメントはその方法を教えます.

3.1.1.2 データを集めるスクリプトを作る

まず最初に,テストデータを作成してください. これは通常,statusdataを利用して,いくつかのデータをXymonに送るエクステンションスクリプトです. statusを使用すると,ディスプレイに緑・黄色・赤のアラートの新たなカラムが現れるでしょう. dataを使用するなら,Xymonはただデータをグラフに集めるだけです. グラフを見るにはtrendsをクリックしなければなりません (訳注:カラムは追加されません). この例では,statusを使用します.

では,エクステンションスクリプトを作成します. ここに例とするスクリプトがあります. Linuxカーネルのメモリから2つの値の統計を抽出して,これらをXymonに報告します.

リスト 3.1 slab
#!/bin/sh

cat /proc/slabinfo | \
   egrep "^dentry_cache|^inode_cache" | \
      awk '{print $1 " : " $3*$4}' >/tmp/slab.txt

$BB $BBDISP "status $MACHINE.slab green `date`

`cat /tmp/slab.txt`
"

exit 0

3.1.1.3 スクリプトを実行するためにxymonlaunchを編集する

~xymon/client/ext/slab にこのスクリプトを保存してください. そして, ~xymon/client/etc/clientlaunch.cfg にセクションを加えて,5分毎に実行させることになります.

リスト 3.2 ~xymon/client/etc/clientlaunch.cfg
[slabinfo]
	ENVFILE /usr/lib/xymon/client/etc/xymonclient.cfg
	CMD /usr/lib/xymon/client/ext/slab
	INTERVAL 5m

(訳注:下記のほうが汎用的です)

リスト 3.3 ~xymon/client/etc/clientlaunch.cfg
[slabinfo]
        ENVFILE $XYMONCLIENTHOME/etc/xymonclient.cfg
        CMD $XYMONCLIENTHOME/ext/slab
        LOGFILE $XYMONCLIENTHOME/logs/slab.log
        INTERVAL 5m

(Xymonサーバにこれを追加しなければなりません.)

3.1.1.4 Xymonにデータが届くことを確認してください

数分後,slabカラムが現れます.出力はこんな感じになります:

	Sun Nov 20 09:03:44 CET 2005

	inode_cache : 330624
	dentry_cache : 40891068

3.1.1.5 データがRRDファイルの中に集められるように調整する

届くデータは,上記を見て頂ければわかるように,Name-Colon-Value(名前コロン値)の形式で報告されます. そのため,XymonのNCVモジュールを使用します. Xymonはこの例では2つのデータを見つけます. ひとつ目はinodecacheで,2番目はdentrycacheです. データ名は, [a-zA-Z0-9_] を要素として,19文字以内としなければなりません.

これらのデータを集めるようにするために, ~xymon/server/etc/xymonserver.cfg を編集してください. TEST2RRD設定は,Xymonの監視結果をどのようにRRDデータファイルにマッピングするかを定義します. 新しい監視としてこの設定に,slab=ncvを行末に付け加えます.

リスト 3.4 ~xymon/server/etc/xymonserver.cfg
TEST2RRD="cpu=la,disk,<...その他もろもろ...>,xymond,mysql=ncv,slab=ncv"
 

slabはステータスのカラム名で,=ncvはデータがビルドインのNCVモジュールを通じてXymonに伝えるためのトークンです.

デフォルトで,Xymon NCVモジュールは,データがある種のカウンタであると想定します. たとえばネットワークの上に送られたバイト数--デフォルトでRRD DERIVEデータ型式を使用します(絶え間なく値を増やしているデータのためのものです). (訳注:DERIVEはパケット数やエラーカウント数のような累積する値に使います) 現在値のためのものではありません. RRDtoolのrrdcreateのmanページには,様々なRRDデータ型式の詳述があります. http://people.ee.ethz.ch/~oetiker/webtools/rrdtool/doc/rrdcreate.en.html

このスクリプトはRRD GAUGEデータ型式でデータを提供します. (訳注:GAUGEは,温度やログインユーザ数のような絶対値に使います) そのため,xymonserver.cfgに次のような設定を加えます:

リスト 3.5 ~xymon/server/etc/xymonserver.cfg
NCV_slab="inodecache:GAUGE,dentrycache:GAUGE"

これにより,デフォルト(DERIVE型)の代わりにGAUGE型の2つのデータの RRDファイルを作成しろとxymond_rrdモジュールに伝えます. 設定のタイトルは,NCV_<カラム名>である必要があります.

xymonserver.cfgファイルは自動でリロードされないので,これらの変更を行った後に, Xymonをリスタートしなければなりません. または,xymond_rrdのプロセスをkillしてください(通常2つあります). そうすると,xymonlaunchは自動的にそれらをリスタートして,新しい設定が反映されます.

(訳注:RRDファイルの定義名にアンダースコアは使えません.アンダースコアは無視されます.)

(訳注:dateコマンドの出力結果を確認してください. dateコマンドの出力に日本語が含まれている場合,rrdtoolはデータ作成できませんでした. Xymonクライアントが動作するユーザで,bashなら,~/.bash_profileに,

リスト 3.6 bash_profile
LANG=en
export LANG

とかするとうまくいきました.が,やらなくても動作することもありますし,バージョンとかなにかに依存するものなのか,正確なところは知りません.)

3.1.1.6 RRDで集めたデータをチェックする

ここまで設定したら,Xymonサーバを再起動します.

# ~xymon/server/bin/xymon.sh restart

次回にslabステータスが更新されると,Xymonはデータを集め始めます. ~xymon/data/rrd/ホスト名/ ディレクトリのslab.rrdファイルを見て,ここまでの設定が正しいかを確認できます. 集めたデータを確認するには,

rrdtool dump ~xymon/data/rrd/ホスト名/slab.rrd

とすると,下記のようなXML形式データが表示されます.

<!-- Round Robin Database Dump -->
	<rrd>
		<version> 0001 </version>
		<step> 300 </step> <!-- Seconds -->
		<lastupdate> 1132474725 </lastupdate> <!-- 2005-11-20 09:18:45 CET -->

		<ds>
			<name> inodecache </name>
RRD データ型------>	<type> GAUGE </type>
			<minimal_heartbeat> 600 </minimal_heartbeat>
			<min> 0.0000000000e+00 </min>
			<max> NaN </max>

			<!-- PDP Status -->
現在値------------>	<last_ds> 330624 </last_ds>
			<value> 0.0000000000e+00 </value>
			<unknown_sec> 0 </unknown_sec>
		</ds>
 

slabカラムのアイコンをクリックしてステータスページを見ても, グラフは表示されず, グラフの代わりにncv:slabのリンクが表示されるだけです. 最後のひとつのステップが欠けています.

3.1.1.7 グラフ定義を設定する

最後にRRDファイルの中のデータからグラフを作成する方法をXymonに教えます. ~xymon/server/etc/graphs.cfg ファイルを編集します.

リスト 3.7 ~xymon/server/etc/graphs.cfg
	[slab]
		TITLE Slab info
		YAXIS Bytes
		DEF:inode=slab.rrd:inodecache:AVERAGE
		DEF:dentry=slab.rrd:dentrycache:AVERAGE
		LINE2:inode#00CCCC:Inode cache
		LINE2:dentry#FF0000:Dentry cache
		COMMENT:\n
		GPRINT:inode:LAST:Inode cache \: %5.1lf%s (cur)
		GPRINT:inode:MAX: \: %5.1lf%s (max)
		GPRINT:inode:MIN: \: %5.1lf%s (min)
		GPRINT:inode:AVERAGE: \: %5.1lf%s (avg)\n
		GPRINT:dentry:LAST:Dentry cache\: %5.1lf%s (cur)
		GPRINT:dentry:MAX: \: %5.1lf%s (max)
		GPRINT:dentry:MIN: \: %5.1lf%s (min)
		GPRINT:dentry:AVERAGE: \: %5.1lf%s (avg)\n
 

[slab]はこのグラフの名前です.カラムの名前に合わせてください. TITLEはグラフのタイトルを設定します. YAXIS設定はY軸の見出しを定義します(訳注:単位を書くと便利です). 残りはrrdgraph(1)ツールのための定義です. どのように働くかを詳細に知りたいのなら,RRDtoolのドキュメントを読んでください. とりあえず必要なのは,DEF行がRRDファイルから欲しいデータを選ぶところです.

DEF:inode=slab.rrd:inodecache:AVERAGE
 

値を持っている「iノード」定義をslab.rrdファイルの中のinodecacheデータセットから与えます. グラフで線を引くのには下記が使用されます:

LINE2:inode#00CCCC:Inode cache
 

線は色#00CCCC(水色)になります. 比較する意味として,1つのグラフにいくつかの線を持つこともできます. また,他のタイプの見た目を使用することができます, たとえば,vmstatのような複数の値です.これはrrdgraph manページで説明されます. rrdgraphのmanページのオンラインバージョンは,http://oss.oetiker.ch/rrdtool/doc/rrdgraph.en.htmlです.

また,グラフ定義の終わりのGPRINT行は,集められたデータから現在,最大,最小,そして平均の値を示す概要線を印刷するのにinode値を使用することを意味しています. (訳注:GPRINT行は無くてもグラフは生成されます.COMMENT行も無くてもグラフは生成されます.)

graphs.cfgにこのセクションを加えて,ブラウザのステータスページをリロードしてください. そうすれば,グラフは現れます.

3.1.1.8 グラフをグラフの集まりであるtrendsカラムに追加する

指定したカラムにグラフを作るのとは別に,trendカラムにも追加したグラフを含めるには, xymon/server/etc/xymonserver.cfg ファイルに GRAPH設定を行います.

たとえば,

GRAPHS="la,disk,<... その他もろもろ ...>,bbproxy,xymond,slab"
 

ファイルをセーブして,trendsカラムをクリックすると,slabグラフがページの一番下に見えます.

3.1.1.9 よくある問題や落とし穴