tweeeetyのぶろぐ的めも

アウトプットが少なかったダメな自分をアウトプット<br>\(^o^)/

fluentdを使ってみるテストと同じことをtd-agentでもやってみるテスト

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コマンドによる自動起動の設定