连接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>
广告
将在 10 秒后关闭
bannerAds