2010 2月 13

PNP4Nagiosとは、Nagiosが出力したパフォーマンスデータをグラフ表示するためのアドオンだ。
今回は、Nagiosのパフォーマンスデータをグラフ表示するためのアドオンであるPNP4Nagiosのインストール方法を紹介する。
NagiosGrapherと同じRRDToolのフロントエンドであり、RRDTool特有のグラフ表示となるが、NagiosGrapherとは異なり、Nagiosのユーザ認証をサポートしていない。
PNP4Nagiosは、NagiosPluginの開発指針で定められている通りにきちんとパフォーマンスデータが出力される監視Pluginであれば、自動的にグラフ表示される。
逆にきちんとパフォーマンスデータとして出力されず、ステータス情報にしか出力されない監視Pluginの場合はグラフ表示されない。
NagiosGrapherであれば、設定ファイルの書き方次第でステータス情報にしか出力されない監視Pluginの場合もグラフ表示が可能だ。
また、PNP4Nagiosは、日本語情報が実に豊富である。
PNP4Nagiosには、PNP4Nagios 0.4.x 系とPNP4Nagios 0.6.x 系があるが、PNP4Nagiosの日本語情報は、PNP4Nagios 0.4.x 系のものがほとんどだ。
ここで同じ内容を紹介しても面白くない。
そこで、ここでは、PNP4Nagios 0.6.x 系のインストールを行う。
このブログを書いている現在時点でのPNP4Nagios 0.6.x 系の最新版は0.6.2 だ。
以前、インストールしたNagios(3.1.0)にインストールを行う。
サーバOSは、CentOS 5.3 である。
 



 

ダウンロード

今回必要なものは以下の通りだ。
 
●PNP4Nagios : pnp4nagios-0.6.2.tar.gz (PNP 0.6.x Downloads
 
ダウンロードしたtarballは、/usr/local/src に置くものとする。
 

インストールマニュアル

PNP4Nagiosのインストールマニュアルは、PNP4Nagiosの本家サイトに詳しく載っている。
 
また、全ての作業は特に断りがない限りrootアカウントで行うものとする。
 

システム要求

PNP4Nagiosのインストールマニュアルによれば、以下の通り。
 
・Perl >= 5.x without additional modules
・RRDtool >= 1.x, better 1.2 but not compulsory
・PHP >= 5.2. for the Webfrontend based on Kohana
・PHP-extension zlib, session and GD.
・Nagios >= 2.x or Icinga
・Kohana needs the module “mod_rewrite” to be enabled.
 
ここで問題となるのは、PHP >= 5.2 くらいだろう。
Kohanaは、CakePHPやZend_FrameworkのようなPHPフレームワークだ。
日本ではまだ利用者が少ないようだが、興味があったら調べてくれ。
PNP4Nagios 0.6.x 系は、Kohanaを利用しており、そのため、PHP 5.2以降が必要なのだ。
 
しかし、CentOS標準のレポジトリでは、このブログを書いている現在時点でPHP 5.1.6が最新だ。
 
そこで、以下のように新たにレポジトリを追加して、yumでPHP 5.2をインストールする。
このブログを書いている現在時点ではPHP 5.2.11である。
また、このリポジトリでインストールしたいのはPHPだけなので、enabled=0 としておいて、yum の実行時に
–enablerepo= を指定して有効化する。
 

# rpm --import http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka
# vi /etc/yum.repos.d/utterramblings.repo

[utterramblings]
name=Jason's Utter Ramblings Repo
baseurl=http://www.jasonlitka.com/media/EL$releasever/$basearch/
enabled=0
gpgcheck=1
gpgkey=http://www.jasonlitka.com/media/RPM-GPG-KEY-jlitka

# yum install --enablerepo=utterramblings php

 

PNP4Nagiosのインストール

PNP4NagiosがNagiosからグラフデータの元となるパフォーマンスデータを受け取る方法は、以下の3つのモードから選択できる。
3,2,1の順でパフォーマンスが良い。

1.デフォルトモード
  パフォーマンスデータを直接process_perfdata.pl(PNP4Nagiosの1部)に渡して処理する方法。
2.Bulkモード
  パフォーマンスデータをテンポラリファイル(/usr/local/pnp4nagios/var/service-perfdata)に出力し、
  そのファイルをprocess_perfdata.plが読み込んで処理をする方法。
  Nagiosは、process_perfdata.plの処理が終わるまで、次のチェックを行わない。
3.Bulkモード with NPCD
  パフォーマンスデータをテンポラリファイル(/usr/local/pnp4nagios/var/service-perfdata)に出力するが、
  そのファイルは別途NPCD(Nagios Performance C Daemon)が別ファイルにローテートし、ローテート後の
  ファイルをprocess_perfdata.plが読み込んで処理をする方法。
  この方法は、NagiosGrapherのファイルモードと同等である。
  Nagiosは、process_perfdata.plの処理を気にせず、次のチェックを実行する。
 
今回は3番目のBulkモード with NPCDでインストールを行う。
 

# cd /usr/local/src
# tar xvfz pnp4nagios-0.6.2.tar.gz
# cd pnp4nagios-0.6.2
# ./configure
 
<中略 : 最後に以下のメッセージが出たらOK>
 

*** Configuration summary for pnp4nagios-0.6.2 12-23-2009 ***

  General Options:
  -------------------------         -------------------
  Nagios user/group:                nagios nagios
  Install directory:                /usr/local/pnp4nagios
  HTML Dir:                         /usr/local/pnp4nagios/share
  Config Dir:                       /usr/local/pnp4nagios/etc
  Location of rrdtool binary:       /usr/bin/rrdtool Version 1.3.8
  RRDs Perl Modules:                FOUND (Version 1.3008)
  RRD Files stored in:              /usr/local/pnp4nagios/var/perfdata
  process_perfdata.pl Logfile:      /usr/local/pnp4nagios/var/perfdata.log
  Perfdata files (NPCD) stored in:  /usr/local/pnp4nagios/var/spool

  Web Interface Options:  -------------------------         -------------------
  HTML URL:                         http://localhost/pnp4nagios/
  Apache Config File:               /etc/httpd/conf.d/pnp4nagios.conf


  Review the options above for accuracy.  If they look okay,
  type 'make all' to compile.

# make all
 
<中略 : 最後に以下のメッセージが出たらOK>
 

*** Compile finished ***

  make install
     - This installs the main program and HTML files

Enjoy.

# make install
 
<中略 : 最後に以下のメッセージが出たらOK>
 

*** Main program, Scripts and HTML files installed ***

Please run 'make install-webconf' to install the
web configuration file

Please run 'make install-config' to install sample
configuration files

Please run 'make install-init' if you want to use
BULK Mode with NPCD

# make install-webconf
 
<中略 : 最後に以下のメッセージが出たらOK>
 

*** Apache config file installed ***

# make install-config
 
<中略 : 最後に以下のメッセージが出たらOK>
 

*** PNP4Nagios sample config files installed ***

# make install-init
cd ./scripts && make install-init
make[1]: ディレクトリ `/home/rook/pnp4nagios-0.6.2/scripts' に入ります
/usr/bin/install -c -m 755 -o root -g root -d /etc/rc.d/init.d
/usr/bin/install -c -m 755 -o root -g root rc.npcd /etc/rc.d/init.d/npcd
make[1]: ディレクトリ `/home/rook/pnp4nagios-0.6.2/scripts' から出ます

# cd /usr/local/pnp4nagios/etc
# cp npcd.cfg-sample npcd.cfg
# chkconfig --add npcd
# chkconfig --list npcd

npcd           	0:off	1:off	2:on	3:on	4:on	5:on	6:off

 

Nagiosとの連携

次にPNP4NagiosをNagiosと連携させる。
Nagiosの設定ファイルにPNP4Nagiosの実行に必要な設定を追加する。
 
●nagios.cfgへの設定追加

process_performance_data=1

#
# service performance data
#
service_perfdata_file=/usr/local/pnp4nagios/var/service-perfdata
service_perfdata_file_template=DATATYPE::SERVICEPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tSERVICEDESC::$SERVICEDESC$\tSERVICEPERFDATA::$SERVICEPERFDATA$\tSERVICECHECKCOMMAND::$SERVICECHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$\tSERVICESTATE::$SERVICESTATE$\tSERVICESTATETYPE::$SERVICESTATETYPE$
service_perfdata_file_mode=a
service_perfdata_file_processing_interval=15
service_perfdata_file_processing_command=process-service-perfdata-file

#
# host performance data starting with Nagios 3.0
# 
host_perfdata_file=/usr/local/pnp4nagios/var/host-perfdata
host_perfdata_file_template=DATATYPE::HOSTPERFDATA\tTIMET::$TIMET$\tHOSTNAME::$HOSTNAME$\tHOSTPERFDATA::$HOSTPERFDATA$\tHOSTCHECKCOMMAND::$HOSTCHECKCOMMAND$\tHOSTSTATE::$HOSTSTATE$\tHOSTSTATETYPE::$HOSTSTATETYPE$
host_perfdata_file_mode=a
host_perfdata_file_processing_interval=15
host_perfdata_file_processing_command=process-host-perfdata-file

 

●commands.cfgへの設定追加

define command{
       command_name    process-service-perfdata-file
       command_line    /bin/mv /usr/local/pnp4nagios/var/service-perfdata /usr/local/pnp4nagios/var/spool/service-perfdata.$TIMET$
}

define command{
       command_name    process-host-perfdata-file
       command_line    /bin/mv /usr/local/pnp4nagios/var/host-perfdata /usr/local/pnp4nagios/var/spool/host-perfdata.$TIMET$
}

これをNagiosQLで設定する場合、以下のようにする。
上記のcommand_nameの設定をNagiosQLの下記の画面のCommand*のところに入力する。
上記のcommand_lineの設定をNagiosQLの下記の画面のCommand line*のところに入力する。
また、NagiosQLの下記の画面のCommand typeのところでmisc commandを選択し、Activeのチェックボックスにチェックをつけ、Saveボタンを押す。
 
図1:NagiosQL3によるcommands.cfgへの設定追加(1)
図1:NagiosQL3によるcommands.cfgへの設定追加(1)

 
図2:NagiosQL3によるcommands.cfgへの設定追加(2)
図2:NagiosQL3によるcommands.cfgへの設定追加(2)

 

NPCDの起動

NPCDを起動するとともに、httpdやNagiosの再起動も行う。
 

# service npcd start
# ps -ef | grep pnp

nagios    2453     1  0 11:17 ?        00:00:00 /usr/local/pnp4nagios/bin/npcd -d -f /usr/local/pnp4nagios/etc/npcd.cfg

# service httpd restart
# service nagios restart


 

PNP4Nagiosのインストールの確認

以下のURLにアクセスし、インストール状態を確認する。
 
http://URL/pnp4nagios/index.php
 
何も問題がなければ以下のような画面が表示され、一番最後にinstall.phpを削除するかリネームしてくださいというメッセージが表示される。
 
図3:PNP4Nagios 0.6.2のインストール確認画面
図3:PNP4Nagios 0.6.2のインストール確認画面

 
メッセージ通りinstall.phpをリネームする。
 

# cd /usr/local/pnp4nagios/share
# mv install.php install.php.org

 
再度、上記のURLにアクセスし、以下のような画面が表示されればOKだ。
 
図4:PNP4Ngios 0.6.2のグラフ画面
図4:PNP4Ngios 0.6.2のグラフ画面

 
最後のSWAPのグラフを見ればわかると思うが、WarningやCriticalに設定した値に対応してイエローとレッドのラインが表示されるため、非常に見やすい。
また、PNP4Nagios 0.4.x 系では、イエローなグラフだが、PNP4Nagios 0.6.x 系はブルーなグラフで個人的にはPNP4Nagios 0.6.x 系のほうがいい感じがする。
 

PNP4Nagiosのインストールの確認でエラーが出たら?

PNP4Nagiosのインストールの確認で以下のようなエラーが出たら、PCREがUnicode対応ではないため、Unicode対応のPCREをインストールする必要がある。
 
図5:PNP4Nagios 0.6.2のインストール確認画面<PCREエラー>
図5:PNP4Nagios 0.6.2のインストール確認画面<PCREエラー>

 
まず、現状のPCREの確認を行う。
 

# pcretest -C

PCRE version 6.6 06-Feb-2006
Compiled with
  UTF-8 support
  No Unicode properties support
  Newline character is LF
  Internal link size = 2
  POSIX malloc threshold = 10
  Default match limit = 10000000
  Default recursion depth limit = 10000000
  Match recursion uses stack

 
やはり、『No Unicode properties support』となっている。
しかし、CentOS標準のレポジトリでは、このブログを書いている現在時点で『No Unicode properties support』となっている。
そこで、PHPの時に追加したレポジトリを使用してPCREをインストールする。
このブログを書いている現在時点ではPCRE version 7.8である。
 

# yum install --enablerepo=utterramblings pcre
# pcretest -C

PCRE version 7.8 2008-09-05
Compiled with
  UTF-8 support
  Unicode properties support
  Newline sequence is LF
  \R matches all Unicode newlines
  Internal link size = 2
  POSIX malloc threshold = 10
  Default match limit = 10000000
  Default recursion depth limit = 10000000
  Match recursion uses stack

 
今度は『Unicode properties support』となっている。
 
再度、PNP4NagiosのURLにアクセスして、PCREのエラーがなくなっていればOKだ。
もし、まだPCREのエラーが出るようなら一度リブートしてみるといい。
 
 

 


Categories: Nagios ,PNP4Nagios


Leave a Reply