Nagiosでパフォーマンスデータをファイルに出力して処理するの記事で紹介した下記のような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スクリプトを用いて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で確認してみたいと思います。