NagiosGrapherとは、Nagiosが出力したデータをグラフ表示するためのアドオンだ。
今回は、このNagiosのパフォーマンスデータをグラフ表示するためのアドオンであるNagiosGrapherのインストール方法を紹介する。
NagiosGrapherは、Nagiosのグラフ表示アドオンとして昔から有名ではあるが、日本語で検索してみると実に情報が少ないのがわかる。
NagiosGrapherは、RRDToolのフロントエンドであり、RRDTool特有のグラフ表示となる。
同じくRRDToolのフロントエンドにcactiというツールがある。
cactiは、昔からNagiosと一緒に使われることが多いが、cactiは自分が監視収集したデータをグラフ化するのであって、Nagiosのパフォーマンスデータをグラフ表示するわけではない。
Nagiosを利用するのであれば、やはりNagiosのパフォーマンスデータをグラフ表示することにこだわりたい。
また、NagiosGrapherは設定も難しく、理解するまでは大変だが、Nagiosのユーザ認証をサポートしており、閲覧権限のない監視対象のグラフは表示されないなど、他のグラフ表示アドオンにはない機能を備えている。
確かに扱いづらいアドオンではあるが、一度使いこなしてしまえば、なかなか便利なツールである。
このブログを書いている現在時点でのNagiosGrapherの最新版は1.7.1 だ。
以前、インストールしたNagios(3.1.0)にインストールを行う。
サーバOSは、CentOS 5.3 である。
ダウンロード
今回必要なものは以下の通りだ。
●NagiosGrapher : NagiosGrapher-1.7.1.tar.gz (NagiosGrapherのダウンロードページ)
ダウンロードしたtarballは、/usr/local/src に置くものとする。
インストールマニュアル
NagiosGrapherのインストールマニュアルは、NagiosGrapherのtarball(NagiosGrapher-1.7.1.tar.gz)に含まれている。
tarballを解凍すると以下にインストールマニュアルがある。
./NagiosGrapher-1.7.1/doc/INSTALL
また、全ての作業は特に断りがない限りrootアカウントで行うものとする。
システム要求
NagiosGrapherのインストールマニュアルによれば、以下の通り。
– Nagios
– RRDTool
– 以下のPerlモジュール
CGI
CGI::Carp
Calendar::Simple
Carp
Data::Dumper
File::Basename
File::Copy
GD
IO::Handle
Image::Magick
POSIX
RRDs
Storable
Time::HiRes
Time::Local
URI::Escape
– autoconf
Nagiosは、当然インストール済みだ。
RRDToolは、yumでインストールすればOKだ。
Perlモジュールとautoconfについては確認して、なければインストールする。
まずは、確認から。
# find `perl -e 'print join(" ", @INC)'` -type f -name "*.pm" |grep CGI.pm
/usr/lib/perl5/5.8.8/CGI.pm
# find `perl -e 'print join(" ", @INC)'` -type f -name "*.pm" |grep CGI/Carp.pm
/usr/lib/perl5/5.8.8/CGI/Carp.pm
# find `perl -e 'print join(" ", @INC)'` -type f -name "*.pm" |grep Calendar/Simple.pm
# find `perl -e 'print join(" ", @INC)'` -type f -name "*.pm" |grep Carp.pm
/usr/lib/perl5/5.8.8/Carp.pm
/usr/lib/perl5/5.8.8/CGI/Carp.pm
# find `perl -e 'print join(" ", @INC)'` -type f -name "*.pm" |grep Data/Dumper.pm
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/Data/Dumper.pm
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/Data/Dumper.pm
# find `perl -e 'print join(" ", @INC)'` -type f -name "*.pm" |grep File/Basename.pm
/usr/lib/perl5/5.8.8/File/Basename.pm
# find `perl -e 'print join(" ", @INC)'` -type f -name "*.pm" |grep File/Copy.pm
/usr/lib/perl5/5.8.8/File/Copy.pm
# find `perl -e 'print join(" ", @INC)'` -type f -name "*.pm" |grep GD.pm
# find `perl -e 'print join(" ", @INC)'` -type f -name "*.pm" |grep IO/Handle.pm
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/IO/Handle.pm
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/IO/Handle.pm
# find `perl -e 'print join(" ", @INC)'` -type f -name "*.pm" |grep Image/Magick.pm
# find `perl -e 'print join(" ", @INC)'` -type f -name "*.pm" |grep POSIX.pm
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pm
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/POSIX.pm
# find `perl -e 'print join(" ", @INC)'` -type f -name "*.pm" |grep RRDs.pm
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/RRDs.pm
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/RRDs.pm
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/RRDs.pm
# find `perl -e 'print join(" ", @INC)'` -type f -name "*.pm" |grep Storable.pm
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/DBI/Gofer/Serializer/Storable.pm
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/DBI/Gofer/Serializer/Storable.pm
/usr/lib/perl5/vendor_perl/5.8.8/i386-linux-thread-multi/DBI/Gofer/Serializer/Storable.pm
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/Storable.pm
/usr/lib/perl5/5.8.8/Memoize/Storable.pm
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/Storable.pm
# find `perl -e 'print join(" ", @INC)'` -type f -name "*.pm" |grep Time/HiRes.pm
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/Time/HiRes.pm
/usr/lib/perl5/5.8.8/i386-linux-thread-multi/Time/HiRes.pm
# find `perl -e 'print join(" ", @INC)'` -type f -name "*.pm" |grep Time/Local.pm
/usr/lib/perl5/5.8.8/Time/Local.pm
# find `perl -e 'print join(" ", @INC)'` -type f -name "*.pm" |grep URI/Escape.pm
/usr/lib/perl5/vendor_perl/5.8.8/URI/Escape.pm
/usr/lib/perl5/vendor_perl/5.8.8/URI/Escape.pm
# rpm -qa autoconf
autoconf-2.59-12
|
上記の結果から、以下のPerlモジュールがないことがわかった。
Calendar::Simple
GD
Image::Magick
RRDToolと上記のPerlモジュールをインストールする。
# yum install rrdtool*
# yum install perl-Calendar-Simple
# yum install perl-GD*
# yum install ImageMagick*
|
NagiosGrapherのインストール
NagiosGrapherはインストール自体は実に簡単だ。
# cd /usr/local/src
# tar xvfz NagiosGrapher-1.7.1.tar.gz
# cd NagiosGrapher-1.7.1
# autoconf
# ./configure --with-layout=default --with-init=init_scripts/nagios_grapher.redhat
# make testdeps
/usr/bin/perl ./tools/testdeps.pl
Checking Data::Dumper ... found
Checking File::Copy ... found
Checking File::Basename ... found
Checking Carp ... found
Checking POSIX ... found
Checking Time::HiRes ... found
Checking Time::Local ... found
Checking Storable ... found
Checking GD ... found
Checking Image::Magick ... found
Checking RRDs ... found
Checking CGI ... found
Checking CGI::Carp ... found
Checking IO::Handle ... found
Checking URI::Escape ... found
Checking Calendar::Simple ... found
# make install
mkdir -p //usr/local/nagios/etc/serviceext
chown -R nagios //usr/local/nagios/etc/serviceext
mkdir -p //usr/local/nagios/var/rrd
chown -R nagios //usr/local/nagios/var/rrd
mkdir -p //etc/init.d
mkdir -p `dirname //usr/local/nagios/var/ngraph.log`
mkdir -p //usr/local/nagios/var/nagios_grapher
mkdir -p //usr/local/nagios/var/rrd
mkdir -p //usr/local/nagios/contrib
mkdir -p //etc/logrotate.d
mkdir -p //usr/local/nagios/var/
mkdir -p //usr/local/nagios/etc
mkdir -p //usr/local/nagios/etc/ngraph.d
mkdir -p //usr/local/nagios/etc/ngraph.d/templates/extra
mkdir -p //usr/local/nagios/etc/ngraph.d/templates/standard
<中略>
chmod 0755 //etc/init.d/nagios_grapher
mkdir -p //usr/local/nagios/share/images
mkdir -p //usr/local/nagios/share/images/logos
cp *.png //usr/local/nagios/share/images
cp *.png //usr/local/nagios/share/images/logos
touch //usr/local/nagios/var/ngraph.log
chown nagios //usr/local/nagios/var/ngraph.log
=============================================================
Just a few steps to run the grapher ...
=============================================================
Serviceexttype, MULTIPLE:
Add these line to your nagios.cfg.
cfg_dir=/usr/local/nagios/etc/serviceext
Optional - get informed on left over seviceext .cfg files.
patch your nagios init script:
patch -p0 < contrib/nagios.initscript.patch
=============================================================
To tell nagios to write service perfdata, please modify the following files:
nagios.cfg:
cfg_dir=/usr/local/nagios/etc/serviceext
process_performance_data=1
service_perfdata_file=/usr/local/nagios/var/service-perfdata
service_perfdata_file_template=$HOSTNAME$\t$SERVICEDESC$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$\t$TIMET$
service_perfdata_file_mode=a
service_perfdata_file_processing_interval=30
service_perfdata_file_processing_command=process-service-perfdata-file
commands.cfg:
define command{
command_name process-service-perfdata-file
command_line mv /usr/local/nagios/var/service-perfdata /usr/local/nagios/var/service-perfdata.$TIMET$
}
=============================================================
Please do not forget to set a proper loglevel!
Default loglevel is set to 511 which means all. That is why the logfile can grow very fast!
# patch -p0 < contrib/nagios.initscript.patch
patching file /etc/init.d/nagios
|
インストール時、起動スクリプト(/etc/rc.d/init.d/nagios_grapher)にRedhat用を指定したが、一部修正が必要。
DAEMON=/usr/lib/nagios/contrib/nagios_grapher/collect2.pl
↓
DAEMON=/usr/local/nagios/contrib/collect2.pl
|
また、/usr/local/nagios/var/nagios_grapherの権限の変更を行う。
# chown nagios:nagios /usr/local/nagios/var/nagios_grapher
|
Nagiosとの連携
次にNagiosGrapherをNagiosと連携させる。
make install時に出たメッセージに従って、Nagiosの設定ファイルにNagiosGrapherの実行に必要な設定を追加する。
今回インストールしたNagios(3.x)に合わせて cfg_dir=/usr/local/nagios/etc/serviceext は、以下のように変更したほうがいいだろう。
●nagios.cfgへの設定追加
cfg_dir=/usr/local/nagios/etc/objects/serviceext
process_performance_data=1
service_perfdata_file=/usr/local/nagios/var/service-perfdata
service_perfdata_file_template=$HOSTNAME$\t$SERVICEDESC$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$\t$TIMET$
service_perfdata_file_mode=a
service_perfdata_file_processing_interval=30
service_perfdata_file_processing_command=process-service-perfdata-file
|
また、NagiosGrapherのインストール時に/usr/local/nagios/etc/serviceextディレクトリが作成されている。
これを削除し、/usr/local/nagios/etc/objects/serviceextを新たに作成する。
# rm -rf /usr/local/nagios/etc/serviceext
# mkdir /usr/local/nagios/etc/objects/serviceext
# chown apache.nagios /usr/local/nagios/etc/objects/serviceext
# chmod 775 /usr/local/nagios/etc/objects/serviceext
|
●commands.cfgへの設定追加
define command{
command_name process-service-perfdata-file
command_line mv /usr/local/nagios/var/service-perfdata /usr/local/nagios/var/service-perfdata.$TIMET$
}
|
これをNagiosQLで設定する場合、以下のようにする。
上記のcommand_nameの設定をNagiosQLの下記の画面のCommand*のところに入力する。
上記のcommand_lineの設定をNagiosQLの下記の画面のCommand line*のところに入力する。
また、NagiosQLの下記の画面のCommand typeのところでmisc commandを選択し、Activeのチェックボックスにチェックをつけ、Saveボタンを押す。
図1:NagiosQL3によるcommands.cfgへの設定追加
NagiosGrapherのメイン設定
NagiosGrapherのメイン設定ファイルは、/usr/local/nagios/etc/ngraph.ncfg だ。
これを以下のように変更する。
Nagiosとの連携の設定で
/usr/local/nagios/etc/serviceext を
/usr/local/nagios/etc/objects/serviceext に変更したため、
NagiosGrapherの設定でも同様に変更する。
serviceext_path /usr/local/nagios/etc/serviceext
↓
serviceext_path /usr/local/nagios/etc/objects/serviceext
|
NagiosGrapherのログレベルの設定を511に変更。
log_level 1023
↓
log_level 511
|
Nagiosのユーザ認証をサポートするように変更する。
use_authentication true
↓
use_authentication false
|
NagiosGrapherのグラフ設定
NagiosGrapherは、監視プラグインの出力情報からグラフデータを取得し、グラフ表示するのだが、そのためには各サービス監視用のグラフ設定ファイルを作成する必要がある。
このグラフ設定ファイルは、NagiosGrapherのインストール時にテンプレートが以下のディレクトリにインストールされている。
/usr/local/nagios/etc/ngraph.d/templates/standard
# cd /usr/local/nagios/etc/ngraph.d/templates/standard
# ls -al
drwxr-sr-x 2 apache nagios 4096 1月 11 04:36 .
drwxr-sr-x 4 apache nagios 4096 12月 29 11:10 ..
-rw-r--r-- 1 apache nagios 688 1月 11 04:36 check_disk.ncfg
-rw-r--r-- 1 apache nagios 259 1月 11 04:36 check_dns.ncfg_disabled
-rw-r--r-- 1 apache nagios 259 1月 11 04:36 check_ftp.ncfg_disabled
-rw-r--r-- 1 apache nagios 441 1月 11 04:36 check_http.ncfg_disabled
-rw-r--r-- 1 apache nagios 262 1月 11 04:36 check_imap.ncfg_disabled
-rw-r--r-- 1 apache nagios 270 1月 11 04:36 check_ldap.ncfg_disabled
-rw-r--r-- 1 apache nagios 2565 1月 11 04:36 check_load.ncfg
-rw-r--r-- 1 apache nagios 438 1月 11 04:36 check_mailq.ncfg_disabled
-rw-r--r-- 1 apache nagios 4795 1月 11 04:36 check_mysql.ncfg_disabled
-rw-r--r-- 1 apache nagios 706 1月 11 04:36 check_nagios.ncfg_disabled
-rw-r--r-- 1 apache nagios 297 1月 11 04:36 check_ntp.ncfg_disabled
-rw-r--r-- 1 apache nagios 745 1月 11 04:36 check_ping.ncfg
-rw-r--r-- 1 apache nagios 477 1月 11 04:36 check_pop.ncfg_disabled
-rw-r--r-- 1 apache nagios 1162 1月 11 04:36 check_procs.ncfg
-rw-r--r-- 1 apache nagios 258 1月 11 04:36 check_smtp.ncfg_disabled
-rw-r--r-- 1 apache nagios 521 1月 11 04:36 check_swap.ncfg
-rw-r--r-- 1 apache nagios 256 1月 11 04:36 check_users.ncfg
|
ここにあるテンプレートの中で、ファイル名の拡張子が .ncfg のものは、NagiosGrapherが設定内容を読み込む。
使用しない設定ファイルは、他のファイル同様、ファイル名の拡張子を .ncfg_disabled にしておけばよい。
NagiosGrapherの起動
次は、NagiosGrapherを起動させる。
chkconfigで管理できるようにしておくと便利だ。
# chkconfig --add nagios_grapher
# chkconfig --list nagios_grapher
nagios_grapher 0:off 1:off 2:on 3:on 4:on 5:on 6:off
# service nagios_grapher start
Starting collector: collect2.pl [ OK ]
|
NagiosGrapherの動作確認を行う。
グラフ設定ファイルを読み込んで、正常動作している場合は、以下のようになっている。(SWAP監視の例)
# tail /usr/local/nagios/var/ngraph.log
2010-01-23 18:47:58 PIPE: manager SWAP SWAP OK - 100% free (2047 MB out of 2047 MB) swap=2047MB;409;204;0;2047 1264240043
2010-01-23 18:47:58 REGEX: 1 blocks for 'SWAP' found.
2010-01-23 18:47:58 REGEX: graph_value=swap
2010-01-23 18:47:58 REGEX: output=plugin.
2010-01-23 18:47:58 REGEX: regex=m/(\d+)%/i
2010-01-23 18:47:58 REGEX: perfdata=swap ok - 100% free (2047 mb out of 2047 mb)
2010-01-23 18:47:58 REGEX: match=100
2010-01-23 18:47:58 VALUES: [manager][SWAP]: swap=100
2010-01-23 18:47:58 RRD: rrdtool update /usr/local/nagios/var/rrd/manager/13dbe470cf9c9ac9586663ca46c2e2c2.rrd --template=swap 1264240043:100
|
グラフ設定ファイルがなかったり、設定内容が間違っていた場合は、以下のようになっている。(SWAP監視の例)
# tail /usr/local/nagios/var/ngraph.log
2010-01-23 15:57:00 PIPE: manager SWAP SWAP OK - 100% free (2047 MB out of 2047 MB) swap=2047MB;409;204;0;2047 1264229785
2010-01-23 15:57:00 REGEX: No blocks for 'SWAP' found.
|
Nagiosの再起動
NagiosGrapherは、Nagiosからグラフデータを取得するとNagiosのサービス拡張設定ファイルを作成する。
今回の設定の場合、/usr/local/nagios/etc/objects/serviceext に作成される。
そのため、Nagiosを再起動し、サービス拡張設定ファイルを読み込ませることで、以下のようにNagiosのサービス監視画面のサービス名のところにNagiosGrapherのグラフアイコンを表示させることができる。
図2:グラフアイコンが表示されたNagiosのサービス監視画面
また、グラフアイコンをクリックすることで、グラフを表示させることができる。
図3:NagiosGrapher
Categories: Nagios ,NagiosGrapher
Nagiosのグラフ化ツール、NagiosGrapherのインストールを行うのに上記を参考にさせて頂きました。
とてもわかりやすい説明でなんなく設定を行うことができました。
しかし、nagiosデーモンの再起動後、サービス監視画面にグラフのアイコンが表示されません。
[root@fedora13 ~]# tail /usr/local/nagios/var/ngraph.log
2010-06-24 00:39:39 CFG: define => ‘ngraph’
2010-06-24 00:39:39 CFG: graph_legend => ‘Logged in users’
2010-06-24 00:39:39 CFG: graph_log_regex => ‘([0-9]+)\s*users’
2010-06-24 00:39:39 CFG: graph_units => ‘users’
2010-06-24 00:39:39 CFG: graph_value => ‘user’
2010-06-24 00:39:39 CFG: rrd_color => ‘0066c0’
2010-06-24 00:39:39 CFG: rrd_plottype => ‘AREA’
2010-06-24 00:39:39 CFG: service_name => ‘USERS’
2010-06-24 00:39:39 PRG: Starting up collect2.pl (PID: 5350) …
2010-06-24 00:39:39 PRG: using service-perfdata.time in /usr/local/nagios/var/
起動自体はしているようです。
何か考えられる原因はありますでしょうか?
ご協力頂ければ幸いです。
yamazakiさん
コメントありがとうございます。
上記の件は、NagiosGrapherをインストールした直後にNagiosの再起動をしたのに、サービス監視画面にグラフアイコンが表示されないということだと思いますが、おそらくNagiosGrapherが自動作成するNagiosのサービス拡張設定ファイル(/usr/local/nagios/etc/objects/serviceext に作成されるファイル )が作成されていないのではないでしょうか?
もし、Nagiosのサービス拡張設定ファイルが作成されているのであれば、もう一度Nagiosを再起動すれば、サービス監視画面にグラフアイコンが表示されます。
NagiosGrapherは、グラフ設定ファイル(.ncfg)に従って、Nagiosの監視ログからグラフデータを収集します。
そして、その初回時に、Nagiosのサービス拡張設定ファイルやRRDToolのグラフDBを作成します。
しかし、グラフデータ収集に使うNagiosの監視ログは、NagiosGrapher起動後のものしか扱いません。
過去の(NagiosGrapher起動前の)Nagiosの監視ログを遡ってデータ収集したりはしません。
このため、NagiosGrapherをインストールした直後は、まだNagiosがサービス監視をしていない場合が多く、このタイミングでNagiosを再起動してもNagiosの監視ログがないため、サービス拡張設定ファイルが作成されておらず、サービス監視画面にグラフアイコンが表示されないということになります。
もう十分監視はしているのにサービス監視画面にグラフアイコンが表示されない場合は、以下のケースが考えられます。
1.該当するグラフ設定ファイル(.ncfg)がない。
2.該当するグラフ設定ファイル(.ncfg)が読み込めない状態(.ncfg_disabled)になっている。
3.該当するグラフ設定ファイル(.ncfg)の内容が間違っている。
一度、このブログの『NagiosGrapherの起動』のところのNagiosGrapherの動作確認(/usr/local/nagios/var/ngraph.logの内容を確認しているところ)の例のようにきちんとNagiosGrapherがNagiosの監視ログからグラフデータを収集できているか確認してみてください。
データが収集出来ていないのであれば、上記のケース1~3を確認し、もし3であれば、以下のブログも参考にして、修正してみてください。
『NagiosGrapherのグラフ設定ファイルの設定方法』