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)
次はグラフの表示の設定だ。
NagiosGrapherは、RRDToolを利用しているため、設定内容にはRRDToolの設定を記述することが多い。
RRDToolでは、グラフをAREAやLINEで表示する。
NagiosGrapherの設定も同様だ。
check_http.ncfg では、AREAとLINEでグラフ設定されている。(図2参照)
図2:check_http.ncfg の説明(2)
図3では、AREA部分のグラフ設定がされている。
graph_units で縦軸の単位の表記を指定し、graph_legend でグラフの凡例を指定、rrd_plottype ではグラフ形状を指定し、rrd_color ではグラフの色を指定する。
図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)
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)
図6は、すでにcheck_http.ncfg のケースで説明したことなので、特に説明はしない。
図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)
図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)
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監視のサービスステータス情報画面
今回、サービス名を『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監視のグラフ
|
Categories: Nagios ,NagiosGrapher