fluentdを任意の場所にインストールして使ってみるテストのほうでやってみた
ファイル→ファイルの動作確認をtd-agentをインストールしてやってみます
アプリケーションから吐く想定のログ、td-agentから吐く想定のログの場所なんかはこちらとまったくおなじ構成です
# pwd /home/hoge # tree . |-- fluentd | |-- fluent | | | `-- input_log | |-- log -> /home/hoge/fluentd/input_log/log.2013-11-28 | `-- log.2013-11-28 | |-- local | `-- var `-- log `-- fluent
td-agentダウンロード
以下のサイトからダウンロードします。
http://packages.treasure-data.com/redhat/x86_64/
今回は現時点で一番新しいそーな
td-agent-1.1.17-0.x86_64.rpm
td-libyaml-0.1.4-1.x86_64.rpm
にしました。(2つ必要です)
# wget http://packages.treasure-data.com/redhat/x86_64/td-agent-1.1.17-0.x86_64.rpm # wget http://packages.treasure-data.com/redhat/x86_64/td-libyaml-0.1.4-1.x86_64.rpm
td-agentインストール
updateしなかったらコケた?のでとりあえずyumだけupdateしてみました
# sudo yum update yum # sudo yum localinstall td-agent-1.1.17-0.x86_64.rpm td-libyaml-0.1.4-1.x86_64.rpm Installed: td-agent.x86_64 0:1.1.17-0 td-libyaml.x86_64 0:0.1.4-1 Dependency Installed: compat-libtermcap.x86_64 0:2.0.8-49.el6 compat-readline5.x86_64 0:5.2-17.1.el6 openssl098e.x86_64 0:0.9.8e-17.el6.centos.2 Complete!
とりあえず起動してみる
# sudo /etc/init.d/td-agent start Starting td-agent: [ OK ] # ps aux | grep td td-agent 9893 0.0 0.9 213068 19208 ? Sl 21:48 0:00 /usr/lib64/fluent/ruby/bin/ruby /usr/sbin/td-agent --group td-agent --log /var/log/td-agent/td-agent.log --daemon /var/run/td-agent/td-agent.pid td-agent 9896 0.4 1.7 239868 33076 ? Sl 21:48 0:00 /usr/lib64/fluent/ruby/bin/ruby /usr/sbin/td-agent --group td-agent --log /var/log/td-agent/td-agent.log --daemon /var/run/td-agent/td-agent.pid hoge 10137 0.0 0.0 107456 904 pts/2 S+ 21:49 0:00 grep td-
大丈夫そう
ついでにログも見てみる
# less /var/log/td-agent/td-agent.log 2013-12-02 21:48:57 +0900 [info]: starting fluentd-0.10.39 2013-12-02 21:48:57 +0900 [info]: reading config file path="/etc/td-agent/td-agent.conf" 2013-12-02 21:48:57 +0900 [info]: using configuration file: <ROOT> <match td.*.*> type tdlog apikey YOUR_API_KEY auto_create_table buffer_type file buffer_path /var/log/td-agent/buffer/td </match> <match debug.**> type stdout </match> <source> type forward </source> <source> type http port 8888 </source> <source> type debug_agent bind 127.0.0.1 port 24230 </source> </ROOT> 2013-12-02 21:48:57 +0900 [info]: adding source type="forward" 2013-12-02 21:48:57 +0900 [info]: adding source type="http" 2013-12-02 21:48:57 +0900 [info]: adding source type="debug_agent" 2013-12-02 21:48:57 +0900 [info]: adding match pattern="td.*.*" type="tdlog" 2013-12-02 21:48:57 +0900 [info]: adding match pattern="debug.**" type="stdout" 2013-12-02 21:48:57 +0900 [info]: listening fluent socket on 0.0.0.0:24224 2013-12-02 21:48:57 +0900 [info]: listening dRuby uri="druby://127.0.0.1:24230" object="Engine" 2013-12-02 21:52:39 +0900 [info]: shutting down fluentd 2013-12-02 21:52:39 +0900 [info]: process finished code=0
本題をやってみる
設定ファイル書く
設定ファイルを書きますが、一応バックアップを取ってから。。。
そして内容ですが、inputする想定のログファイル、出力する想定のログファイルをfluentdのときと同じにしたいのでこちらをコピってそのまま使います。
# sudo cp -ap /etc/td-agent/td-agent.conf /etc/td-agent/td-agent.conf.bk.20131202 # sudo vi /etc/td-agent/td-agent.conf -- vi -- ## Json input ## read json logs with tag=json.test <source> type tail format json path /home/hoge/fluentd/input_log/log tag json.test pos_file /var/log/td-agent/test_log.pos </source> ## match tag=json.test and write to file <match json.test> type file path /home/hoge/var/log/fluent/output_json_log #time_slice_format %Y%m%d%H%M time_slice_wait 10s </match> --------
再度起動
再度起動してやってみましたが/var/log/td-agentを見るとerrorになってました。
ステータスを確認するとこんな感じです
# sudo /etc/init.d/td-agent status td-agent が停止していますが PID ファイルが残っています
エラってるログ
# less /var/log/td-agent 2013-12-02 22:02:40 +0900 [info]: reading config file path="/etc/td-agent/td-agent.conf" 2013-12-02 22:02:40 +0900 [info]: using configuration file: <ROOT> <source> type tail format json path /home/hoge/fluentd/input_log/log tag json.test </source> <match json.test> type file path /home/hoge/var/log/fluent/output_json_log time_slice_wait 10s </match> </ROOT> 2013-12-02 22:02:40 +0900 [info]: adding source type="tail" 2013-12-02 22:02:40 +0900 [warn]: 'pos_file PATH' parameter is not set to a 'tail' source. 2013-12-02 22:02:40 +0900 [warn]: this parameter is highly recommended to save the position to resume tailing. 2013-12-02 22:02:40 +0900 [info]: adding match pattern="json.test" type="file" 2013-12-02 22:02:40 +0900 [error]: unexpected error error_class=Errno::EACCES error=#<Errno::EACCES: Permission denied - /home/hoge/var/log/fluent/output_json_log.20131202.b4ec8a229b33b80c0>
と、warn、errorが出てたので
・sourceディレクティブにpos_fileの設定を追加
・/home/hoge/var/log/fluentの権限を変える
をやって再度チャレンジ
sourceディレクティブ内に下記を追加
pos_file /var/log/td-agent/test_log.pos
permissionでエラーのようなのでディレクトリの権限をかえる
# chmod -R 777 /home/hoge/var/log/fluent
再度起動してからログを確認
2013-12-02 22:18:05 +0900 [info]: starting fluentd-0.10.39 2013-12-02 22:18:05 +0900 [info]: reading config file path="/etc/td-agent/td-agent.conf" 2013-12-02 22:18:05 +0900 [info]: using configuration file: <ROOT> <source> type tail format json path /home/hoge/fluentd/input_log/log tag json.test pos_file /var/log/td-agent/test_log.pos </source> <match json.test> type file path /home/hoge/var/log/fluent/output_json_log time_slice_wait 10s </match> </ROOT> 2013-12-02 22:18:05 +0900 [info]: adding source type="tail" 2013-12-02 22:18:05 +0900 [info]: adding match pattern="json.test" type="file" 2013-12-02 22:18:05 +0900 [info]: following tail of /home/hoge/fluentd/input_log/log ※※※成功ぽい※※※
ということで最後に挙動を確認してみる
input用に書き込み
[hoge@hoge]# echo '{"json":"td-agent de message dayo", "date":"'`date "+%Y-%m-%dT%T"`'"}' >> ./fluentd/input_log/log [~ 22:20] [hoge@hoge]# echo '{"json":"td-agent de message dayo", "date":"'`date "+%Y-%m-%dT%T"`'"}' >> ./fluentd/input_log/log [~ 22:20] [hoge@hoge]# echo '{"json":"td-agent de message dayo", "date":"'`date "+%Y-%m-%dT%T"`'"}' >> ./fluentd/input_log/log [~ 22:20] [hoge@hoge]# echo '{"json":"td-agent de message dayo", "date":"'`date "+%Y-%m-%dT%T"`'"}' >> ./fluentd/input_log/log [~ 22:20]
output用のファイルを確認
2013-12-02T22:20:23+09:00 json.test {"json":"td-agent de message dayo","date":"2013-12-02T22:20:23"} 2013-12-02T22:20:24+09:00 json.test {"json":"td-agent de message dayo","date":"2013-12-02T22:20:24"} 2013-12-02T22:20:25+09:00 json.test {"json":"td-agent de message dayo","date":"2013-12-02T22:20:24"} 2013-12-02T22:20:25+09:00 json.test {"json":"td-agent de message dayo","date":"2013-12-02T22:20:25"}
OKでした!
一応
[起動]
/etc/init.d/td-agent start[停止]
/etc/init.d/td-agent stop[再起動]
/etc/init.d/td-agent restart[ステータス確認]
/etc/init.d/td-agent status[chkconfigでの自動起動]
/sbin/chkconfig --level 345 td-agent on
chkconfigに関してはこちらを参考にさせて頂きました
→chkconfigコマンドによる自動起動の設定