2013年2月6日水曜日

Fluentdでログのフィルタリング

スズキです。

Fluentdで扱うログをフィルタリング(あるパターンのログを除外)する必要があったので、
下記のプラグインを試してみました。
fluent-plugin-filter
ちなみにFluentdは下記でインストールしていることを前提としています。
CentOS6にFluentdをインストール

"fluent-plugin-filter"のインストール

# /usr/lib64/fluent/ruby/bin/gem install fluent-plugin-filter
Fetching: fluent-plugin-filter-0.0.0.gem (100%)
Successfully installed fluent-plugin-filter-0.0.0
1 gem installed
Installing ri documentation for fluent-plugin-filter-0.0.0...
Installing RDoc documentation for fluent-plugin-filter-0.0.0...

Fluentdの設定

# cat /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 filter
        deny ident: "-bash"
    </store>
</match>
<match filtered.**>
    type file
    path /tmp/filtered.syslog
</match>
他にもいろいろできますが(あるパターンのログのみ出力など)、詳しい設定は直接
ソースをみてもらえれば、何となくわかると思います。

ログの確認


フィルター前のログは下記の通りです。
# cat /tmp/tail.syslog.20130205.b4d4f40e7e13ac759
...
2013-02-05T18:45:52+09:00       tail.syslog     {"host":"ip-10-148-5-42","ident":"audispd","message":"node=ip-10-148-5-42 type=USER_LOGIN msg=audit(1360057552.157:12733): user pid=20508 uid=0 auid=4294967295 ses=4294967295 msg='op=login acct=28756E6B6E6F776E207573657229 exe=\"/usr/sbin/sshd\" hostname=? addr=127.0.0.1 terminal=ssh res=failed'"}
2013-02-05T18:46:32+09:00       tail.syslog     {"host":"ip-10-148-5-42","ident":"-bash","message":"HISTORY: PID=18495 UID=0 less"}
2013-02-05T18:46:50+09:00       tail.syslog     {"host":"ip-10-148-5-42","ident":"-bash","message":"HISTORY: PID=18495 UID=0 less /tmp/tail.syslog.20130205.b4d4f40e7e13ac759 "}
...

フィルター後のログは次のように、ちゃんと「"ident":"-bash"」が除外されたログに
なっています。
# cat /tmp/filtered.syslog.20130205.b4d4f445ccf660817 
2013-02-05T18:47:52+09:00       filtered.tail.syslog    {"host":"ip-10-148-5-42","ident":"postfix/smtpd","pid":"20195","message":"disconnect from localhost.localdomain[127.0.0.1]"}
2013-02-05T18:47:52+09:00       filtered.tail.syslog    {"host":"ip-10-148-5-42","ident":"sshd","pid":"20569","message":"Connection closed by 127.0.0.1"}
2013-02-05T18:47:52+09:00       filtered.tail.syslog    {"host":"ip-10-148-5-42","ident":"audispd","message":"node=ip-10-148-5-42 type=CRYPTO_KEY_USER msg=audit(1360057672.199:12741): user pid=20566 uid=0 auid=4294967295 ses=4294967295 msg='op=destroy kind=server fp=83:2f:96:a8:d5:c2:d9:fd:2b:a0:5b:3b:87:cb:fa:19 direction=? spid=20566 suid=0  exe=\"/usr/sbin/sshd\" hostname=? addr=127.0.0.1 terminal=? res=success'"}

Fluentdは途中のデータ加工のノウハウが重要かも...
--------
http://www.suz-lab.com

0 コメント: