NagiosGrapherとは、Nagiosが出力したデータをグラフ表示するためのアドオンだ。
NagiosGrapherは、パフォーマンス情報を出力しないプラグインでのサービス監視もグラフ表示させることができる。
一方、PNP4Nagiosでは、パフォーマンス情報を出力しないプラグインでのサービス監視はグラフ表示させることができない。
前回『NRPE_NT(0.8b)のインストール』で紹介したNRPE_NT Plugin(nrpe_nt_plugins.zip)は、パフォーマンス情報を出力しないプラグインである。
つまり、PNP4Nagiosではグラフ表示させることができない。
こんな時には、NagiosGrapherが便利である。
今回は、NagiosGrapherでNRPE_NT Pluginの監視データをグラフ表示させる方法を紹介する。
今回使用したNagiosGrapherのバージョンは、1.7.1 だ。
 



 

NagiosGrapherのグラフ設定ファイルについて

まずは、NagiosGrapherのグラフ設定ファイルについて説明しておこう。
NagiosGrapherは、サービス監視の監視データをグラフ表示させるために、サービス監視ごとにグラフ設定ファイル(.ncfg)を必要とする。
NagiosGrapherのインストール時にグラフ設定ファイルのサンプルが以下の構成でインストールされるので、この設定ファイルをコピー、もしくはカスタマイズして使用するといいだろう。
 

<NagiosGrapher(1.7.1)のグラフ設定ファイルの構成>
/usr/local/nagios/etc
                   └ ngraph.d
                       └ templates
                            ├ extra
                            │    ├ check_bacula.ncfg_disabled
                            │    ├ check_gsm.ncfg_disabled
                            │    ├ check_hardware.ncfg_disabled
                            │    ├ check_request_tracker.ncfg_disabled
                            │    ├ check_snmp.ncfg_disabled
                            │    ├ heck_spamassassin_effectiveness.ncfg_disabled
                            │    ├ check_weather.ncfg_disabled
                            │    └ check_windows.ncfg_disabled
                            └ standard
                                 ├ check_disk.ncfg
                                 ├ check_dns.ncfg_disabled
                                 ├ check_ftp.ncfg_disabled
                                 ├ check_http.ncfg_disabled
                                 ├ check_imap.ncfg_disabled
                                 ├ check_ldap.ncfg_disabled
                                 ├ check_load.ncfg
                                 ├ check_mailq.ncfg_disabled
                                 ├ check_mysql.ncfg_disabled
                                 ├ check_nagios.ncfg_disabled
                                 ├ check_ntp.ncfg_disabled
                                 ├ check_ping.ncfg
                                 ├ check_pop.ncfg_disabled
                                 ├ check_procs.ncfg
                                 ├ check_smtp.ncfg_disabled
                                 ├ check_swap.ncfg
                                 └ check_users.ncfg

 
拡張子が.ncfgとなっているものが、NagiosGrapherの再起動時に読み込まれ、有効となる。
使用したいものは.ncfg、使用したくないものやバックアップなどは.ncfg_disabledにしておくといいだろう。
また、グラフ設定ファイルを変更した場合には、NagiosGrapherの再起動が必要となる。
NagiosGrapher(1.7.1)では、上記のように、いくつかのグラフ設定ファイルが最初から.ncfgとなっている。
設定内容もほぼNagios Plugins(1.4.13)に合わせて記述されているようだ。
しかし、以前、このブログの『NagiosGrapher(1.7.1)のインストール』で紹介した通りにインストールを行ってもきちんとグラフが表示されない場合がある。
NagiosGrapherは、Nagiosプラグインが出力するステータス情報やパフォーマンス情報からグラフを作成するため、グラフ設定ファイルでサービス名を指定し、さらにパフォーマンス情報(もしくはステータス情報)からグラフデータを取得する設定を記述する必要がある。
NagiosGrapherのインストールを行ってもきちんとグラフが表示されないのは、多くの場合、この2つの指定がきちんとマッチしていないのが原因だ。
 

check_http.ncfg のケース

check_http.ncfgを例に見てみよう。
check_http.ncfg は、HTTP監視(check_http)のグラフ設定だ。
NagiosGrapherのインストール直後は、check_http.ncfg_disabledとなっている。
HTTP監視(check_http)は、パフォーマンス情報を出力するためPNP4Nagiosでもグラフ表示されるが、NagiosGrapherではどのようにしてグラフ表示されるのだろうか?
図1の通り、service_name でサービス名を指定し、graph_perf_regex でパフォーマンス情報からグラフデータを取得する設定が記述されている。
この設定には、いずれも正規表現を使用することができる。
graph_value は、上記の設定で取得した値を格納するRRDToolのDS名を指定する。
DS名については、RRDToolを参照して欲しい。
ここでは、変数名だと思っていればいいだろう。
DS名は、自由に設定することができる。
図1では、service_name でHTTPが指定されているが、このままだと『HTTP』にも『HTTP_process』にもマッチしてしまう。
より厳密に指定したい場合は、正規表現できちんと指定したほうがいいだろう。
また、サービス名の命名規則も重要だ。
 
図1:check_http.ncfg の説明(1)
図1:check_http.ncfg の説明(1)

 
次はグラフの表示の設定だ。
NagiosGrapherは、RRDToolを利用しているため、設定内容にはRRDToolの設定を記述することが多い。
RRDToolでは、グラフをAREAやLINEで表示する。
NagiosGrapherの設定も同様だ。
check_http.ncfg では、AREAとLINEでグラフ設定されている。(図2参照)
 
図2:check_http.ncfg の説明(2)
図2:check_http.ncfg の説明(2)

 
図3では、AREA部分のグラフ設定がされている。
graph_units で縦軸の単位の表記を指定し、graph_legend でグラフの凡例を指定、rrd_plottype ではグラフ形状を指定し、rrd_color ではグラフの色を指定する。
 
図3:check_http.ncfg の説明(3)
図3:check_http.ncfg の説明(3)

 
図4では、LINE部分のグラフ設定がされている。
ここでは、上記の設定で取得したデータを計算して、グラフ表示するデータを作成している。
type ではデータタイプの宣言を指定している。
CDEFは、この設定で扱うデータが(取得したデータを)計算したデータであることを意味する。
graph_value は計算結果を格納するRRDToolのDS名を指定する。
graph_units や graph_legend は上記の設定で記述しているので、ここで設定しなくてもよい。
graph_calc は計算式を逆ポーランド記法で記述する。
図4では、AREAの輪郭線を表示するため、AREAのデータをそのまま使っている。
 
図4:check_http.ncfg の説明(4)
図4:check_http.ncfg の説明(4)

 

check_procs.ncfg のケース

次はcheck_procs.ncfgを見てみよう。
check_procs.ncfg は、プロセス数監視(check_procs)のグラフ設定だ。
NagiosGrapherのインストール直後は、すでに check_procs.ncfg となっている。
プロセス数監視(check_procs)は、パフォーマンス情報を出力しないためPNP4Nagiosではグラフ表示させることが出来ない。
しかし、NagiosGrapherでは、ステータス情報からグラフデータを取得することが可能なので、パフォーマンス情報を出力しない監視でもグラフ表示させることができる。
その仕組みを説明しよう。
図5の通り、service_name でサービス名を指定し、graph_log_regex でステータス情報からグラフデータを取得する設定が記述されている。
パフォーマンス情報からグラフデータを取得する場合は graph_perf_regex で指定したが、ステータス情報からグラフデータを取得する場合は graph_log_regex を使用する。
ここがポイントだ。
また、図5では、service_name でPROCSが指定されているが、これはサービス名『PROCS:NRPE』にもマッチする。
 
図5:check_procs.ncfg の説明(1)
図5:check_procs.ncfg の説明(1)

 
図6は、すでにcheck_http.ncfg のケースで説明したことなので、特に説明はしない。
 
図6:check_procs.ncfg の説明(2)
図6:check_procs.ncfg の説明(2)

 
図7では、グラフの表示エリア外に文字やデータを表示させている。
図7では、3つのdefine ngraph{} 設定があるが、いずれも type で、GPRINTを指定している。
GPRINTは、文字やデータを表示させることを意味する。
また、print_source では表示させるデータを指定する。
いずれも procs となっているので、図5で取得したデータ(graph_valueで指定されているprocs)を使用することを意味する。
print_description では表示する文字列を指定する。
print_function は、最初のdefine ngraph{} ではLASTが、2番目のdefine ngraph{} ではAVERAGE、最後のdefine ngraph{} ではMAXが指定されている。
これは、それぞれ print_source で指定したデータの最後(LAST)に取得したデータ(最新データ)、平均値(AVERAGE)、最大値(MAX)を意味する。
print_format は、Perlのprintf()関数で使用するのと同じ形式のフォーマット文を指定できる。
ここでは、いずれも%2.2lf%s となっているので、10進数の小数点以下2桁で表示することを意味する。
最後の%s は、RRDToolの設定で自動計算されたスケールの単位が記述される。
print_eol は、行末(EndOfLine)の扱いを指定する。
最初と2番目のdefine ngraph{} ではnone:2 が、最後のdefine ngraph{} ではleft:2 が指定されている。
none は改行なし、left は左詰で表示して改行する。
:2 については、よくわからないが、行末に表示される。
このあたりは、もしかしたらNagiosGrapherにバグがあるのかもしれない。
 
図7:check_procs.ncfg の説明(3)
図7:check_procs.ncfg の説明(3)

 
図8では、平均値を示す水平ラインを表示させている。
ここでは、type でVDEFを指定している。
VDEFはCDEF同様、計算結果をグラフ表示させるが、表示された全域に渡って平均値、最大値、最小値などを表示するのに使用される。
計算式は、graph_calc に逆ポーランド記法で指定されている。
この場合、cdef_procs,AVERAGE となっているため、図6のCDEFで計算した結果(graph_valueで指定されているcdef_procs)の平均値(AVERAGE)を使用することを意味する。
hideは、yesと指定するとグラフが表示されなくなる。
ここでは、noなのでグラフが表示されている。
 
図8:check_procs.ncfg の説明(4)
図8:check_procs.ncfg の説明(4)

 

WindowsのCPU監視のグラフ設定ファイルの作成

いよいよ今回の本命の趣旨である前回『NRPE_NT(0.8b)のインストール』でインストールしたNRPE_NT PluginでWindowsのCPU監視をした場合のグラフ設定ファイルを作成してみよう。
 
<NRPE_NTのnrpe.cfgに設定したCPU監視コマンド>
command[check_windows_cpu]=C:\nrpe_nt plugins\bin\cpuload_nrpe_nt.exe $ARG1$ $ARG2$
 
この通りに設定していれば、監視結果は図9のようになるはずだ。
ご覧の通り、パフォーマンス情報を出力しないためPNP4Nagiosではグラフ表示させることが出来ない。
 
図9:WindowsのCPU監視のサービスステータス情報画面
図9:WindowsのCPU監視のサービスステータス情報画面

 
今回、サービス名を『WIN_CPU』とした。
このため、service_name では、WIN_CPUと指定する。
また、このプラグインはパフォーマンス情報を出力しないため、ステータス情報からグラフデータを取得する。
このため、graph_log_regex でデータ取得のための正規表現を指定する。
今回、ステータス情報の NOW: Mean:0.000000% の部分を取得することを考える。
正規表現で指定するので NOW: Mean:(\d+\.\d+)% とすればよいだろう。
()で括った部分が取得できる。
取得したデータを格納するDS名(graph_value)をcpu、縦軸に表示する単位(graph_units)を%、凡例(graph_legend)をcpu NOW:、グラフ形状(rrd_plottype)をAREA、グラフの色(rrd_color)を赤とすると以下のようになる。
 

define ngraph{
        service_name            WIN_CPU
        graph_log_regex         NOW: Mean:(\d+\.\d+)%
        graph_value             cpu
        graph_units             %
        graph_legend            cpu NOW:
        rrd_plottype            AREA
        rrd_color               FF0000
}

 
表示されるグラフは、図10のようになる。
 
図10:WindowsのCPU監視のグラフ
図10:WindowsのCPU監視のグラフ

 
 

 


Categories: Nagios ,NagiosGrapher


Leave a Reply