使用elasticsearch_http进行logstash

时间:2014-06-23 14:32:53

标签: elasticsearch redis logstash

显然,当我想发布问题时,logstash OnDemand帐户无效。

无论如何,我有redis,elasticsearch和kibana的logstash设置。我的logstash正在从几个文件中收集日志,并且放入redis就好了。

Logstash 1.3.3版 Elasticsearch版本1.0.1

我在elasticrest_http中为logstash唯一拥有的是主机名。所有设置似乎都很好地粘合在一起。

问题是elasticsearch_http不会消耗redis条目。我在调试模式下运行它所看到的是它每1分钟后刷新大约100个条目(flush_size和idle_flush_time的默认值)。然而,根据我的理解,文档表明,如果不满足100 flush_size,它将强制刷新(例如,我们在最后1分钟内有10条消息)。但它似乎以另一种方式起作用。它每1分钟只冲洗100条消息。我将大小改为2000,每分钟左右冲洗2000次。

这是我的logstash-indexer.conf

input {
 redis {
  host => "1xx.xxx.xxx.93"
  data_type => "list"
  key => "testlogs"
  codec => json
 }
}
output {
 elasticsearch_http {
  host => "1xx.xxx.xxx.93"
 }
}

这是我的elasticsearch.yml

cluster.name: logger
node.name: "logstash"
transport.tcp.port: 9300
http.port: 9200
discovery.zen.ping.unicast.hosts: ["1xx.xxx.xxx.93:9300"]
discovery.zen.ping.multicast.enabled: false
#discovery.zen.ping.unicast.enabled: true
network.bind_host: 1xx.xxx.xxx.93
network.publish_host: 1xx.xxx.xxx.93

indexerelasticsearchrediskibana位于同一台服务器上。文件中的日志集合在另一台服务器上完成。

1 个答案:

答案 0 :(得分:1)

所以我将建议几种不同的方法来解决你的问题。你发现的Logstash可能有点古怪,所以我发现这些方法对于处理logstash中的意外行为很有用。

  1. 使用elasticsearch输出而不是elasticsearch_http。您 可以使用elasticsearch输出获得相同的功能 协议设置为httpelasticsearch输出更成熟 (里程碑2对里程碑3)我已经看到这个改变了 之前的差异。
  2. 设置idle_flush_timeflush_size的默认值。有 以前是Logstash默认值的问题,我发现它是一个 更明确地设置它们更安全。 idle_flush_time是几秒钟, flush_size是要刷新的记录数。
  3. 升级到更新版本的logstash。有 使用1.4.X版本部署logstash的方式发生了很大变化 (http://logstash.net/docs/1.4.1/release-notes)我是那样的 咬紧牙关并升级。它也更容易获得 注意,如果你仍然有最新稳定的问题 主要发布。
  4. 确保您的Redis版本符合您的支持 logstash版本。
  5. 尝试设置批处理,batch_events和batch_timeout Redis输出的值。您使用的是list data_typelist支持各种批处理选项,与其他一些选项一样 参数最好不要假设始终设置默认值 正确。
  6. 做以上所有。除了尝试第一套 建议,我会以各种组合一起尝试所有这些。
  7. 记录每次测试运行。似乎很明显,但在所有人之间 上面的变化很容易失去轨道 - 我会小心翼翼 记录并尝试一次只更改一个变体。