2013年1月20日日曜日

"DataCounterプラグイン"と"CloudWatchプラグイン"の連携(再び)

スズキです。

近頃いろいろと試していたFluentdのCloudWatchプラグインですが、
(仕様の)紆余曲折を経て下記のように"RubyGems.org"に公開しました。
FluentdのCloudWatchプラグイン(fluent-plugin-cloudwatch_ya)を"RubyGems.org"に公開してみた
当然、今までできていた下記もできるように調整はしていたので、
改めて最新のもので、同じ事を実現してみます。
(上記の記事の方法で"fluent-plugin-cloudwatch_ya"はインストール済みとします)

DataCounterプラグインのインストール

# /usr/lib64/fluent/ruby/bin/gem install fluent-plugin-datacounter
Fetching: fluent-plugin-datacounter-0.4.0.gem (100%)
Successfully installed fluent-plugin-datacounter-0.4.0
1 gem installed
Building YARD (yri) index for fluent-plugin-datacounter-0.4.0...

設定ファイル(/etc/td-agent/td-agent.conf)

<source>
    type     tail
    format   syslog
    path     /opt/suz-lab/var/log/syslog/all.log
    pos_file /opt/suz-lab/var/lib/td-agent/pos/tail.syslog.pos
    tag      tail.syslog
</source>
<match tail.syslog>
    type copy
    <store>
        type file
        path /tmp/tail.syslog
    </store>
    <store>
        type      datacounter
        unit      minute
        aggregate all
        count_key ident
        pattern1  history ^-bash$
        pattern2  audit   ^audispd$
        tag       datacounter.syslog
    </store>
</match>
<match datacounter.syslog>
    type copy
    <store>
        type file
        path /tmp/datacounter.syslog
    </store>
    <store>
        type                 cloudwatch_ya
        buffer_type          file
        buffer_path          /opt/suz-lab/var/lib/td-agent/buf/cloudwatch.datacounter.syslog
        flush_interval       1m
        cloud_watch_endpoint monitoring.ap-northeast-1.amazonaws.com
        namespace            SUZ-LAB/TEST
        <metric>
            metric_name HistoryCount
            value_key   $['history_count']
            unit        Count
            <dimensions>
                instance_id yes
            </dimensions>
        </metric>
        <metric>
            metric_name AuditCount
            value_key   $['audit_count']
            unit        Count
            <dimensions>
                instance_id yes
            </dimensions>
        </metric>
    </store>
</match>
※デフォルト(outcast_no_dimension_metric no)でディメンジョン無しでデータをPUT
※"instance_id yes"で"InstanceId=i-xxxxxxxx"のディメンジョンでもPUT

※まだ任意のディメンジョンを任意の数つけたりFluentdのタグをディメンジョンに
したりできますが、後ほどまとめます...

対象ログのパーミッション調整とFluentdの起動

# chown td-agent.td-agent /opt/suz-lab/var/log/syslog/all.log
# service td-agent start
Starting td-agent:                                         [  OK  ]

確認


下記のようにディメンジョン無しとInstanceIdがディメンジョンのものが、
HistoryCount、AuditCount、それぞれでCloudWatchにPUTされています。
(Debug/Traceログを出力する設定でFluentdを起動)
[
  {:metric_name=>"HistoryCount", :timestamp=>"2013-01-20T18:08:43+09:00", :value=>3, :unit=>"Count", :dimensions=>[]},
  {:metric_name=>"HistoryCount", :timestamp=>"2013-01-20T18:08:43+09:00", :value=>3, :unit=>"Count", :dimensions=>[{"name"=>"InstanceId", "value"=>"i-4dbcf34e"}]},
  {:metric_name=>"AuditCount", :timestamp=>"2013-01-20T18:08:43+09:00", :value=>10, :unit=>"Count", :dimensions=>[]},
  {:metric_name=>"AuditCount", :timestamp=>"2013-01-20T18:08:43+09:00", :value=>10, :unit=>"Count", :dimensions=>[{"name"=>"InstanceId", "value"=>"i-4dbcf34e"}]}
]

AWSコンソールでも下記のように確認できます。


次は設定ファイルの仕様をまとめるか...
早速、ユーザー(cloudpack)からの問い合わせも結構あったことだし...
--------
http://www.suz-lab.com

0 コメント: