share facebook facebook twitter menu hatena pocket slack

2011.05.24 TUE

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

鈴木 宏康

WRITTEN BY 鈴木 宏康

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で確認してみたいと思います。

こちらの記事はなかの人(suz-lab)監修のもと掲載しています。
元記事は、こちら

鈴木 宏康

鈴木 宏康

愛知県生まれ。東京工業大学大学院修士課程修了。在学時より、ベンチャー企業でインターネットに関する業務に携わり、現在はクラウド(主にAmazon Web Services)上での開発・運用を軸とした事業の、業務の中心として活躍。