2013年4月9日火曜日

"dstat(fluent-plugin-dstat)"の情報をCloudWatchに登録してみた(その2)

スズキです。

以前、下記のような記事を書きましたが、そのアップデートです。
"dstat(fluent-plugin-dstat)"の情報をCloudWatchに登録してみた
要は上記の方法で、より下記の形に近づけたって感じになります。
Amazon CloudWatch Monitoring Scripts for Linux
まずは"dstat"からですが、下記が参考になります。
Dstatでディスク使用量を確認する
今回利用するオプションは下記とします。
# dstat --load --swap --mem --freespace
---load-avg--- ----swap--- ------memory-usage----- -----/-----
 1m   5m  15m | used  free| used  buff  cach  free| used  free
   0    0    0|   0  1024M| 119M  120M  306M 45.1M|3053M 2994M
...
これで、ロードアベレージとスワップ使用量とメモリ使用量とディスク使用量を
チェックすることが可能になります。

次に"fluent-plugin-dstat"ですが、設定ファイルに下記のように上記のオプションを
指定します。
# cat /etc/td-agent/td-agent.conf
<source>
    type   dstat
    tag    dstat
    option --load --swap --mem --freespace
    delay  300
</source>
<match dstat>
    type copy
    <store>
        type file
        path /tmp/dstat
    </store>
</match>
("delay"オプションで)5分(300秒)毎に出力されるようにしており、ログは下記の通りです。
# cat /tmp/dstat.20130402.b4d94e2fc68c46642
2013-04-02T00:22:19+09:00       dstat   {"hostname":"ip-10-0-0-76","dstat":{"load avg":{"1m":"0.030","5m":"0.010","15m":"0.0"},"swap":{"used":"0.0","free":"1073733632.0"},"memory usage":{"used":"126222336.0","buff":"125665280.0","cach":"324575232.0","free":"42729472.0"},"/":{"used":"3202244608.0","free":"3139084288.0"}}}
2013-04-02T00:23:19+09:00       dstat   {"hostname":"ip-10-0-0-76","dstat":{"load avg":{"1m":"0.010","5m":"0.0","15m":"0.0"},"swap":{"used":"0.0","free":"1073733632.0"},"memory usage":{"used":"126791680.0","buff":"125677568.0","cach":"324628480.0","free":"42094592.0"},"/":{"used":"3202232320.0","free":"3139096576.0"}}}
...

さらにCloudWatchへのPutです。下記のプラグイン(自作自演...)を利用しています。
FluentdのCloudWatchプラグイン(fluent-plugin-cloudwatch_ya)を
"RubyGems.org"に公開してみた
実際の設定ファイルは下記の通りです。
<source>
    type   dstat
    tag    dstat
    option --load --swap --mem --freespace
    delay  300
</source>
<match dstat>
    type copy
    <store>
        type file
        path /tmp/dstat
    </store>
    <store>
        type                 cloudwatch_ya
        buffer_type          file
        buffer_path          /opt/suz-lab/var/lib/td-agent/buf/cloudwatch.dstat
        flush_interval       5m
        cloud_watch_endpoint monitoring.ap-northeast-1.amazonaws.com
        namespace            SUZ-LAB/CentOS
        <metric>
            metric_name LoadAvg5m
            value_key                   $['dstat']['load avg']['5m']
            unit                        None
            outcast_no_dimension_metric yes
            <dimensions>
                instance_id yes
            </dimensions>
        </metric>
        <metric>
            metric_name SwapUsed
            value_key                   $['dstat']['swap']['used']
            unit                        Bytes
            outcast_no_dimension_metric yes
            <dimensions>
                instance_id yes
            </dimensions>
        </metric>
        <metric>
            metric_name MemoryFree
            value_key                   $['dstat']['memory usage']['free']
            unit                        Bytes
            outcast_no_dimension_metric yes
            <dimensions>
                instance_id yes
            </dimensions>
        </metric>
        <metric>
            metric_name DiskRootFree
            value_key                   $['dstat']['/']['free']
            unit                        Bytes
            outcast_no_dimension_metric yes
            <dimensions>
                instance_id yes
            </dimensions>
        </metric>
    </store>
</match>
こちらも5分毎(flush_interval 5m)にCloudWatchにPutするようにしています。

実際にAWSマネジメントコンソールで確認すると、下記のようにカスタムメトリックスが
登録されているのが確認できます。






さらに下記のNagiosプラグインで監視することも可能です。
NagiosのCloudWatchプラグイン(Python版AWSコマンドラインツール版)

ブログのペースが...
--------
http://www.suz-lab.com

0 コメント: