连接td-agent(fluentd)到elasticsearch时的调试方法
连接独立的应用程序是很困难的事情。这是因为当出现错误时,很难判断是哪个应用程序的配置出错了。
因此,在连接td-agent(fluentd)和elasticsearch时,我将提供输入的命令。
假设以logstash的格式将日志发送到elasticsearch,logstash的前缀为test,时间为2015年9月8日。
“Elasticsearch的调试功能” (Elasticsearch’s debugging feature)
1. 尾随 Elasticsearch 的日志
tail -f /var/log/elasticsearch/elasticsearch.log
确认是否已经在 elasticsearch 中注册了记录。
确认在 elasticsearch 中是否已经添加了记录。
检查是否已在 elasticsearch 中注册了记录。
确认在 elasticsearch 中是否有记录注册。
首先,确认索引(在数据库中称为表)是否已创建。
curl 'localhost:9200/_cat/indices?v'
确认是否有唱片。
curl 'localhost:9200/test-2015.09.08/_search?q=*&pretty'
td-agent的调试
1. 将 td-agent 以调试模式启动。
sudo td-agent -vv
/var/log/td-agent/td-agent.log文件也会记录日志,但要想输出更详细的日志时,最好先停止守护进程,然后使用上述命令启动。
我陷入了自己的困境。
在td-agent中,如果将match设置为**nginx**,那么ltsv.nginx也会被匹配到,并且ltsv无法执行。
解决方法可以是将**nginx**移到ltsv的下面,或者将match范围更加限定?但是我选择了后者。
<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>