2011年5月17日火曜日

Nagiosでパフォーマンスデータをファイルに出力して処理する

スズキです。

CloudWatchの新機能で、カスタムのメトリクスが使用可能になりました。
これは、CloudWatchに任意のデータを登録でき、そのデータに対して
CloudWatchのグラフ表示やアラート通知機能を利用できる、というものです。

ということで、Nagiosと、このCloudWatchを融合してみようと思い、
今回は、その準備であるNagiosのパフォーマンスデータを自由に処理する部分を
確認しておきました。

まずはパフォーマンスデータをファイルに出力する部分ですが、
"/etc/nagios/nagios.cfg"を下記のようにするだけでOKです。

...
# パフォーマンスデータの処理機能を有効に
process_performance_data=1
# 出力先ファイルを指定
host_perfdata_file=/tmp/host-perfdata
service_perfdata_file=/tmp/service-perfdata
# 出力データのフォーマット
host_perfdata_file_template=[HOSTPERFDATA]\t$TIMET$\t$HOSTNAME$\t$HOSTEXECUTIONTIME$\t$HOSTOUTPUT$\t$HOSTPERFDATA$
service_perfdata_file_template=[SERVICEPERFDATA]\t$TIMET$\t$HOSTNAME$\t$SERVICEDESC$\t$SERVICEEXECUTIONTIME$\t$SERVICELATENCY$\t$SERVICEOUTPUT$\t$SERVICEPERFDATA$
# データの出力は追記モードで
host_perfdata_file_mode=a
service_perfdata_file_mode=a
...

Nagiosを再起動すると、下記のようにデータがファイルに出力されるようになります。

/tmp/host-perfdata
...
[HOSTPERFDATA]  1305562433      localhost       4.006   PING OK - Packet loss = 0%, RTA = 0.04 ms       rta=0.040000ms;3000.000000;5000.000000;0.000000 pl=0%;80;100;0
...

/tmp/service-perfdata
...
[SERVICEPERFDATA]       1305562383      localhost       Swap Usage      0.005   0.018   SWAP OK - 100% free (2047 MB out of 2047 MB)    swap=2047MB;0;0;0;2047
[SERVICEPERFDATA]       1305562453      localhost       Current Load    0.005   0.195   OK - load average: 0.00, 0.00, 0.00     load1=0.000;5.000;10.000;0; load5=0.000;4.000;6.000;0; load15=0.000;3.000;4.000;0;
[SERVICEPERFDATA]       1305562473      localhost       Total Processes 0.008   0.008   PROCS OK: 6 processes with STATE = RSZDT
[SERVICEPERFDATA]       1305562563      localhost       Current Users   0.008   0.107   USERS OK - 1 users currently logged in  users=1;20;50;0
[SERVICEPERFDATA]       1305562573      localhost       PING    4.006   0.140   PING OK - Packet loss = 0%, RTA = 0.04 ms       rta=0.037000ms;100.000000;500.000000;0.000000 pl=0%;20;60;0
[SERVICEPERFDATA]       1305562603      localhost       Root Partition  0.006   0.035   DISK OK - free space: / 6308 MB (65% inode=96%):        /=3258MB;8063;9071;0;10079
...

これらのデータを定期的に処理する仕組みも、Nagiosには用意されており、
下記のように"/etc/nagios/nagios.cfg"に追記すればOKです。

...
# 定期的に処理するインターバル
host_perfdata_file_processing_interval=300
service_perfdata_file_processing_interval=300
# 定期処理に使われるコマンド
host_perfdata_file_processing_command=process-host-perfdata-file
service_perfdata_file_processing_command=process-service-perfdata-file
...

コマンドはとりあえず"/etc/nagios/objects/commands.cfg"に下記のように記述しています。

...
define command {
    command_name    process-host-perfdata-file
    command_line    /bin/mv -f /tmp/host-perfdata /tmp/host-perfdata.$TIMET$
}
define command {
    command_name    process-service-perfdata-file
    command_line    /bin/mv -f /tmp/service-perfdata /tmp/service-perfdata.$TIMET$
}

上記の設定でNagiosを再起動すると、下記のように定期的にログが
分割されるようになります。

host-perfdata
host-perfdata.1305562643
host-perfdata.1305562943
host-perfdata.1305563243
host-perfdata.1305563543

service-perfdata
service-perfdata.1305562643
service-perfdata.1305562943
service-perfdata.1305563243
service-perfdata.1305563543

このパフォーマンスデータを処理する部分をCloudWatchにデータ登録するようにすれば、
CloudWatchといい感じに融合できるのでは、と思います。

次はCloudWatchにデータ登録する部分です!
--------
http://www.suz-lab.com

0 コメント: