当我想发布问题时,显然 logstash OnDemand 帐户不起作用。
无论如何,我有一个带有 redis、elasticsearch 和 kibana 的 logstash 设置。我的 logstash 正在从几个文件中收集日志并放入 redis 就好了。
Logstash 版本 1.3.3 Elasticsearch 版本 1.0.1
我在用于 logstash 的 elasticsearch_http 中唯一拥有的是主机名。所有这些设置似乎都很好地粘合在一起。
问题是 elasticsearch_http 没有消耗 redis 条目。通过在 Debug模式下运行它,我看到它每 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
indexer
、elasticsearch
、redis
和 kibana
在同一台服务器上。从文件中收集日志是在另一台服务器上完成的。
最佳答案
因此,我将建议几种不同的方法来解决您的问题。您发现的 Logstash 可能有点古怪,因此我发现这些方法可用于处理来自 logstash 的意外行为。
- 使用
elasticsearch
输出而不是elasticsearch_http
。你 可以通过使用elasticsearch
输出获得相同的功能 协议(protocol)设置为http
。elasticsearch
输出更成熟 (里程碑 2 与里程碑 3)我已经看到这种变化 之前的区别。 - 为
idle_flush_time
和flush_size
设置默认值。有有 以前 Logstash 默认设置有问题,我发现它是 明确设置它们更安全。idle_flush_time
以秒为单位,flush_size
是要刷新的记录数。 - 升级到更新版本的 logstash。有 1.4.X 版 logstash 的部署方式发生了足够大的变化 ( http://logstash.net/docs/1.4.1/release-notes ) 我会 我会 硬着头皮升级。它也更容易获得 如果您对最近的稳定版仍然有问题,请注意 主要版本。
- 确保您的 Redis 版本与您的支持相匹配 logstash 版本。
- 尝试设置批处理、batch_events 和 batch_timeout
Redis 输出的值。您正在使用
list
data_type
。list
支持各种批处理选项,与其他一些选项一样 参数最好不要假设默认值总是被设置 正确。 - 执行以上所有操作。除了尝试第一套 建议,我会以各种组合方式尝试所有建议。
- 仔细记录每次测试运行。似乎很明显,但在所有人之间 上面的变化很容易迷失方向——我会保持小心 记录并尝试一次只更改一个变体。
关于elasticsearch - 带有 elasticsearch_http 的 logstash,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24368607/