fluentd tsv parser

fluentdのtsvパーサーを使う

fluentdのtsvパーサーを使った時のメモ

apacheのcustomログをfluentdで読み込む。

fluentdでapacheログをin_tailで読み取るけど、大体のところCustomLogの設定でフォーマットがデフォルト出ないので、 tsvパーサーを使って読み込むように設定します。

apacheのLogFormat

LogFormat "%h\t%l\t%u\t%t\t\"%r\"\t%>s\t%b\t\"%{Referer}i\"\t\"%{User-Agent}i\"\t%D\t%{numFound}n"

td-agent.conf

LogFormatの指定に合わせて、td-agent.confはこんな感じになります。

 <source>
   @type tail
   path /var/log/httpd/access_log
   pos_file /tmp/access.log.pos
   tag apache.access
   <parse>
     @type tsv
     keys host,client,user,date,request,status,byte,referer,ua,duration,numfound
     time_key date
   </parse>

 </source>

fluentdの出力

出力にこんな感じで表示されればOK

2019-06-07T08:27:55+00:00       apache.access   {"host":"172.18.0.1","client":"-","user":"-","date":"[07/Jun/2019:08:27:55 +0000]","request":"\"GET /2333 HTTP/1.1\"","status":"404","byte":"202","referer":"\"-\"","ua":"\"Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_5) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.169 Safari/537.36\"","duration":"468","numfound":"-"}

fluentd/parser/tsv
apache LogFormat

connvoi's Picture

About connvoi

肉とビールと料理と写真とゲーム たまに技術 python / Solr / PHP / ansible

アマゾンセール情報サイト アマセール管理人

Jp, Tokyo https://connvoi.com