我遇到一个问题,kafka logstash管道消耗太多cpu(启动时大约300%,几秒后100%),但基本上它可以工作:管道可以将kafka中的事件传递给elasticsearch,没有错误消息
logstash在docker容器中运行,其中包含最新版本的lostash(2.1.1,来自https://hub.docker.com/_/logstash/)。
docker run --rm --link kafka:kafka --link elasticsearch:elasticsearch -v "$PWD":/config-dir logstash logstash -f /config-dir/logstash-kafka-elasticsearch.conf
配置文件是这样的:
input {
kafka {
topic_id => 'mytopic'
zk_connect => 'kafka:2181'
}
}
output {
elasticsearch {
hosts=> ['elasticsearch:9200']
}
stdout { codec => rubydebug }
}
我有其他的logstash管道运行良好,cpu使用也正常(例如管道使用http,如kafka作为out,需要~0%cpu)。 我试图注释掉弹性搜索输出,只留下标准输出,问题仍然存在,所以看起来弹性搜索没有问题。
任何机构都会提出建议吗?
答案 0 :(得分:3)
logstash-input-kafka插件在其紧密循环中有一个错误,它不必要地检查空队列并跳过下一次迭代而不是阻塞。
已在插件this pull request的has been released和版本2.0.3中修复此问题。
要对此进行测试,请使用以下命令更新插件:
bin / plugin install --version 2.0.3 logstash-input-kafka