2013年1月20日日曜日

FluentdのCloudWatchプラグイン(fluent-plugin-cloudwatch_ya)を"RubyGems.org"に公開してみた

スズキです。

下記の一連の記事でアップデートしてきたFluentdのCloudWatchプラグインを
RubyGems.org」に公開してみました。
既に"fluent-plugin-cloudwatch"は登録済みだったので、プラグイン名は
"fluent-plugin-cloudwatch_ya"(Yet Another Plugin for Amazon CloudWatch)としました。


ソースは、お決まりの"GitHub"です。


インストール方法は下記のとおりです。

前提条件


次のように"td-agent"がインストールされていることを前提とします。
CentOS6にFluentdをインストール

依存パッケージ(gem)のインストール


"AWS SDK for Ruby"のインストール
# /usr/lib64/fluent/ruby/bin/gem install aws-sdk
Fetching: aws-sdk-1.8.0.gem (100%)
Successfully installed aws-sdk-1.8.0
1 gem installed
Installing ri documentation for aws-sdk-1.8.0...
Installing RDoc documentation for aws-sdk-1.8.0...

"JsonPath"のインストール
# /usr/lib64/fluent/ruby/bin/gem install jsonpath
Fetching: jsonpath-0.5.0.gem (100%)
Successfully installed jsonpath-0.5.0
1 gem installed
Installing ri documentation for jsonpath-0.5.0...
Installing RDoc documentation for jsonpath-0.5.0...

※パッケージの依存関係は、まだ"gem"には反映できてません...

CloudWatchプラグイン(fluent-plugin-cloudwatch_ya)のインストール

いつものやり方です。
# /usr/lib64/fluent/ruby/bin/gem install fluent-plugin-cloudwatch_ya
Fetching: fluent-plugin-cloudwatch_ya-0.0.2.gem (100%)
Successfully installed fluent-plugin-cloudwatch_ya-0.0.2
1 gem installed
Installing ri documentation for fluent-plugin-cloudwatch_ya-0.0.2...
Installing RDoc documentation for fluent-plugin-cloudwatch_ya-0.0.2...

動作確認("dstat/fluent-plugin-dstat"と連携)


前出のブログ記事("dstat(fluent-plugin-dstat)"の情報をCloudWatchに登録してみた)
を、"gem"でインストールしたプラグイン(fluent-plugin-cloudwatch_ya)で再現してみます。

まずは、必要なパッケージ(dstat/fluent-plugin-dstat)をインストールします。
# yum -y install dstat
# /usr/lib64/fluent/ruby/bin/gem install fluent-plugin-dstat
Fetching: fluent-plugin-dstat-0.2.3.gem (100%)
Successfully installed fluent-plugin-dstat-0.2.3
1 gem installed
Installing ri documentation for fluent-plugin-dstat-0.2.3...
Installing RDoc documentation for fluent-plugin-dstat-0.2.3...

設定ファイル(/etc/td-agent/td-agent.conf)は下記のとおりです。
(EC2に然るべき"IAM Role"が付いていることが前提です)
<source>
    type   dstat
    tag    dstat
    option -l
    delay  60 
</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       1m
        cloud_watch_endpoint monitoring.ap-northeast-1.amazonaws.com
        namespace            SUZ-LAB/TEST
        <metric>
            metric_name LoadAvg1m
            value_key                   $['dstat']['load avg']['1m']
            unit                        None
            outcast_no_dimension_metric yes
            <dimensions>
                instance_id yes
            </dimensions>
        </metric>
    </store>
</match>
※"type"は"cloudwatch_ya"に変更しています。

最後に必要なディレクトリへのパーミッションを調整してFluentdを起動します。
# chown -R td-agent.td-agent /opt/suz-lab/var/lib/td-agent
# /etc/init.d/td-agent start

問題が無ければ、下記のようにAWSコンソール(CloudWatch)で確認することが
できるはずです。


確認できない場合は、下記のようにでDebug/Traceレベルロギングオプションで
Fluentdを再起動し、ログ(/var/log/td-agent/td-agent.log)を確認してみてください。
# cat /etc/sysconfig/td-agent 
TD_AGENT_ARGS="/usr/sbin/td-agent --user td-agent --group td-agent --log /var/log/td-agent/td-agent.log -vv"

Enjoy!
--------
http://www.suz-lab.com

0 コメント: