こんにちは! JQです。
前回は『OSS編~FluentdでForwardのStandbyを試してみる~』と題して、FluentdでフォワードのStandbyを試してみました。
今回は『OSS編~Fluentdでexec_filterを試してみる~』と題して、Fluentdでexec_filterを試してみたいと思います。
exec_filter
1.外部プログラム
exec_filterで利用する外部フィルターを準備します。
今回は単純に時間を追加したいと思います。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
#!/usr/lib64/fluent/ruby/bin/ruby # -*- encoding: utf-8 -*- require 'json' require 'msgpack' require 'date' fdate = '%Y/%m/%d %H:%M:%S' while str = STDIN.gets str.chomp! s = JSON.parse(str) s.store("FlunetdTime", DateTime.now.strftime(fdate)) print MessagePack.pack(s) STDOUT.flush end |
2.Fluentd設定
続いてFluentdを設定します。
fileで出力する前にexce_filterの処理を入れます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
<source> type tail path /var/log/httpd/access_log format apache2 pos_file /var/log/td-agent/apache.pos tag apache.access </source> <match apache.**> type exec_filter command /usr/lib64/fluent/ruby/bin/ruby /etc/td-agent/exec.rb in_format json out_format msgpack tag apache.parsed flush_interval 1s </match> <match apache.**> type file path /var/log/td-agent/log time_slice_format %Y%m%d%H%M time_slice_wait 60s time_format %Y%m%dT%H%M%S%z compress gzip utc </match> |
3.確認
それでは確認してみましょう。
WEBにアクセスして下記の様に”FlunetdTime”が追加されていれば成功です!
1 |
20140730T071352+0000 exec.apache {"host":"192.168.0.4","user":null,"method":"GET","path":"/icons/apache_pb2.gif","code":304,"size":null,"referer":"http://54.210.121.125/","agent":"Mozilla/5.0 (Windows NT 6.3; WOW64; rv:30.0) Gecko/20100101 Firefox/30.0","FlunetdTime":"2014/07/30 16:13:52"} |
いかがでしたでしょうか?
次回『OSS編~Fluentdでrewrite_tag_filterを試してみる~』と題して、Fluentdでrewrite_tag_filterを試してみたいと思います。
お楽しみに!!!