独立したアプリケーションをつなぎこむのは、大変です。それは、エラーが出た時にどっちのアプリケーションの設定が間違っているのか?を判断するのも大変だからです。
ということで、td-agent(fluentd)とelasticsearchをつなぎこむ際に打ったコマンドを掲載しておきます。
前提として、elasticsearchにはlogstashのフォーマットで、logstash_prefixをtest、2015年9月8日に行っていると仮定します。
elasticsearchのdebug
1. elasticsearchのログをtailする
tail -f /var/log/elasticsearch/elasticsearch.log
2. elasticsearchにレコードが登録されたか確認する
まずはindex(データベースでいうテーブル)ができたか確認
curl 'localhost:9200/_cat/indices?v'
レコードが入っているか確認
curl 'localhost:9200/test-2015.09.08/_search?q=*&pretty'
td-agentのdebug
1. td-agentをデバッグモードで立ち上げておく
sudo td-agent -vv
/var/log/td-agent/td-agent.logにもログは出るんですが、もっと詳細なログを出したい時は、一旦daemonを止めて、上記コマンドで起動するのがよいみたいです。
自分がはまったところ
td-agentにおいて、matchを**nginx**
としてたら、ltsv.nginxもこれに引っかかってしまい、ltsv**
が実行されなかった。
解決方法としては、**nginx**
をltsv**
の下に持っていくか、もっと限定的なmatchにするか?ですが、自分は後者を採用しました。
td-agent.conf
<match **nginx**>
type copy
<store>
type parser
format ltsv
time_format %d/%b/%Y:%H:%M:%S %z
add_prefix ltsv
key_name message
</store>
<store>
type file
path /tmp/fluent.log
</store>
</match>
<match ltsv**>
type elasticsearch
host localhost
port 9200
index_name fluentd
type_name fluentd
logstash_format true
logstash_prefix test
</match>