トップ  > サーバ設定:運用  > 運用  > 性能統計グラフ追加(Nagios+PNP)

性能統計グラフ追加(Nagios+PNP)  (最終更新日:2010/03/29)

NagiosのアドオンであるPNPをインストールして、監視項目の統計データをグラフ表示にします。

CentOS5.4のPHPのバージョンは5.1.6の為、PNP0.6系のシステム要件を満たしていないので0.4系を導入します。

統合監視システム構築(Nagios)が導入されていること。

RPMforgeリポジトリが導入されいない場合こちらを参照してインストールします。

[root@sv ~]# yum install rrdtool php-gd ← PNPに必要なパッケージインストール

[root@sv ~]# /etc/rc.d/init.d/httpd reload ← Apache設定再読み込み
httpd を再読み込み中:                                      [  OK  ]

[root@sv ~]# wget http://jaist.dl.sourceforge.net/sourceforge/pnp4nagios/pnp-0.4.14.tar.gz ← PNPダウンロード
※最新版はこちらで確認。(2010/03/29時点。pnp-0.4.14.tar.gz)

[root@sv ~]# tar zxvf pnp-0.4.14.tar.gz ← PNP展開

[root@sv ~]# cd pnp-0.4.14 ← PNP展開先ディレクトリへ移動

[root@sv pnp-0.4.14]# ./configure ← 環境に応じたMakefile作成

[root@sv pnp-0.4.14]# make all ← Makefileを基にソースコードをコンパイル

[root@sv pnp-0.4.14]# make install ← makeで生成されたファイルなどをディレクトリにコピー(インストール)

[root@sv pnp-0.4.14]# make install-config ← サンプル設定ファイルを所定のディレクトリにコピー(インストール)

[root@sv ~]# rm -rf pnp-0.4.14 ← PNP展開先ディレクトリを削除

[root@sv ~]# rm -f pnp-0.4.14.tar.gz ← ダウンロードしたファイルを削除

PNP設定

PNP設定
[root@sv ~]# cp /usr/local/nagios/etc/pnp/process_perfdata.cfg-sample /usr/local/nagios/etc/pnp/process_perfdata.cfg ← サンプルよりprocess_perfdata.cfgを作成

[root@sv ~]# cp /usr/local/nagios/etc/pnp/rra.cfg-sample /usr/local/nagios/etc/pnp/rra.cfg ← サンプルよりrra.cfgを作成

[root@sv ~]# vi /usr/local/nagios/etc/pnp/config.php ← PNP設定ファイル編集
$conf['date_fmt'] = "d.m.y G:i";
↓
$conf['date_fmt'] = "Y.m.d G:i"; ← 日付形式をYYYY.MM.DDにする(Yは大文字です)
Nagios設定
[root@sv ~]# vi /usr/local/nagios/etc/nagios.cfg ← nagios.cfg編集
process_performance_data=0
↓
process_performance_data=1 ← パフォーマンスデータ取得を有効化

#host_perfdata_command=process-host-perfdata
↓
host_perfdata_command=process-host-perfdata ← 行頭の#を削除してコメント解除(ホストパフォーマンスデータ取得コマンドを有効化)

#service_perfdata_command=process-service-perfdata
↓
service_perfdata_command=process-service-perfdata ← 行頭の#を削除してコメント解除(サービスパフォーマンスデータ取得コマンドを有効化)

[root@sv ~]# vi /usr/local/nagios/etc/objects/commands.cfg ← commands.cfg編集
# 'process-host-perfdata' command definition
define command{
	command_name	process-host-perfdata
	command_line	/usr/bin/printf "%b" "$LASTHOSTCHECK$\t$HOSTNAME$\t$HOSTSTATE$\t$HOSTATTEMPT$\t$HOSTSTATETYPE$\t$
HOSTEXECUTIONTIME$\t$HOSTOUTPUT$\t$HOSTPERFDATA$\n" >> /usr/local/nagios/var/host-perfdata.out
       }
↓
# 'process-host-perfdata' command definition
define command {
  command_name    process-host-perfdata
  command_line    /usr/bin/perl /usr/local/nagios/libexec/process_perfdata.pl -d HOSTPERFDATA ← 変更
}


# 'process-service-perfdata' command definition
define command{
	command_name	process-service-perfdata
	command_line	/usr/bin/printf "%b" "$LASTSERVICECHECK$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICESTATE$\t$SERVICEATTEMPT
$\t$SERVICESTATETYPE$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t
$SERVICEPERFDATA$\n" >> /usr/local/nagios/var/service-perfdata.out
       }
↓
# 'process-service-perfdata' command definition
define command{
	command_name	process-service-perfdata
	command_line	/usr/bin/perl /usr/local/nagios/libexec/process_perfdata.pl ← 変更
       }

[root@sv ~]# vi /usr/local/nagios/etc/objects/templates.cfg ← templates.cfg編集
define host{
        name                            generic-host    ; The name of this host template
        notifications_enabled           1               ; Host notifications are enabled
        event_handler_enabled           1               ; Host event handler is enabled
        flap_detection_enabled          1               ; Flap detection is enabled
        failure_prediction_enabled      1               ; Failure prediction is enabled
        process_perf_data               1               ; Process performance data
        retain_status_information       1               ; Retain status information across program restarts
        retain_nonstatus_information    1               ; Retain non-status information across program restarts
        notification_period             24x7            ; Send host notifications at any time
        register                        0               ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL HOST, JUST A TEMPLATE!
        action_url /nagios/pnp/index.php?host=$HOSTNAME$' onmouseover="get_g('$HOSTNAME$','_HOST_')" onmouseout="clear_g()" ← 追加(Nagios画面からPNP画面へのリンク表示(ホスト))
        }

# Generic service definition template - This is NOT a real service, just a template!

define service{
        name                            generic-service         ; The 'name' of this service template
        active_checks_enabled           1                       ; Active service checks are enabled
        passive_checks_enabled          1                       ; Passive service checks are enabled/accepted
        parallelize_check               1                       ; Active service checks should be parallelized (disabling this can lead to major performance problems)
        obsess_over_service             1                       ; We should obsess over this service (if necessary)
        check_freshness                 0                       ; Default is to NOT check service 'freshness'
        notifications_enabled           1                       ; Service notifications are enabled
        event_handler_enabled           1                       ; Service event handler is enabled
        flap_detection_enabled          1                       ; Flap detection is enabled
        failure_prediction_enabled      1                       ; Failure prediction is enabled
        process_perf_data               1                       ; Process performance data
        retain_status_information       1                       ; Retain status information across program restarts
        retain_nonstatus_information    1                       ; Retain non-status information across program restarts
        is_volatile                     0                       ; The service is not volatile
        check_period                    24x7                    ; The service can be checked at any time of the day
        max_check_attempts              3                       ; Re-check the service up to 3 times in order to determine its final (hard) state
        normal_check_interval           10                      ; Check the service every 10 minutes under normal conditions
        retry_check_interval            2                       ; Re-check the service every two minutes until a hard state can be determined
        notification_options            w,u,c,r                 ; Send notifications about warning, unknown, critical, and recovery events
        notification_interval           60                      ; Re-notify about service problems every hour
        notification_period             24x7                    ; Notifications can be sent out at any time
         register                        0                      ; DONT REGISTER THIS DEFINITION - ITS NOT A REAL SERVICE, JUST A TEMPLATE!
        action_url /nagios/pnp/index.php?host=$HOSTNAME$&srv=$SERVICEDESC$' onmouseover="get_g('$HOSTNAME$','$SERVICEDESC$')" onmouseout="clear_g()" ← 追加(Nagios画面からPNP画面へのリンク表示(サービス))
        }

[root@sv ~]# /etc/rc.d/init.d/nagios restart ← Nagios再起動
Running configuration check...done.
Stopping nagios: done.
Starting nagios: done.

PNP確認

http://サーバ名/nagios/へアクセスし、「サービス稼動状態」でホスト又はサービス横にできたアイコンをクリックしてグラフが表示されることを確認。

一部監視項目はパフォーマンスを出力しない為、グラフ表示しないものもあります。