概要
CentOS上にfluentdをインストールしてログを収集するまでの作業メモです。
手順
インストール
下記のファイルを作成します。
/etc/yum.repos.d/td.repo
[treasuredata]
name=TreasureData
baseurl=http://packages.treasure-data.com/redhat/$basearch
gpgcheck=0
その後yumでインストールします。
$ sudo yum -y install td-agent
$ ls -la /etc/td-agent/
合計 24
drwxr-xr-x 4 root root 4096 3月 7 10:21 2015 .
drwxr-xr-x. 75 root root 4096 3月 7 10:21 2015 ..
drwxr-xr-x 2 root root 4096 3月 7 10:20 2015 logrotate.d
drwxr-xr-x 2 root root 4096 3月 7 10:20 2015 prelink.conf.d
-rw-r--r-- 1 root root 1982 3月 7 10:21 2015 td-agent.conf
-rw-r--r-- 1 root root 1982 10月 20 17:30 2014 td-agent.conf.tmpl
こんな感じで起動できます。
$ sudo /etc/init.d/td-agent start
td-agen.confの設定
まず手始めに下記のような形式のログを想定します。
例)
2015-03-07T10:58:09+09:00 DEBUG - <1425693488.4702> XxxController:xxx start
このログを例えば下記のように構造化したいと思います。
<datetime> <severity> - <id> <body>
その時のtd-agent.confの設定は下記のような感じになります。
/etc/td-agent/td-agent.conf
<source>
type tail
format /^(?<datetime>[^ ]*) (?<severity>[^ ]*) - (?<id>[^ ]*) (?<body>.*)$/
path /tmp/cid_logs/deals.log
tag any.app.log
</source>
<match any.app.log>
type copy
<store>
type file
path /tmp/cid_logs/deals.any.log
</store>
</match>
すると下記のような感じで<store>指定に従って別のログファイルを出力する事ができます。この<store>でストリームの処理がどうなっているかデバッグ的に確認すると作業がやりやすいかも。
fluentdで吐き出したログの内容は下記のようになっています。
2015-03-07T11:10:48+09:00 any.app.log {"datetime":"2015-03-07T11:10:48+09:00","severity":"DEBUG","pid":"<1425694247.8577>","app-log-body":"XxxController::xxx start"}
なお、td-agent自体のログは/var/log/td-agent/td-agent.logにあり、こちらを確認しながら動作検証すると良いと思います。