2011年5月18日水曜日

NagiosのパフォーマンスデータをCloudWatch用に抽出

スズキです。

コチラの記事で紹介した下記のようなNagiosのパフォーマンスデータを、

[SERVICEPERFDATA]       1305610083      localhost       Swap Usage      0.005   0.079   SWAP OK - 100% free (2047 MB out of 2047 MB)    swap=2047MB;0;0;0;2047
[SERVICEPERFDATA]       1305610153      localhost       Current Load    0.005   0.122   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]       1305610173      localhost       Total Processes 0.008   0.192   PROCS OK: 9 processes with STATE = RSZDT
[SERVICEPERFDATA]       1305610263      localhost       Current Users   0.006   0.046   USERS OK - 1 users currently logged in  users=1;20;50;0
[SERVICEPERFDATA]       1305610273      localhost       PING    4.006   0.082   PING OK - Packet loss = 0%, RTA = 0.04 ms       rta=0.041000ms;100.000000;500.000000;0.000000 pl=0%;20;60;0
[SERVICEPERFDATA]       1305610303      localhost       Root Partition  0.006   0.166   DISK OK - free space: / 6330 MB (66% inode=96%):        /=3236MB;8063;9071;0;10079

コチラの記事で紹介したようなPHPスクリプトでCloudWatchに登録するために、
下記のようなデータ抜き出しPHPスクリプトを作成して見ました。

$lines = file($argv[1]);
foreach($lines as $line){
    $tokens = split("\t", $line);
    if(trim($tokens[7]) != "") {
        print("host  : " . $tokens[2] . "\n");
        $values = split(" ", $tokens[7]);
        foreach($values as $value) {
            if(trim($value) != "") {
                preg_match_all("/([0-9A-Za-z\/]+)=([0-9.]+)/", $value, $matches);
                print("metric: " . $tokens[3] . " (". $matches[1][0] . ")\n");
                print("value : " . $matches[2][0] . "\n");
            }
        }
        print("--------" . "\n");
    }
}

出力結果は以下のとおりです。

--------
host  : localhost
metric: Swap Usage (swap)
value : 2047
--------
host  : localhost
metric: Current Load (load1)
value : 0.000
metric: Current Load (load5)
value : 0.000
metric: Current Load (load15)
value : 0.000
--------
host  : localhost
metric: Current Users (users)
value : 1
--------
host  : localhost
metric: PING (rta)
value : 0.041000
metric: PING (pl)
value : 0
--------
host  : localhost
metric: Root Partition (/)
value : 3236
--------

CloudFrontに上記の"metric"に対して対応する"value"を登録することを想定しています。
"dimension"は"host=localhost"となることを考えています。

次はいよいよ、Nagiosで定期的に取得するパフォーマンスデータを、
実際にCloudWatchに登録して、"AWS Management Console"で確認するところまでやります。

いよいよCloudWatchネタも最終回!
--------
http://www.suz-lab.com

0 コメント: